我有一個棘手的問題與此代碼:的Java JComboBox的着色,直到聚焦丟失
public class StatusAndPersonPanel implements ActionListener {
private JPanel myPanel;
private String[] status = {"Good", "Bad", "Not so bad"};
private Color[] backgrounds = {Color.GREEN, Color.RED, Color.ORANGE};
private JComboBox<String> box;
public ComboboxConstructor() {
myPanel = new JPanel();
box = new JComboBox<String>(status);
ComboBoxRenderer myBackgrounds = new ComboBoxRenderer(box);
myBackgrounds.setColors(backgrounds);
myBackgrounds.setStrings(status);
box.setRenderer(myBackgrounds);
box.addActionListener(this);
Color selectedColor = (Color) backgrounds[box.getSelectedIndex()];
box.setBackground(selectedColor);
myPanel.add(box); // putting it into my panel
}
@Override
public void actionPerformed(ActionEvent event) {
Color selectedColor = (Color) backgrounds[box.getSelectedIndex()];
box.setBackground(selectedColor);
}
}
正如你可以在圖片中看到的,在步驟1中所有顏色均採用我想他們, 但現在我點擊「並不壞」,JComboBox
崩潰與正確的選擇,但不會改變顏色(箭頭,我不知道爲什麼),直到我的焦點丟失(步驟3,點擊另一個`JPanel元素)顏色給出正確。
現在,我知道這只是一個小問題,但它讓我瘋狂!我ActionListener
,ItemListener
(變更後),並FocusListener
(聚焦丟失,並獲得)試了一下,但結果總是保持相同的步驟2所示。
非常感謝你的幫助並提前思考!