我的java项目中有5个jFrames。我想做个主菜。
我的意思是,我希望程序从一个jFrame开始,当我单击一个按钮而不是打开jFrame时,所有的元素,比如标签、按钮和表都显示在我的主体jFrame中。如果我点击其他按钮,主框架将清理和充电其他jframe。
有可能吗?我用java jdk 8和netbeans编程。谢谢
编辑:我想是谁标记的复制不明白我的问题。我不想打开或关闭框架,或者其他框架,我想在同一个框架中加载几个框架的结构和组件。在你开始抱怨之前,请先阅读我的问题。
发布于 2016-07-10 17:55:27
我的java项目中有5个jFrames。
这是个问题。
我想做个主菜。我的意思是,我希望程序从一个jFrame开始,当我单击一个按钮而不是打开jFrame时,所有的元素,比如标签、按钮和表都显示在我的主体jFrame中。如果我点击其他按钮,主框架将清理和充电其他jframe。
是的,这可以通过从要在当前显示的contentPane中显示内容的JFrame (通常是JPanel)获得,并使其成为显示JFrame的contentPane,例如:
// create the new JFrame, the one whose content you wish to display
NewJFrame newJFrame = new NewJFrame();
// get its contentPane
Container newContentPane = newJFrame.getContentPane();
// add this content pane into the displayed JFrame
displayedJFrame.setContentPane(newContentPane);
// revalidate and repaint the JFrame so that its new data is well displayed
displayedJFrame.revalidate();
displayedJFrame.repaint();
// displayedJFrame.pack(); // and you might need to do this if sizes are way off但是这个额外的体操是笨重的,容易出现错误和不必要的。您通过让类扩展JFrame来将自己画在角落里,迫使您创建和显示JFrames,而这通常需要更多的灵活性。事实上,我敢说我创建的大多数Swing GUI代码以及我所见过的(而不是)扩展了JFrame,实际上,您很少会想要这样做。更常见的情况是,您的GUI类将面向创建JPanels,然后可以将其放置到JFrames或JDialogs或JTabbedPanes中,或者在需要时通过CardLayouts进行交换。这将大大提高GUI编码的灵活性。
对于这种情况,我建议您这样做,让您的GUI类创建JPanels,并将想要交换的那些添加到使用CardLayout的JPanel中。然后,每当您想要显示不同的“卡”时,调用CardLayout对象上的CardLayout,传入使用它的JPanel,以及在向CardLayout中添加"card“JPanel时使用的字符串键--使用JPanel。这在CardLayout教程中都有很好的解释.
其他有用的链接:
https://stackoverflow.com/questions/38294032
复制相似问题