当前位置: 首页 > 面试题库 >

无法触发可编辑JCombobox上的FocusListener

景震博
2023-03-14
问题内容

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


问题答案:

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



 类似资料:
  • 首先:很抱歉,我无法提供SSCCE。我试图在一个小项目上重现这个问题,但没有成功,或者说成功,因为它在那里工作! 这就是我的问题:我有一个可编辑的JCombobox,它应该通过单击编辑器组件来收听焦点事件。但它没有。 下面是一个代码片段,我在其中附加了侦听器: 我已经尝试删除组合框上的所有其他侦听器,删除观察者模式,使组合框受到保护并将侦听器附加到每个孩子上,... 我也试着像这篇文章中写的那样重

  • 我正在使用金属 L 但当我这样做时,cb。setEditable(false),框内出现一个附加边框(在图片“下拉”中变为红色,您可以在名为“固定”的图片中看到原始颜色)。虽然我尝试设置边界,也尝试使用自己的CellRenderer,但边界仍然会被绘制。在我看来,不需要的边界不是来自细胞渲染器。当我试图从cb本身操纵边框时(请参见注释/),它只添加/删除了一个额外的外部边框。编辑部分似乎也不对我负

  • 在我的应用程序中,有一个JComboBox,其中包含大约200个条目。使用该应用程序的人抱怨说,即使他们确切地知道列表的最后一个元素是什么,也必须一直滚动到底部是令人沮丧的。 所以我把JComboBox设置成可编辑的,这样他们就可以输入最后一个元素了。但是,我的数据库不接受该组合框的下拉列表中没有的任何值。 有没有办法使JComboBox仅“可键入”而不是“可编辑”,因此它将允许您键入值,但前提是

  • < br >我有这段代码,其中我设计了一个< code >可编辑的JComboBox来侦听我的< code>keyPressed事件,并显示一条消息,说明键已被按下。但我不知道为什么这没用。作为初学者,我可能在逻辑上/概念上犯了错误。 因此,我想征求关于如何构建代码的建议,以使其工作。 密码

  • 如何在jcombobox中添加键事件侦听器,以便它接受EX的整个字符串。如果我添加's',它应该在数据库中搜索以's'开头的字符串,如果没有结果,那么它应该等待用户在组合框中键入其他字符来获得类似的结果

  • 我想要一个有4列的jtable。一列必须是组合框。其他列是字符串。 只要找到问题:在注释语句jcb.seteditable(true)时;,如果我在comboxcell上单击一次,它就会打开这个单元格。但我不知道为什么效果更好。此外,我希望combox可编辑。 我怎么能对其他细胞有同样的行为。 再次您好,我已经更新了代码,以便使-如果我通过重写方法在单元格上单击一次,单元格可以编辑-如果我通过重写