当我在组合框中输入新名称时,我想添加到数据库和可编辑的组合框模型。我有添加到数据库的方法很好,我只是想让它以某种方式监听添加到 ComboBox 的条目。
最好的方法是什么?
我已经阅读了关于Editable ComboBoxes的 Java 教程,并注意到它说的地方:
当用户从菜单中选择一个项目并且用户输入 Enter 时,一个可编辑的组合框会触发一个动作事件。请注意,当用户在组合框中输入值时,菜单保持不变。如果需要,您可以轻松编写一个动作侦听器,每次用户键入一个唯一值时,它都会向组合框的菜单中添加一个新项目。
所以我心想,好吧,让我们试试这个,并查了一些例子。这是我的尝试,基本上是从我找到的示例中复制粘贴,并带有我的变量名:
playerNameComboBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("comboBoxEdited")) {
System.out.println("Adding new player!");
IController.Util.getInstance().addNewPlayer();
playerNameComboBox.insertItemAt(playerNameComboBox.getSelectedItem(), 0);
}
}
});
当我输入一个新名称并按回车键时,它什么也不做。ComboBox 上没有新的数据库条目和附加选项。我没有将动作命令附加到 ComboBox 上,因为我认为上面的示例假定它会将其作为默认设置,我也是如此。
但是当我按下回车键时,如何让它喊出那个动作命令,重点放在组合框上?我会认为组合框会有某种默认行为来喊出来?我需要使用if(playerNameComboBox.hasFocus())
声明吗?当我的组合框 hasFocus() 时,我应该实现某种 keylistener 吗?
我是 Java 的新手,所以我不确定应该如何做这种事情;很感谢任何形式的帮助。