我有一个带有菜单栏的主JFrame,带有信息的jPanel,以及主框架中的文本框。我正在尝试打开其他面板,但主菜单出现加上主框架中的文本框仍然显示新面板。当我打开一个新的面板时,我得到了菜单栏,但没有主框架上的文本框。此外,当我尝试通过关闭新面板重新打开主框架时,我只能获得主框架中的菜单栏主jpanel,而不是文本框。这是我的代码。我不知道为什么我没有让主框架主面板下方的文本框再次出现。任何帮助将不胜感激。
private void MenuItem_caseOpenActionPerformed(java.awt.event.ActionEvent evt){
caseNewPanel = new CaseNewPanel();
this.setContentPane(caseNewPanel);
this.setTitle("Case Menu");
this.setSize(1200,800);
this.setBounds(5, 5, 1200, 800);
this.invalidate(); this.validate();
this.repaint();
}
private void jButton_exitMouseClicked(java.awt.event.MouseEvent evt) {
System.exit(0);
}
private void jMenuItem_caseCloseActionPerformed(java.awt.event.ActionEvent evt) {
this.getContentPane().removeAll();
mainMenuFrame = new MainMenuFrame();
this.setContentPane(mainMenuFrame.jPanel_mainMenu);
mainMenuFrame.jPanel_mainMenu.setVisible(true);
this.setSize(567,304);
this.setBounds(300, 300, 567,304);
this.invalidate(); this.validate();
this.repaint();
}
答案 0 :(得分:0)
当我打开一个新面板时,我会看到菜单栏,但不是主框架上的文本框
正确。 Swing组件只能有一个父组件。
对于这个问题,你应该使用带有CardLayout的面板来轻松切换面板。
所以你需要:
选项1应该是自我解释的。
对于选项2,请查看How to Use CardLayout上Swing教程中的部分。在这个例子中,JComboBox是公共组件(不是JTextField),但概念是相同的。