我正在使用WindowBuilder Pro进行日食,我希望有两个相互完全重叠的Jpanel。然后,我可以根据选择的combox框切换它们的可见性。当我尝试在gui构建器中实现这一点时,第一个面板被第二个面板取代。还有建议吗?
答案 0 :(得分:4)
根据tutorial,可以使用groupLayout
。
您必须执行的操作是将组件添加到母亲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
方法的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
的{{1}}。
答案 1 :(得分:3)
我希望有两个相互完全重叠的Jpanel。然后,我可以根据选择的一个combox框来切换他们的可见性
请参阅:How to Use Card Layout以获取完全相同的示例。
答案 2 :(得分:0)