EclipseにWindowBuilderProを使用していますが、2つのJpanelを完全にオーバーラップさせたいと考えています。その後、comboxボックスの選択に基づいて、表示を切り替えることができます。GUIビルダーでこれを達成しようとすると、最初のパネルが2番目のパネルに置き換わります。そしてアドバイスをお願いします?
3 に答える
チュートリアル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の両方のメリットを享受できます。
完全に重なる2つのJpanelが欲しいのですが。その後、comboxボックスの選択に基づいて表示を切り替えることができます
これを正確に行う例については、「カードレイアウトの使用方法」を参照してください。
完全に重なる2つのJpanelが欲しいのですが。
CardLayoutがまさにその理由でそこにあると私は信じています。
基本的に、CardLayoutを使用してさまざまなパネルまたは「カード」をネストし、プログラムで(イベントによって)表示される適切なカードを設定できます。