Java 设置项目时如何激发itemStateChanged事件';什么是初始值?
我实现了一个Java 设置项目时如何激发itemStateChanged事件';什么是初始值?,java,itemlistener,Java,Itemlistener,我实现了一个java.awt.event.ItemListener,它响应itemStateChanged。对于JComboBox的更改,它似乎按预期执行,但是,对于我分配给组合框的第一个值,事件不会触发 我找不到一种方法来运行它,但是下面的代码可以按原样编译和执行。将它放在“MyDialog.java”中,用javac.exe*.java编译并用javamydialog执行。对话框初始化时将不执行DoStuff方法。但是,当用户更改组合框时,事件将触发 import java.awt.even
java.awt.event.ItemListener
,它响应itemStateChanged
。对于JComboBox
的更改,它似乎按预期执行,但是,对于我分配给组合框的第一个值,事件不会触发
我找不到一种方法来运行它,但是下面的代码可以按原样编译和执行。将它放在“MyDialog.java”中,用javac.exe*.java
编译并用javamydialog
执行。对话框初始化时将不执行DoStuff
方法。但是,当用户更改组合框时,事件将触发
import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;
import javax.swing.JDialog;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
public class MyDialog extends JDialog
{
public static void main(String[] args)
{
MyDialog dlg = new MyDialog();
dlg.setVisible(true);
}
class MyListener implements java.awt.event.ItemListener
{
public void itemStateChanged(ItemEvent event)
{
if (event.getSource() == myComboBox &&
event.getStateChange() == ItemEvent.SELECTED )
{
DoStuff(event);
}
}
}
JComboBox myComboBox;
public MyDialog()
{
this.setSize(100,100);
myComboBox = new JComboBox();
myComboBox.addItem("Option 1");
myComboBox.addItem("Option 2");
this.add(myComboBox);
MyListener listener = new MyListener();
myComboBox.addItemListener(listener);
myComboBox.setSelectedItem("Option 1");
// EXPECT: DoStuff() was executed
// GOT: DoStuff() was not executed
}
public void DoStuff(java.awt.event.ItemEvent event)
{
JOptionPane.showMessageDialog(null, "DoStuff() was reached.");
}
}
如何在对话框初始化时触发DoStuff
事件?这是因为“选项1”已经是默认/选定选项,这就是为什么
myComboBox.setSelectedItem("Option 1");
不会触发任何项目更改事件。将代码更改为
myComboBox.setSelectedItem("Option 2");
它将触发
doStuff()
方法,因为项目确实已从当前选择更改。谢谢,这有助于我理解为什么会发生这种情况。但是,如果我确实希望“选项1”作为默认值,那么我是否唯一可以切换到“选项2”并切换回?这似乎有点奇怪@阿兰海的建议可能也行,但我可能不得不修改一些东西。