gpt4 book ai didi

java - JComboxBox setSelectedItem

转载 作者:行者123 更新时间:2023-11-30 09:40:32 26 4
gpt4 key购买 nike

我在设置自定义 JComboBox 的精确值时遇到问题。如果我从以下类的 initialize() 方法调用 setSelectedItem(),它不会选择特定值。

扩展的 JComboBox 类是:

public class ThemeComboBox extends JComboBox {

private static final long serialVersionUID = 50L;

public ThemeComboBox(DefaultComboBoxModel model) {
super(model);
initialize();
LibraryLogger.initMessage(getClass().getSimpleName());
}

public void initialize() {
ThemeComboBoxModel model = (ThemeComboBoxModel) getModel();
for(ThemeModel themeModel : model.getThemeModels()) {
if(themeModel.getThemeClass().equals(ConfigurationManager.getInstance().getUiManager().getUiProperties().getTheme())) {
setSelectedItem(themeModel);
System.out.println("=========");
break;
}
}
addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent actionEvent) {
ThemeComboBox themeComboBox = (ThemeComboBox) actionEvent.getSource();
System.out.println(themeComboBox.getSelectedItem());
}
});
}
}

如果我重写自定义 DefaultComboBoxModel 的 getSelectedItem(),那么它会选择该值,但在选择其他值时,选择保持不变或保持不变。模型类是:

public class ThemeComboBoxModel extends DefaultComboBoxModel {

private static final long serialVersionUID = 51L;

private Vector<ThemeModel> themeModels;

public ThemeComboBoxModel(Vector<ThemeModel> models) {
super(models);
}

public Vector<ThemeModel> getThemeModels() {
return themeModels;
}

public void setThemeModels(Vector<ThemeModel> themeModels) {
this.themeModels = themeModels;
}

/*@Override
public Object getSelectedItem() {
for(ThemeModel themeModel : themeModels) {
if(themeModel.getThemeClass().equals(ConfigurationManager.getInstance().getUiManager().getUiProperties().getTheme())) {
return themeModel;
}
}
return null;
}*/
}

我无法理解我做错了什么。任何信息都会对我很有帮助。

提前致谢。

最佳答案

1) 我希望 main 方法从 invokeLater

初始化

2) Swing 是单线程的,到 GUI 的输出是在一瞬间完成的

3) 不能保证所有事件都有任何顺序,基本上不可能为 Swing GUI 排序事件,同样/尤其是在 GUI 启动时

4) 显示 GUI (setVisible(true);),然后最后一行代码将是 JComboBox#setSelectedItem(int or Object),包裹在 invokeLater

5) 仅在需要时添加Listeners,删除无用的Listeners

关于java - JComboxBox setSelectedItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9364996/

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