首先: 对不起,我无法提供SSCCE。我试图在一个小项目上重新创建这个问题,但没有成功,或者我应该说成功,因为它在那里工作!FocusListener上可编辑JCombobox没有射击
所以这里是我的问题: 我有一个可编辑的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事件调度线程]上执行(http://docs.oracle.com/javase/tutorial/ uiswing /并发/ dispatch.html)。 – VGR 2013-03-21 08:45:21
@VGR非常感谢!这是问题!你能写一个答案,以便我可以将其标记为已解决。 – 2013-03-21 09:48:54
无关:[不要使用setXXSize,有史以来](http://stackoverflow.com/a/7229519/203657) – kleopatra 2013-03-21 11:13:19