可编辑的JComboBox:使用快捷方式启动操作时获取当前值

时间:2015-06-12 15:22:47

标签: java jcombobox

我在特定情况下检索可编辑JComboBox中的当前值时遇到问题:我的应用程序创建一个带有预定义文本列表的可编辑JComboBox,以便用户可以使用其中一个预定义文本或另一个文字。然后他可以点击将读取JComboBox中的值的按钮,并使用该值来执行他们的操作。

它大部分时间都可以工作,但在某些情况下不能工作:如果用户在不按回车键的情况下键入文本,然后使用快捷键(Alt + ...)激活按钮,则会获得之前的值JComboBox而不是当前的。如果按下Return键或通过单击激活按钮,我会得到正确的值。

为了读取该值,我最初尝试了JComboBox.getSelectedItem()。

我在stackoverflow How to get value that has been written in editable JComboBox?Get input values from JComboBox上阅读了以下主题,所以我尝试了JComboBox.getEditor()。getItem(),但没有看到任何差异。

我还阅读How can I know when the text of an editable JComboBox has been changed?并尝试了JComboBox.getEditor()。getEditorComponent()。toString():没什么不同。

有什么想法吗?

使用InputMap将快捷方式添加到按钮中。

1 个答案:

答案 0 :(得分:0)

  

使用InputMap将快捷方式添加到按钮中。

不要使用InputMap。

相反,您可以为按钮设置助记符。这将导致按钮在调用助记符时获得焦点,因此组合框失去焦点并保存项目:

button.setMnemonic( KeyEvent.VK_1 );
  

所以我尝试了JComboBox.getEditor()。getItem()而没有看到任何差异。

这种方法适合我。如果第一个建议无效,请发布显示您的演示代码的SSCCE