2

EclipseにWindowBuilderProを使用していますが、2つのJpanelを完全にオーバーラップさせたいと考えています。その後、comboxボックスの選択に基づいて、表示を切り替えることができます。GUIビルダーでこれを達成しようとすると、最初のパネルが2番目のパネルに置き換わります。そしてアドバイスをお願いします?

4

3 に答える 3

4

チュートリアルgroupLayoutによると、を使用して可能です。

あなたがしなければならないことは、コンポーネントをマザーに追加し、JPanelそのパネルを使用するように設定することGroupLayoutです。

次に、コンポーネントを ParallelGroup水平方向と垂直方向の両方の間隔でレイアウトに追加します。これは、それらが同じXおよびYスペースを占めることを意味します。次に、必要に応じて無効化/有効化し、JPanelsも非表示にします。

私はそれが機能する方法はそうだと信じています:

        JPanel panel1, panel2, panel3;
        //initialize panel3, etc
        panel1=new JPanel();
        panel2 = new JPanel();
        panel1.add(new JTextField("Panel1"));
        panel2.add(new JTextField("PANEL2"));
        
        groupLayout = new GroupLayout(panel3);
        
        panel3.setLayout(groupLayout);
        
        groupLayout.setHorizontalGroup(
        groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addComponent(panel1)
            .addComponent(panel2)
        );
        groupLayout.setVerticalGroup(
            groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addComponent(panel1)
            .addComponent(panel2)
        );
        panel1.setEnabled(false);
        panel1.setVisible(false);

ActionPerformed次に、以下を含むメソッドを使用してjCheckBoxを追加します。

if(panel1.isEnabled()) {
    panel1.setEnabled(false);
    panel1.setVisible(false);
    panel2.setEnabled(true);
    panel2.setVisible(true);
    
}else
 if(panel2.isEnabled()) {
    panel2.setEnabled(false);
    panel2.setVisible(false);
    panel1.setEnabled(true);
    panel1.setVisible(true);
    
}

それは私にとって望ましい行動を生み出しました。かなり簡単にJComboBoxに切り替えることができるはずです。JCheckBox

編集:「独自のJpanel」を持つ必要性を削除しました。そうではないはずです。上記の方法を使用すると、GroupLayoutとCardLayoutの両方のメリットを享受できます。

于 2011-12-21T18:54:50.603 に答える
3

完全に重なる2つのJpanelが欲しいのですが。その後、comboxボックスの選択に基づいて表示を切り替えることができます

これを正確に行う例については、「カードレイアウトの使用方法」を参照してください。

于 2011-12-21T21:11:33.820 に答える
0

完全に重なる2つのJpanelが欲しいのですが。

CardLayoutがまさにその理由でそこにあると私は信じています。

基本的に、CardLayoutを使用してさまざまなパネルまたは「カード」をネストし、プログラムで(イベントによって)表示される適切なカードを設定できます。

于 2011-12-21T21:42:01.417 に答える