我的代码中有一个 JCombobox
。我添加了 FocusLost 事件
。但无论如何都没有开火。我已经尝试了很多时间,但没有找到解决方案。
jcbItemType.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusLost(java.awt.event.FocusEvent evt) {
jcbItemTypeFocusLost(evt);
}
});
private void jcbItemTypeFocusLost(java.awt.event.FocusEvent evt)
{
// TODO add your handling code here:
System.out.println("name=" + ((Component) evt.getSource()).getName());
System.out.println("index=" + jcbItemType.getSelectedIndex());
}
但控制台中没有打印任何内容。请建议我做错了什么。
最佳答案
我找到了一个非常简单的方法来解决这个问题。
JComboBox 默认编辑器有一个内部类 BasicComboBoxEditor$BorderlessTextField,它是获取和失去焦点的组件。
它可以简单地访问
Component component = comboBox.getEditor().getEditorComponent();
if (component instanceof JTextField)
JTextField borderlesstextfield = (JTextField) borderless;
然后向任何 JTextField 添加焦点监听器
borderlesstextfield.addFocusListener(new FocusListener()
{
public void focusGained(FocusEvent e)
{
}
public void focusLost(FocusEvent e)
{
}
}});
现在您有一个 FocusListener,它将按预期响应 ComboBox 的焦点获得和失去
关于java - JCombobox focusLost 没有触发 - 为什么会这样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10293135/