2016-12-28 10 views
0

メインフレームにはメニューバー、jPanel、テキストボックスを持つメインJFrameがあります。私は他のパネルを開こうとしていますが、メインのメニューバーにはメインフレームのテキストボックスが表示され、新しいパネルも表示されます。新しいパネルを開くと、メニューバーが表示されますが、メインフレームにあるテキストボックスは表示されません。また、新しいパネルを閉じてメインフレームを再オープンしようとすると、メインフレーム内のメイン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

私は新しいパネルを開くと、私はメニューバーを得るが、メインフレーム

正しい上にあったではないテキストボックス。 Swingコンポーネントは単一の親を持つことができます。

この問題では、パネルを簡単に切り替えるために、CardLayoutのあるパネルを使用する必要があります。

だから、どちらかを行う必要があります。

  1. スワップあなたが各パネルに別々のテキストフィールドを作成する必要があることを意味し、完全なパネルを、。
  2. 各パネルの一部をスワップします。これは、テキストフィールドが共通で、パネルの下部のみがスワップされることを意味します。

オプション1は自明です。

オプション2は、How to Use CardLayoutのSwingチュートリアルのセクションをチェックしてください。この例では、JComboBoxは一般的なコンポーネント(JTextFieldではありません)ですが、概念は同じです。

+0

ありがとうございます。私はそれを見て、それを試してみます。 – Dante

関連する問題