小编典典

无法触发可编辑JCombobox上的FocusListener

java

首先:很抱歉,我无法提供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");
    }
  });

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

是否有调试事件的好方法?

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

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


阅读 250

收藏
2020-11-26

共1个答案

小编典典

相同的代码在某些情况下会导致问题,而在其他情况下不会导致问题,这使我怀疑您的代码可能未在AWT事件分派线程上执行。

2020-11-26