ally
12-04-2011, 15:38
...stavo customizzando i colori per una combo box...ora il cruccio sta nel fatto che la parte che visualizza il selectedItem non viene influenzato dai colori...come mai?...per quanto la lista sia cromaticamente giusta qualsiasi scelta si faccia verrà mostrato il colore di default...
...la comboBox...
Object elements[][] = {
{ Color.RED, "Cd" },
{ Color.BLUE,"Dvd" },
{ Color.GREEN, "Game" }};
ListCellRenderer renderer = new CellRenderer();
typeComboBox = new JComboBox(elements);
typeComboBox.setRenderer(renderer);
...il CellRender...
class CellRenderer implements ListCellRenderer {
protected DefaultListCellRenderer defaultRenderer = new DefaultListCellRenderer();
public Component getListCellRendererComponent(JList list, Object value, int index,boolean isSelected, boolean cellHasFocus) {
Font theFont = null;
Color theForeground = null;
String theText = null;
JLabel renderer = (JLabel) defaultRenderer.getListCellRendererComponent(list, value, index,isSelected, cellHasFocus);
if (value instanceof Object[]) {
Object values[] = (Object[]) value;
theForeground = (Color) values[0];
theText = (String) values[1];
}
if (!isSelected)
renderer.setBackground(theForeground);
if (isSelected)
renderer.setBackground(theForeground);
renderer.setText(theText);
renderer.setFont(theFont);
return renderer;
}
}
...la comboBox...
Object elements[][] = {
{ Color.RED, "Cd" },
{ Color.BLUE,"Dvd" },
{ Color.GREEN, "Game" }};
ListCellRenderer renderer = new CellRenderer();
typeComboBox = new JComboBox(elements);
typeComboBox.setRenderer(renderer);
...il CellRender...
class CellRenderer implements ListCellRenderer {
protected DefaultListCellRenderer defaultRenderer = new DefaultListCellRenderer();
public Component getListCellRendererComponent(JList list, Object value, int index,boolean isSelected, boolean cellHasFocus) {
Font theFont = null;
Color theForeground = null;
String theText = null;
JLabel renderer = (JLabel) defaultRenderer.getListCellRendererComponent(list, value, index,isSelected, cellHasFocus);
if (value instanceof Object[]) {
Object values[] = (Object[]) value;
theForeground = (Color) values[0];
theText = (String) values[1];
}
if (!isSelected)
renderer.setBackground(theForeground);
if (isSelected)
renderer.setBackground(theForeground);
renderer.setText(theText);
renderer.setFont(theFont);
return renderer;
}
}