gpt4 book ai didi

所选项目的 Java JCombobox 颜色直到焦点丢失才更新

转载 作者:行者123 更新时间:2023-12-04 05:23:42 24 4
gpt4 key购买 nike

我对这段代码有一个难题:

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 中所示相同。

image

非常感谢您的帮助和想法!

最佳答案

A JComboBox 使用单个 renderer 显示对于所有细胞。您可以在 ListCellRenderer 中更改颜色,如 CustomComboBoxDemo 所示.

附录:相关示例可在此 Q&A 中找到.

关于所选项目的 Java JCombobox 颜色直到焦点丢失才更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13446433/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com