Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当我打开其他面板时,需要保持主框架上的文本框和菜单栏可见,然后重新打开主框架_Java_Swing_Jframe_Jpanel - Fatal编程技术网

Java 当我打开其他面板时,需要保持主框架上的文本框和菜单栏可见,然后重新打开主框架

Java 当我打开其他面板时,需要保持主框架上的文本框和菜单栏可见,然后重新打开主框架,java,swing,jframe,jpanel,Java,Swing,Jframe,Jpanel,我有一个带有菜单栏的主JFrame,一个带有信息的jPanel,在主框架中有一个文本框。我正在尝试打开其他面板,但是主菜单栏和主框架中的文本框仍然显示在新面板上。当我打开一个新面板时,我得到的是菜单栏,而不是主框架上的文本框。另外,当我试图通过关闭新面板来重新打开主框架时,我只会在主框架中获得菜单栏、主jpanel,而不会获得文本框。这是我的密码。我不知道为什么我不让主框架主面板下面的文本框再次显示。任何帮助都将不胜感激 private void MenuItem_caseOpenActionP

我有一个带有菜单栏的主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();        
}                             
当我打开一个新面板时,我得到的是菜单栏,而不是主框架上的文本框

对。Swing组件只能有一个父组件

对于此问题,您应该使用具有CardLayout的面板,以便轻松切换面板

因此,您需要:

  • 交换整个面板,这意味着您需要为每个面板创建一个单独的文本字段
  • 交换每个面板的一部分,这意味着文本字段是公共的,只交换面板的底部
  • 选项1应该是不言自明的


    对于选项2,请查看上的Swing教程中的部分。在本例中,JComboBox是公共组件(不是JTextField),但概念是相同的。

    谢谢;我会看一看并尝试一下。