- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在设置自定义 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/
我在设置自定义 JComboBox 的精确值时遇到问题。如果我从以下类的 initialize() 方法调用 setSelectedItem(),它不会选择特定值。 扩展的 JComboBox 类是:
如何使 JComboBox 的“下拉”(或“弹出”,我不知道它是怎么叫的)在屏幕上变高? 默认情况下,当我打开 JComboBox 时,我看到 29 个项目中的 7 个,然后我需要滚动。 我应该怎么做
一切都在标题中。 在我的应用程序中,根据用户所做的选择,我用一个列表填充一个组合框,该列表有时很小(1 个元素)有时很大(150 个元素)。 我想要的不是在启动时将固定高度设置为给定值,而是将 max
我是一名优秀的程序员,十分优秀!