Moin, ich versuch nun schon seit ner Weile, in einer Combobox Icons (und später noch zusätzlich text) anzeigen zu lassen, aber bis jetzt klappts nich so wirklich. Ich bekomme jedesmal eine ClassCastException "String cannot be cast to Integer"
und hier setze ich den Renderer:
Ich verstehe ja, dass value eben ein String ist und kein Integer, aber wenn ich icons.elementAt(index); aufrufe, kommt eine ArrayIndexOutOfBoundsException "-1".
Ich kapier auch nocht so ganz, wie das überhaupt mit so einem Renderer funktioniert, wann die getListCellRendererComponent aufgerufen wird etc.
Java:
package unit;
import java.awt.Component;
import java.util.Vector;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
public class IconCellRenderer extends JLabel implements ListCellRenderer
{
private Vector<Icon> icons;
public IconCellRenderer()
{
this.setOpaque(true);
this.setHorizontalAlignment(CENTER);
this.setVerticalAlignment(CENTER);
}
public IconCellRenderer(Vector<Icon> icons)
{
this.icons = icons;
this.setOpaque(true);
this.setHorizontalAlignment(CENTER);
this.setVerticalAlignment(CENTER);
}
@Override
public Component getListCellRendererComponent(
JList list, Object value, int index,
boolean isSelected, boolean cellHasFocus)
{
int selectedIndex = ((Integer)value).intValue();
ImageIcon icon = (ImageIcon) icons.elementAt(selectedIndex);
this.setIcon(icon);
return this;
}
}
und hier setze ich den Renderer:
Java:
Vector<Icon> icons = new Vector<Icon>();
icons.add(new ImageIcon("icons\\arzttrupp.jpg"));
icons.add(new ImageIcon("icons\\aeskulap.jpg"));
combobox.setRenderer(new IconCellRenderer(icons));
Ich verstehe ja, dass value eben ein String ist und kein Integer, aber wenn ich icons.elementAt(index); aufrufe, kommt eine ArrayIndexOutOfBoundsException "-1".
Ich kapier auch nocht so ganz, wie das überhaupt mit so einem Renderer funktioniert, wann die getListCellRendererComponent aufgerufen wird etc.