我有一个使用以下代码创建的 JComboBox
:
employeeDeletetxt = new JComboBox(buildComboBoxmodel("SELECT employee_id, employee_first_name FROM employees"));
employeeDeletetxt.setSelectedItem(null);
现在,当我运行程序时,选择设置为 null
,因此组合框中不会显示任何内容。我有一个用于删除按钮的 ActionListener
。 ActionListener 会删除某些记录,当发生这种情况时,我需要 JComboBox 中的数据来反射(reflect)最近的更改。我使用以下代码:
employeeDeletetxt.removeItem(employeeDeletetxt.getSelectedItem());
employeeDeletetxt.setSelectedItem(null);
问题是调用这些行后,JComboBox
中显示的文本不为空。然而,JComboBox
指向的项目实际上是null
,因为我在调用后直接调用ActionListener
时收到以下错误消息上次是这样:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
如何将文本设置为空?
最佳答案
我找到了问题的解决方案,希望与大家分享,以防其他人遇到同样的问题。正如我上面所说,AutoCompleteDecorator 是首先导致问题的原因。如果我删除它,那么程序将按预期工作。然而我想为用户提供搜索的能力。解决方案是使用自动完成功能,可在以下链接中找到:http://www.orbital-computer.de/JComboBox/source/AutoCompletion.java 。现在,在程序中,而不是使用: AutoCompleteDecorator.decorate(employeeDeletetxt); 我用: AutoCompletion.enable(employeeDeletetxt); 这样,我允许用户使用自动完成选项,同时还能够将组合框的当前选择设置为空。
关于java - JComboBox 中的文本显示字符串,但选择实际上设置为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21759649/