2016-04-22 10 views
0

JPanelsと苦労しています。私は1つのフレームを1つMainEngineに入れて、それから私のMainJPanelのソースとして設定するJPanelフォームを追加したいと思います。JavaフレームでJPanelフォームを切り替える

public class Main extends javax.swing.JFrame { 
    PanelForm1 p1 = new PanelForm1(); 
    PanelForm2 p2 = new PanelForm2(); 
    GridBagLayout layout = new GridBagLayout(); 
    GridBagConstraints c = new GridBagConstraints(); 

    public Main() { 
     initComponents(); 
     MainJPanel.setLayout(layout); 
     c.gridx = 0; 
     c.gridy = 0; 
     MainJPanel.add(p1,c); 
     c.gridx = 0; 
     c.gridy = 0; 
     MainJPanel.add(p2,c); 
     m.p1.setVisible(true); 
     m.p2.setVisible(false); 
    } 
} 

そしてPanelForm1.javaで私のButtonClickはPanel2Formを表示しようとしている。その後のJPanelを切り替える は、私は私のMain.javaフレームでこれを持っている

フォーム。

public class Panel1 extends javax.swing.JPanel { 

    public Panel1() { 
     initComponents();  
    } 

    private void ButtonGoToPanel2ActionPerformed(java.awt.event.ActionEvent evt) {           
     Main m = new Main(); 
     m.p1.setVisible(false); 
     m.p2.setVisible(true); 
    } 
} 

Panel2Form.javaはおそらく同じです。

私が行うことができる唯一の方法は、Main.javaにボタンを置くことですが、私は常にボタンが表示されることを望んでいません。

私がクラスオブジェクトを作成しているときは、私はp1p2などの新しいコピーですので、私は何も変更していません。

誰でも手伝いできますか?それとももっと良い方法がありますか? JPanelフォームを切り替えるためのボタンが常に必要なわけではないので、ClearLayoutのようなすべてのメソッドも実行されないため、すべてのファイルを1つのファイルに入れたくないです。その後のJPanelを切り替える

答えて

2

フォームだからCardLayoutを使用する必要があります。実際の例については、How to Use CardLayoutのSwingチュートリアルのセクションを参照してください。私はそれを行うことができます

唯一の方法は、右のMain.javaのボタンを持っていることですが、私は常に表示

よくあるボタンを、したくない、パネルはしませんあなたは、パネルの交換を開始するためのイベントのいくつかの種類を処理するために必要なので、独自のスイッチ:

  1. ユーザーは、ユーザーがボタン
  2. Uをクリックし、メニュー項目
  3. をクリックSERは、キーストローク
  4. アプリケーションがパネル

を切り替え次に、あなたが表示したいパネルを示すメインパネルに子パネルを上からパラメータを渡すに入ります。

私はそれが一つのファイルにすべてのものを持っている必要はありません

は明らかではありませんので、一つのファイルにすべてのものを持っている必要はありません。子パネルは親パネルにアクセスする必要があります。これを行うには

一つの方法は、パスパラメータである:

JPanel main = new JPanel(); 
JPanel child1 = new ChildPanel(main); 
main.add(child1); 
JPanel child2 = new ChildPanel(main); 
main.add(child2); 

とも私はいつものJPanelが

フォーム切り替えるためのボタンを持ってしたくないので、CardLayoutのようなすべての方法は、行くことはありません

はい、CardLayoutを使用できます。いいえ、ボタンは必要ありません。必要なのは、表示したい "パネル名"だけです。次に、CardLayoutを使用してパネルに通知します。

+0

JTabbedPaneがあり、パネルを切り替えることができます。 –

関連する問題