Ich versuche, eine JComboBox zu verwenden, um zwischen verschiedenen Instanzen einer Klasse von mir selbst geschrieben zu wählen, für die ich bereits eine Renderer Klasse implementiert:ComboBox mit eigenen Objekten
class BackupJobRenderer extends JLabel implements ListCellRenderer {
private static final Color HIGHLIGHT_COLOR = new Color(0, 0, 128);
public BackupJobRenderer() {
setOpaque(true);
setHorizontalAlignment(CENTER);
setVerticalAlignment(CENTER);}
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
BackupJob bjob = (BackupJob) value;
setText(bjob.getName());
if (isSelected) {
setBackground(HIGHLIGHT_COLOR);
setForeground(Color.white);
} else {
setBackground(Color.white);
setForeground(Color.black);
}
return this;
}
Wenn ich versuche, initialisieren Sie die ComboBox wie folgt aus:
//backMan.getArrayJobs returns an Array of BackupJobs
comboBoxJobs = new JComboBox(backMan.getArrayJobs());
comboBoxJobs.setRenderer(new BackupJobRenderer());
comboBoxJobs.setMaximumRowCount(3);
comboBoxJobs.setEnabled(true);
die ComboBox leer bleibt, obwohl nach dem Debugger, scheinen die Array-Elemente, die in der ComboBox „Datenmodell“ zu sein.
Was mache ich hier falsch?
Für beste Antworten erstellen und veröffentlichen Sie Ihre [MCVE]. Beachten Sie, dass es normalerweise besser ist, den DefaultListCellRenderer zu erweitern, als den ListCellRenderer zu implementieren. [Zum Beispiel] (http://stackoverflow.com/a/37398879/522444) –