【问题标题】:add panel to combobox popup menu将面板添加到组合框弹出菜单
【发布时间】:2012-10-10 04:45:26
【问题描述】:

我有 jFrame = 帧

它有 jcombobox = combo

然后我有 jpanel = 面板

我在这个面板中有很多组件

我尝试将此面板添加到组合框弹出菜单中

所以如果点击了组合框,

会显示包含许多组件的面板

可以将面板添加到组合框弹出菜单中吗?!?!

怎么做???

我已经读过了

http://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html

http://docs.oracle.com/javase/tutorial/uiswing/examples/components/ComboBoxDemoProject/src/components/ComboBoxDemo.java

但仍然没有任何线索

怎么做?

非常感谢您的帮助...

【问题讨论】:

  • 欢迎来到论坛 :-) 只是......想象一下你自己走进我的鞋子,用我的眼睛阅读你自己的问题:你会高兴还是至少明白你在写什么?

标签: java swing jpanel jcombobox jpopupmenu


【解决方案1】:

因此,根据您的描述,您有一个不可见的面板,如果单击组合框,您希望显示该面板?所以它会出现在组合框中的任何选项?

这应该很简单。让我们修改 Java 教程中的 this ComboBoxDemo 中的 JLabel。由于它们都继承自 JComponent,因此我们将能够以相同的方式使 JLabelJPanel 可见。

首先,请确保您了解演示的用途。组合框选项正在更改 JLabel 中日期文本的格式。我们想要编辑演示,使这个 JLabel 在我们选择 JComboBox 中的任何选项之前不可见。

首先,我们希望包含一个布尔值作为类变量,以便我们可以在任何方法中访问它。

boolean visibleComp;

接下来,在构造函数中,您需要将 JLabel“结果”更改为默认不可见。我们可以通过使用 JComponent 的setVisible method 来做到这一点。

result.setVisible(false);

现在我们需要控制结果何时以及如何变得可见——当我们继续执行代码时,我们看到 actionPerformed 方法处理我们的事件,并将格式化细节传递给另一个名为 reformat. 的方法

由于在我们的构造函数中也调用了重新格式化,我们需要在 actionPerformed 方法中设置布尔值。

visibleComp = true;

然后我们将要在重新格式化的 try 块中添加一个条件语句——这将检查我们的布尔值是否为真,这只会在用户执行操作时发生。我们可以使用它来设置组件的可见性。

if(visibleComp){
     result.setVisible(true);
}

您可以轻松地将 JPanel 与此示例互换。希望对您有所帮助。

【讨论】:

  • 感谢您的帮助,但是..我没有在组合框中选择一个项目,组合框没有任何项目,我只想要组合框弹出菜单侦听器可见(触发),弹出菜单将显示我的有很多jlabel的面板..然后如果点击jlabel..组合框将从那个jlabel添加项目(字符串)......顺便说一下..除了向组合框弹出菜单添加一个jpanel..我可以用......如果组合框弹出可见被触发,我为 jcombobox 弹出菜单设置可见(假).. 然后为其他有我的面板的弹出菜单设置可见(真).. 我如何为我的组合框弹出菜单设置可见(假)?感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 2014-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多