我正在为 Eclipse 使用 WindowBuilder Pro,我希望有两个完全重叠的 Jpanel。然后,我将能够根据对组合框的选择来切换它们的可见性。当我尝试在 gui 构建器中实现这一点时,第一个面板被第二个面板取代。请给点建议?
问问题
3249 次
3 回答
4
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);
然后添加一个 jCheckBox,其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 的好处。
于 2011-12-21T18:54:50.603 回答
3
我想要两个完全重叠的 Jpanel。然后,我将能够根据对组合框的选择来切换它们的可见性
请参阅:如何使用卡片布局以获取完全这样做的示例。
于 2011-12-21T21:11:33.820 回答
0
我想要两个完全重叠的 Jpanel。
我相信CardLayout正是出于这个原因。
基本上,您可以使用 CardLayout 嵌套不同的面板或“卡片”,并将适当的卡片设置为以编程方式显示(在某些事件中)。
于 2011-12-21T21:42:01.417 回答