gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:39:03 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com