使用可编辑JComboBox的时遇到的一个坑,编辑后如果JCombobox的焦点还在,则获取不到当前的编辑值。

来源:互联网 发布:http默认端口号8080 编辑:程序博客网 时间:2024/06/02 20:56

界面上只有一个JComboBox和一个JButton,点击JButton打印JComboBox的当前值。

假如JButton的focusable设置为false,即不能获取焦点。

那么当编辑JComboBox的值以后,点击JButton打印cmb.getSelectedItem().toString(),不是当前JComboBox编辑框内的值,而是上次的选择项的值。

就是说对JComboBox进行编辑后,必须等JComboBox失去焦点,当前的编辑值被“提交”以后才能使用getSelectedItem获取到。


需要注意的时,在JButton 的点击响应函数中使用 other.requestFocusInWindows()也是没用的。

这里的内部机制顺序还没有搞清楚。总之是一个经验教训,可编辑JComboBox和JButton配合时,JButton需要注意Focusable属性!