java - 像菜单一样在另一个中打开 jFrame 的元素和结构

标签 java swing netbeans desktop

我的 java 项目中有 5 个 jFrame。我想制作一个主菜单。

我的意思是,我希望程序以 jFrame 开始,当我单击按钮而不是打开 jFrame 时,所有元素(如标签、按钮和表格)都显示在我的主要 jFrame 中。 如果我单击其他按钮,主框架将清理并为其他 jframe 充电。

有可能吗?我使用 java jdk 8 和 netbeans 进行编程。 谢谢

编辑: 我认为标记重复的人不明白我的问题。我不想打开或关闭框架或其他框架,我想在同一框架中加载多个框架的结构和组件。在开始提示重复的问题之前,请先阅读我的问题

最佳答案

i have 5 jFrames in my java project.

这是一个问题。

And i want to make like a Main Menu. I mean, i want that the program starts with a jFrame and when i click a button insteand of open the jFrame, all the elements like labels, buttons and tables are being shown in my principal jFrame. And if i click other button the main frame will clean and charge other jframe.

是的,这可以通过从要在当前显示的 JFrame 中显示其内容的 JFrame 中获取 contentPane(通常是 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,迫使您创建和显示 JFrame,而通常需要更大的灵 active ,您就会陷入困境。事实上,我敢说我创建的和见过的大多数 Swing GUI 代码都扩展 JFrame,而且事实上您很少会想要这样做这。更常见的是,您的 GUI 类将适合创建 JPanel,然后可以将其放入 JFrame 或 JDialogs 或 JTabbedPanes 中,或者在需要的地方通过 CardLayout 进行交换。这将大大增加 GUI 编码的灵 active 。

对于这种情况,我建议您这样做,您的 GUI 类创建 JPanel,并将要交换的 JPanel 添加到使用 CardLayout 的 JPanel。然后,每当您想要显示不同的“卡片”时,请在 CardLayout 对象上调用 show(...),传入使用它的 JPanel 以及使用时使用的 String 键将“card”JPanel 添加到 CardLayout - 使用 JPanel。这在 CardLayout Tutorials 中有很好的解释。 .

其他有用的链接:

关于java - 像菜单一样在另一个中打开 jFrame 的元素和结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38294032/

相关文章:

java - 插入排序算法中未排序的 didgit

java - 为什么 Stream#reduce 不隐式接受处理父类(super class)型元素的累积函数?

Java - 无法从 MySQL StoredProcedure 返回/访问结果集

javascript - 如何使用 Zend Framework 和 netbeans 编写 JavaScript?

java - 我需要在java中编写validDate()函数

java - Spring Boot 属性迁移器

java - 在 JPanel 中使用 GroupLayout 来对齐 JTextFields 和 JLabels?

java - 为什么我的图像没有添加到我的 JButton 中?

jsf - javax.faces.bean 类将被弃用 - NetBeans IDE 8.0 发出的通知

android - 在模拟器中看不到应用程序(带有 android 的 netbeans)