Tag: focuslistener

FocusListener对可编辑的JCombobox没有触发

首先:抱歉我无法提供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”); } }); 我已经尝试删除combobox上的所有其他侦听器,删除观察者模式,使combobox受到保护并将侦听器附加到每个子节点上,… 我也尝试重新实现它就像写在这篇文章: JCombobox focusLost没有解雇 – 为什么会这样? 是否有一种调试事件的好方法? 整个项目可以在Github上查看: https : //github.com/nexxx/Database-Analyzer 工具栏类可以在这里找到(代码从第98行开始): https : //github.com/nexxx/Database-Analyzer/blob/master/src/dba/gui/auxClasses/toolBars/ToolBar.java

使JSpinner在聚焦时选择文本

我想改变JSpinner的行为,以便当您单击文本时,它会选择它。 这样可以更轻松地使用所需的值替换字段。 不幸的是,我无法使行为起作用,相反,它只是将光标插入文本而不选择已存在的内容。 我尝试通过((DefaultEditor) this.getEditor()).getTextField()向JSpinner本身和文本区域本身添加焦点侦听器,但这些似乎都没有预期的效果。 我的代码(对于JSpinner本身)如下: spinner.addFocusListener(new FocusAdapter(){ @Override public void focusGained(FocusEvent e) { ((DefaultEditor) ((JSpinner) e.getSource()).getEditor()).getTextField().selectAll(); } }); 我不确定问题是什么。 如果重要,我正在运行Mac OS 10.7.5和Java 6u43。 编辑:我将一个System.out.println放在focusGained方法的开头,发现它从未被调用过。 所以看起来焦点在于JSpinner没有注册。 同样,我尝试将focusAdpater放在微调器和文本字段上(虽然不是同时)。

JCombobox focusLost没有解雇 – 为什么会这样?

我的代码中有一个JCombobox 。 我添加了FocusLost event 。 但无论如何它并没有被解雇。 我已经尝试了很多时间,但没有找到解决方案。 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()); } 但是在控制台中没有打印出来 请告诉我我做错了什么。

检测JTextField“取消选择”事件

是否有某种方法可以检测是否取消选择了JTextField,即选择了字段WAS,但现在您已经选择了其他内容。 我之所以这样做,是因为我想在用户表单中检查任何非法字符,然后再尝试提交数据。 如果有一些更容易的方法,而不是我试图解决它的方式,我会很乐意接受启蒙。