将内容添加到JPanel

时间:2014-05-30 12:28:53

标签: java swing user-interface

我是Java的新手,实际上是为应用程序设计GUI。 我的主要是JFrame有5个按钮和1个面板,它们将包含“内容”,例如,对于第一个按钮,我设计的Jframe有一个JTabbedPane。< / p>

现在我想知道如何在点击按钮时将该框架中的内容合并到“内容”面板?

我尝试使用.add,但我得到了:

java.lang.IllegalArgumentException: adding a window to a container 

(好像我们无法将Jframe添加到Jpanel)。

我也尝试了setVisible方式,但它不符合我的要求,因为它会完全隐藏面板,我会得到一个带按钮的小窗口。

![Jframe内容] [1] ![带有按钮的主Jframe和显示jframe内容的Jpanel] [2]

代码是由netbeans生成的,我忘了提到我研究了将Jframe添加到另一个Jframe中,但这不是我的问题。

我尝试通过JInternalFrame更改Jframe,但单击按钮不会执行任何操作。 按钮有

contentPanel.add(new GestionUtilisateur());

所以基本上当你单击“Gestion Utilisateur”按钮时,你得到的JTabbedPane必须出现在内容区域(这里是空白的)

4 个答案:

答案 0 :(得分:1)

你不应该将JFrame放在JPanels中。如果您想要显示多个面板,具体取决于按钮之类的内容,请查看LAYOUTS

特别是,听起来像CardLayout可以很好地满足您的需求。 CardLayouts允许您通过将哪个面板显示在框架中来交换显示在框架中的前面&#34;面板列表。这样您就可以在单击一个按钮时显示JTabbedPane,然后单击另一个以更改内容窗格。

答案 1 :(得分:1)

无法在JPanel中添加JFrame。 使用JInternalFrame

答案 2 :(得分:0)

内容应设计为JPanel(您可以像JFrame一样使用拖放设计)但如果您因为某些原因必须将JFrame放到JPanel中,则可以通过

进行设置。
 myJPanel.add(myJFrame.getContentPane());

但我建议修改你的程序。

答案 3 :(得分:0)

制作并保留对包含您的内容的JPanels的引用。 JFrame就是这样,它是一个框架(虽然你可以添加一个组件)。

您无法将JFrame添加到JPanel。如果您希望显示多个组件,请使用BorderLayoutGridBag等布局。查看一些Swing布局教程here