这一定是我的一个误解,但我有以下内容:
我已将一个ItemListener添加到Jcombobox中。
在项目监听器中,如果它是ItemSelected类型的事件,我将检查它。
如果是,我更新JTextPane中的值。 问题是,它的工作原理如下:
我点击jcombobox中的新值,jtextfield中没有任何更改。我必须实际点击另一个组件,例如jtextfield然后jtextfield被更新。
似乎必须从jcombobox中删除焦点,以便将事件更改分派给itemlistener代码。
这是应该如何工作,或者我做错了什么?是否有可能处理该事件而无需消除焦点?itemlistener从jcombobox中删除焦点后得到事件
UPDATE:这是我的代码和方法updateJTextPane被称为后,我在另一个组件的不是点击,当我从组合一个新值。即组合的值为“1”,我点击下拉列表并点击“2”。当前选择的项目现在是“2”。此时我的方法没有被调用。我点击第二个组合框,第二个组合有焦点,然后我的方法updateJTextPane()被调用。为什么?
更新2:
//Code from Netbeans generator
JComboBox myCbx = new javax.swing.JComboBox();
myCbx.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
myCbx.setName("myCbx"); // NOI18N
//My ItemListener
class myItemListener implements ItemListener{
public void itemStateChanged(ItemEvent ie) {
if (ie.getStateChange() == ItemEvent.SELECTED) { // Item was just selected
updateJTextPane();
}
}
}
//add item listener to combo
myCbx.addItemListener(new myItemListener());
更新3:内部类myItemListener加到5个组合框在相同的JDialog如果这个问题的方式,我不知道 谢谢
重新格式化的代码;如果不正确请回复。 – trashgod 2010-11-07 18:12:05
@ user384706:你可以尝试我在我的回答中提到的两个测试吗? – Grodriguez 2010-11-07 22:25:51
@Grodriguez:谢谢你的帮助。测试也失败了,但是当我重新启动我的电脑时,没有问题,用我的代码和测试。不知道它如何卡住。我会关闭这个问题 – Cratylus 2010-11-08 21:07:17