java - 可编辑 JCombobox 上的 FocusListener 未触发

标签 java swing jcombobox focuslistener

首先: 抱歉,我无法提供 SSCCE。我试图在一个小项目上重现这个问题,但没有成功,或者我应该说成功了,因为它在那里工作!

所以这是我的问题: 我有一个可编辑的 JCombobox,它应该通过单击编辑器组件来监听焦点事件。但事实并非如此。

这是我附加监听器的代码片段:

cmbZoom.setToolTipText(locale.getString("GUI_ZoomFactor"));
cmbZoom.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 16));
cmbZoom.setPreferredSize(new Dimension(88, 29));
cmbZoom.setEditable(true);
((JTextField)cmbZoom.getEditor().getEditorComponent()).setHorizontalAlignment(JTextField.CENTER);
cmbZoom.getEditor().getEditorComponent().addFocusListener(
  new FocusListener(){
    public void focusGained(FocusEvent arg0) {
      System.out.println("GAINED");
    }

    public void focusLost(FocusEvent arg0) {
      System.out.println("LOST");
    }
  });

我已经尝试删除组合框上的所有其他监听器,删除观察者模式,保护组合框并将监听器附加到每个子项上,...

我也试过像这篇文章中写的那样重新实现它: JCombobox focusLost is not firing-why is that?

有什么调试事件的好方法吗?

整个项目可以在Github上查看: https://github.com/nexxx/Database-Analyzer

工具栏类可以在这里找到(代码从第 98 行开始): https://github.com/nexxx/Database-Analyzer/blob/master/src/dba/gui/auxClasses/toolBars/ToolBar.java

最佳答案

事实上,相同的代码在某些情况下会导致问题,但在其他情况下不会导致我怀疑您的代码可能没有在 AWT event dispatch thread 上执行。 .

关于java - 可编辑 JCombobox 上的 FocusListener 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15542410/

相关文章:

Java:修复子组中格式错误的 XML 分组标签

java - 横式日历

java - 单击“下一步”后无法更改 jScrollPane 中的图像

java - JComboBox:如何获得适用于 HTML 条目的键选择?

java - 无法使 ListCellRenderer 正常运行

java - 在 JComboBox 箭头 JButton 上附加操作事件

java - 如何通过环境变量设置系统属性?

JAVA_HOME 返回空白 Linux Mint 18.3

java - JMenuItems 隐藏在我的 JApplet 后面

Java如何为按钮分配id并检索它们?