java - 对 JComboBox 使用 switch 语句

标签 java user-interface switch-statement jcombobox

我有一个 JComboBox 设置如下所示:

private String[] boxChoices = {"option 1", "option 2"};
JcomboBox box = new JCombobox(boxChoices);

box.addItemListener()
{ 
    public void itemStateChanged(ItemEvent event)  
    {
        int selection = box.getSelectedIndex();
        switch (selection)
        {
            case 0: JOptionPane.showMessageDialog(null, "you have selected option 1");
                break;
            case 1: JOptionPane.showMessageDialog(null, "you have selected option 2");
                break;
            default: break;
        }
    }
}

我的问题是,当我选择一个选项时,消息将显示两次而不是一次。例如,如果我选择选项 1,将出现以下内容:

you have selected option 1
you have selected option 1

发生这种情况的原因是什么?

最佳答案

除了@Blip的回答,你还可以使用actionListener。 JComboBox 的 actionEvent 仅在您更改选择时触发一次。

box.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent event) {

            int selection = box.getSelectedIndex();
            switch (selection) {
                case 0:
                    JOptionPane.showMessageDialog(null, "you have selected option 1");
                    break;
                case 1:
                    JOptionPane.showMessageDialog(null, "you have selected option 2");
                    break;
                default:
                    break;
            }
        }
    });

关于java - 对 JComboBox 使用 switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33585982/

相关文章:

类型列表和类型集合的Java数据结构

java - Java Web 应用程序的类似桌面的 UI 实现?

c++ - Qt 子窗口放置

java - switch语句客户端问题

c++ - Switch Case 总是默认

java - 我不断收到 "OAuth consumer key/secret combination not supplied"错误消息

java - 如何使用 guice 使用通用 jsonFile 处理程序?

java - 显示生成的 bytebuddy 字节码

user-interface - 想知道如何有效地进行回归测试吗?

javascript - 单击按钮时将两个输入文本值替换为彼此的值