我是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必须出现在内容区域(这里是空白的)
答案 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
。如果您希望显示多个组件,请使用BorderLayout
,GridBag
等布局。查看一些Swing布局教程here。