Java 组合框不侦听事件
此应用程序显示一个包含不同JComboxes和JLabel的框架。 当用户单击最后一个(样式组合框)时,应生成一个事件,JLabel中的文本应根据每个组合框中选定的选项进行格式化 当我点击样式组合框时,什么都不会发生。Java 组合框不侦听事件,java,swing,oop,jcombobox,eventhandler,Java,Swing,Oop,Jcombobox,Eventhandler,此应用程序显示一个包含不同JComboxes和JLabel的框架。 当用户单击最后一个(样式组合框)时,应生成一个事件,JLabel中的文本应根据每个组合框中选定的选项进行格式化 当我点击样式组合框时,什么都不会发生。 还有另一个我无法理解的错误:( 输出 它正在侦听,但您正在检查组合框。getSelectedItem(),该组合框在触发事件时尚未更新。事件相关的项在事件本身中引用;调用e.getItem()检索它: Object item = e.getItem(); if (item.eq
还有另一个我无法理解的错误:( 输出
它正在侦听,但您正在检查
组合框。getSelectedItem()
,该组合框在触发事件时尚未更新。事件相关的项在事件本身中引用;调用e.getItem()
检索它:
Object item = e.getItem();
if (item.equals("BOLD")) {
lbl.setFont(new Font((String) item, Font.BOLD, /* wrong: (int) Size.getSelectedItem() */ 8));
}
您的大小计算(上面的注释)也错误。您的大小选择框中包含字符串
,因此您必须解析它们(或将模型更改为ints)
另外,每次更改都会得到两个事件,ItemEvent。先取消选中
(对于旧项目),然后取消选中ItemEvent。选中。您应该检查您感兴趣的事件:
if (e.getSource() == Style && e.getStateChange() == ItemEvent.SELECTED) {
根据您的代码和我的运行情况,
Style
不是最后一个组合框,它是最后一个组合框,而且似乎运行良好。这就是您的意思吗?我尝试应用了您提到的更改,但仍然不起作用。我可能误解了。Object item=e.getItem();if(e.getSource()==Style&&e.getStateChange()==ItemEvent.SELECTED){if(item.equals(“BOLD”){lbl.setFont(新字体((字符串)Name.getSelectedItem(),Font.BOLD,Integer.parseInt(Size.getSelectedItem());//我解析了它,但仍然出现错误}
if (e.getSource() == Style && e.getStateChange() == ItemEvent.SELECTED) {