2

我正在为 Eclipse 使用 WindowBuilder Pro,我希望有两个完全重叠的 Jpanel。然后,我将能够根据对组合框的选择来切换它们的可见性。当我尝试在 gui 构建器中实现这一点时,第一个面板被第二个面板取代。请给点建议?

4

3 回答 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);
    
}

这产生了我想要的行为。您应该能够相当轻松地切换JComboBoxJCheckBox

编辑:消除了拥有“自己的 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 回答