gpt4 book ai didi

Java swing 组合框只调用一次监听器

转载 作者:行者123 更新时间:2023-11-30 07:29:21 25 4
gpt4 key购买 nike

对 Java 和 Swing 非常陌生,我一直在玩 swing gui 应用程序。它为我的组合框生成了一些代码:

comboBox.addActionListener(EventHandler.create(ActionListener.class, TestController, "changeSomething"));

我也有这个:

import javax.swing.JComboBox;
import javax.swing.JOptionPane;

public class StudyPlanController {
private JComboBox factors;

public void changeSomething() {
JOptionPane.showMessageDialog(null, "change!");
}
}

我有 2 个问题。

  1. 当我更改组合框中的选定项目时,我收到消息“更改!”只有第一次它被改变了。这是为什么?

  2. 在谷歌搜索解决方案时,所有用于设置监听器的代码都与为我生成的代码不同。例如

    box.addItemListener(新的ItemListener(){ public void itemStateChanged(ItemEvent e){ System.out.println(e.getItem() + ""+ e.getStateChange() ); }});

我创建监听器的方式是否正确?为什么有两种方法可以做到这一点?

谢谢

最佳答案

对于 JComboBox是更好的工具ItemListener , 但这个 Listener总是调用两次 SELECTEDDESELECTED,您可以检查事件是否为 SELECTED/DESELECTED

   myComboBox.addItemListener(new ItemListener() {

@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
//some stuff
}
}
});

您可以使用 ActionListener ,但我建议使用它来更改自己的 JComboBox 的 属性或方法,而不是从 JComboBox 中删除,以在 GUI 的某个地方显示

您可以使用 EventHandler , 但最好先学习基础知识

关于Java swing 组合框只调用一次监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8560544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com