【问题标题】:JComboBox popup menu not appearingJComboBox弹出菜单没有出现
【发布时间】:2011-02-02 22:47:49
【问题描述】:

我在 JPanel 中有一个 JComboBox(它本身嵌套在其他几个 JPanel 中)。它填充了枚举的成员。我遇到了一个问题,当我单击展开按钮时没有出现弹出菜单。

这是我目前收集到的信息:

1) 第一次点击展开按钮什么都不做。第二次点击高亮显示框的内容,但仍然没有出现弹出窗口。

2) 一旦我点击了按钮并赋予它焦点,向上/向下击键就可以正确地循环输入。

3) 我尝试添加 PopupMenuListener 来打印事件,但事件以无法解释的方式触发:

mouse down: popupMenuWillBecomeVisible fires
mouse up: nothing
mouse down: popupMenuWillBecomeInvisible fires
mouse up: nothing

这是我的 JComboBox 初始化代码:

comboBox = new JComboBox();
comboBox.setPreferredSize(new Dimension(175, 30));
comboBox.setMaximumSize(new Dimension(175, 30));
comboBox.setAlignmentX(0.5f);

comboBox.addItem(Enum.Value1);
...     

parentPanel = new JPanel();
parentPanel.setLayout(new BoxLayout(parentPanel, BoxLayout.X_AXIS));
parentPanel.setMaximumSize(new Dimension(37267, 50));

... add some other stuff to parentPanel ...

parentPanel.add(comboBox);

有人知道为什么弹出菜单可能没有出现吗?

感谢您的帮助!

【问题讨论】:

  • 发布您的 SSCCE (sscce.org) 来证明问题。

标签: java swing jcombobox popupmenu


【解决方案1】:

我在 mac (10.5+) 上遇到了与 Java (1.6) 类似的问题 这是由于 jCombobox 出现的对话框是 模态的。

在我的情况下,下拉菜单实际上确实出现了,但它并没有那么大 它被绘制在对话框的后面并不明显:) 所以如果你 怀疑是这种情况,通过使下拉列表变长来验证它 足以出现在隐藏它的组件下方。

  • 在下拉列表中填充许多 项目。
  • 将其规范设置为返回一个 足够大的数字 “getMaximumRowCount”。

希望对你有帮助。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,想知道哪里出了问题,因为通常它可以工作,而且那种错误会非常非常严重。

    所以我删除了我刚刚拥有一个带有 JDialog 的主方法的所有内容,其中只有一个 JComboBox。

    删除所有内容的那一刻,我意识到自己做错了什么:我使用了getRootPane() 而不是getContentPane()

    我通常使用 ESC 关闭对话框并将 KeyStroke 添加到 rootPane。这就是我粗心犯错误的原因。

    我希望这会帮助下一个犯这个错误的人:)

    【讨论】:

    • 天啊,我已经为此苦苦挣扎了几个月! (希望在内部应用程序上)。 getContentPane() 确实是在顶级窗口中调用而不是 getRootPane()(对我来说是 JFrame)。
    【解决方案3】:

    我不确定您的情况是否会发生这种情况,但大部分与 UI 相关的问题是由于 UI 代码没有在 Event Dispatching Thread 中运行。 Swing 要求所有代码都应在此线程中运行,否则您可能会遇到 GUI 看起来不正确或事件未正确触发等问题。如果您在 Event Dispatching Thread 中运行所有这些代码,那么您可以忽略这一点,否则请查看此链接:

    http://download.oracle.com/javase/tutorial/uiswing/concurrency/dispatch.html

    【讨论】:

      猜你喜欢
      • 2012-08-15
      • 1970-01-01
      • 2017-06-14
      • 2014-12-04
      • 2020-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-13
      相关资源
      最近更新 更多