Java 在JComboBox上添加ListSelectionListener
我对Java Swing还很陌生。我一直在尝试在JComboBox实例上添加ListSelectionListener。似乎只有ListSelectionModel接口具有addListSelectionListener方法。我有点搞不懂 我之所以要添加它,是因为我想让程序做一些事情,即使组合框中的项目在选择后不会更改 潜在答案 我只是想在combobox上附加一个actionListener,但它不起作用。我认为这是openjdk的错误。我已经报告了Java 在JComboBox上添加ListSelectionListener,java,swing,awt,Java,Swing,Awt,我对Java Swing还很陌生。我一直在尝试在JComboBox实例上添加ListSelectionListener。似乎只有ListSelectionModel接口具有addListSelectionListener方法。我有点搞不懂 我之所以要添加它,是因为我想让程序做一些事情,即使组合框中的项目在选择后不会更改 潜在答案 我只是想在combobox上附加一个actionListener,但它不起作用。我认为这是openjdk的错误。我已经报告了 提前感谢。对于JComboBox,您必须使
提前感谢。对于JComboBox,您必须使用ActionListener
JComboBox jComboBox = new JComboBox();
jComboBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("combobox event");
}
});
好的,每当用户选择JComboBox时,即使它是已选择的同一项,也会引发actionPerformed。对于JComboBox,您必须使用ActionListener
JComboBox jComboBox = new JComboBox();
jComboBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("combobox event");
}
});
好的,每当用户选择JComboBox时,都会引发actionPerformed,即使它是已选择的同一项。这取决于您的需求。ActionEvent仅在使用键盘时触发,而不是在鼠标移到项目上时更改选择时触发 如果要在项目选择更改时执行某些操作(即使移动鼠标),则可能需要访问JList。您可以使用以下代码访问弹出窗口使用的JList:
JComboBox comboBox = new JComboBox(...);
BasicComboPopup popup = (BasicComboPopup)comboBox.getAccessibleContext().getAccessibleChild(0);
JList list = popup.getList();
list.addListSelectionListener(...);
这取决于你的要求。ActionEvent仅在使用键盘时触发,而不是在鼠标移到项目上时更改选择时触发 如果要在项目选择更改时执行某些操作(即使移动鼠标),则可能需要访问JList。您可以使用以下代码访问弹出窗口使用的JList:
JComboBox comboBox = new JComboBox(...);
BasicComboPopup popup = (BasicComboPopup)comboBox.getAccessibleContext().getAccessibleChild(0);
JList list = popup.getList();
list.addListSelectionListener(...);
看看:
鼠标和键盘交互都会触发此事件。请查看:
鼠标和键盘交互都会触发此事件。使用PopupMenuListener。当弹出菜单关闭时,获取所选索引并进行处理。使用弹出菜单侦听器。当弹出菜单关闭时,获取所选索引并进行处理。否,当单击或输入enter键no选择显示项目时,不会发生任何事情,如果单击或输入enter键后选择显示的项目,则不会发生任何情况即使再次选择了已选择的相同项目,也不会触发ItemEvent?可能不是因为没有发生任何事情,也不需要触发事件。我认为在这种情况下,ListSelectionEvent也不会从JList的ListSelectionModel触发。即使再次选择了已选择的相同项目,ItemEvent是否也会被触发?可能不是因为没有发生任何事情,也不需要触发事件。我认为在这种情况下,ListSelectionEvent也不会从JList的ListSelectionModel中触发。