可以使用groupLayout
,根据tutorial .
您必须做的是将组件添加到母体中JPanel
,并将该面板设置为使用GroupLayout
.
然后将组件添加到布局中ParallelGroup
在水平和垂直间距上。这意味着它们将占据相同的 X 和 Y 空间。然后根据需要禁用/启用,同时隐藏 JPanel。
我相信它的工作方式是这样的:
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
方法包含:
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 的好处。