【问题标题】:JComboBox sets a string and the string then comes back nullJComboBox 设置一个字符串,然后该字符串返回 null
【发布时间】:2012-06-07 01:46:21
【问题描述】:

我有一个程序的一小部分,它使用 JComboBox 从中选择某个字符串。我在互联网上找到了这段代码并尝试了它,它在一段时间内有效,但是当我在选择它后尝试在不同的地方再次调用该字符串时,它返回 null。代码如下:

    private class courseAL implements ActionListener{
    public void actionPerformed(ActionEvent e) {
        Start_round sr = new Start_round();
        JComboBox cb = (JComboBox)e.getSource();
        sr.CourseName = (String)cb.getSelectedItem();
        System.out.println(sr.CourseName);
    }
}

在这种情况下,它会打印出高尔夫球场的正确名称,但是当我在选择它后尝试在不同的地方再次调用 sr.CourseName 时,它​​会打印出 null。帮助。 提前致谢。

【问题讨论】:

    标签: java string swing jcombobox


    【解决方案1】:

    在选择和取消选择时都会传递一个 ActionEvent,因此第二个是在选择新项目之前取消选择一项。通过使用 ItemListener,您可以检测事件是选择还是取消选择。

    private class courseAL implements ItemListener {
        public void itemStateChanged(ItemEvent e) {
            if (e.getStateChange() == ItemEvent.SELECTED) {
                Start_round sr = new Start_round();
                sr.CourseName = (String) e.getItem();
                // alternate:
                // JComboBox cb = (JComboBox) e.getItemSelectable();
                // sr.CourseName = (String) cb.getSelectedItem();
                System.out.println(sr.CourseName);
            }
        }
    }
    

    【讨论】:

    • 我这样做了,然后当我再次尝试调用 sr.CourseName 时,它​​仍然返回 null。我顺便复制粘贴了
    • 也尝试注释掉的替代;它不应该有所作为,但不妨尝试一下。稍微调试一下 itemStateChanged 调用;打印 e.getItem() 和 e.getStateChange() 等信息。
    • 调试是什么意思,因为我知道的一切(不多)都不起作用!
    • 打印出每次调用的 getItem 和 getStateChange,并分析打印的内容是否有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多