我在特定情况下检索可编辑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将快捷方式添加到按钮中。
答案 0 :(得分:0)
使用InputMap将快捷方式添加到按钮中。
不要使用InputMap。
相反,您可以为按钮设置助记符。这将导致按钮在调用助记符时获得焦点,因此组合框失去焦点并保存项目:
button.setMnemonic( KeyEvent.VK_1 );
所以我尝试了JComboBox.getEditor()。getItem()而没有看到任何差异。
这种方法适合我。如果第一个建议无效,请发布显示您的演示代码的SSCCE。