java - JCombobox focusLost 没有触发 - 为什么会这样?

标签 java swing focus jcombobox focuslistener

我的代码中有一个 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/

相关文章:

java - OpenCSV + JMS/MDB 行为 + 性能问题

java - 使用针对 Android 应用程序的一个 http 请求从 Web 源检索多个图像

java - 尝试用java制作一个文本编辑器

java - 是否有用于处理 swing 应用程序中的数据库请求的框架?

java - 按 Enter 键将光标从一个 JTextField 转移到另一个 JTextField?

javascript - 关注每个 jQuery 函数

python - Tk TreeView 焦点()。如何获取多条选中的行?

Java Class.forName 不会编译。获取 "cannot find symbol symbol : method"

java - RCP E4 @UIEventTopic 未调用

java - jlist 不会显示整行或太多