Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 组合框不侦听事件_Java_Swing_Oop_Jcombobox_Eventhandler - Fatal编程技术网

Java 组合框不侦听事件

Java 组合框不侦听事件,java,swing,oop,jcombobox,eventhandler,Java,Swing,Oop,Jcombobox,Eventhandler,此应用程序显示一个包含不同JComboxes和JLabel的框架。 当用户单击最后一个(样式组合框)时,应生成一个事件,JLabel中的文本应根据每个组合框中选定的选项进行格式化 当我点击样式组合框时,什么都不会发生。 还有另一个我无法理解的错误:( 输出 它正在侦听,但您正在检查组合框。getSelectedItem(),该组合框在触发事件时尚未更新。事件相关的项在事件本身中引用;调用e.getItem()检索它: Object item = e.getItem(); if (item.eq

此应用程序显示一个包含不同JComboxes和JLabel的框架。 当用户单击最后一个(样式组合框)时,应生成一个事件,JLabel中的文本应根据每个组合框中选定的选项进行格式化

当我点击样式组合框时,什么都不会发生。
还有另一个我无法理解的错误:(

输出


它正在侦听,但您正在检查
组合框。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) {