私はすでにレンダラークラスを実装しているために自分が書いたクラスの異なるインスタンス間で選択するようにするJComboBoxを使用しようとしている:私はしようとしているときコンボボックス
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;
}
次のようにコンボボックスを初期化します。
//backMan.getArrayJobs returns an Array of BackupJobs
comboBoxJobs = new JComboBox(backMan.getArrayJobs());
comboBoxJobs.setRenderer(new BackupJobRenderer());
comboBoxJobs.setMaximumRowCount(3);
comboBoxJobs.setEnabled(true);
コンボボックスが空のまま、デバッガによると、配列の要素は、コンボボックスの「データモデル」に存在するように見える、けれども。
私はここで間違っていますか?
最良の回答については、作成して、[MCVE]投稿します。通常、ListCellRendererを実装するのではなく、DefaultListCellRendererを拡張する方がよいことに注意してください。 [例](http://stackoverflow.com/a/37398879/522444) –