使用BoxLayout在GUI中调整JPanels的大小

时间:2017-02-26 21:55:38

标签: java swing jpanel layout-manager boxlayout

我目前正在使用此代码:

this.getContentPane().add(wwjPanel, BorderLayout.EAST);
        if (includeLayerPanel)
        {
            this.controlPanel = new JPanel();
            controlPanel.setLayout(new BoxLayout(controlPanel, BoxLayout.Y_AXIS));
            this.layerPanel = new LayerPanel(this.getWwd());
            this.controlPanel.add(new FlatWorldPanel(this.getWwd()),Box.createRigidArea(new Dimension(1000, 1000))); //This is the top pan
            this.controlPanel.add(this.getStates(), Box.createRigidArea(new Dimension(0, 100)));
            this.controlPanel.add(this.getPanelAlerts(), Box.createRigidArea(new Dimension(0,100)));

            this.getContentPane().add(this.controlPanel, BorderLayout.WEST);//This is the whole panel on the left
        }

我正在尝试调整JPanels的大小,这里称为controlPanel,每个都在我的GUI中有自己独特的大小。我是使用java构建GUI的新手,我所拥有的大部分代码都来自另一个文件。我试图合并的代码是我的代码中描述的这些新面板,并试图调整它们的大小。 BoxLayout是我想要用来获得我想要的效果吗?

此外,当我使用createRigidArea它似乎工作,但如果我继续更改你传递给它的x和y值似乎没有任何事情发生。我的意思是,通过更改值我没有看到任何视觉差异,我使用的值范围为0-1000。

感谢。

1 个答案:

答案 0 :(得分:2)

this.controlPanel.add(new FlatWorldPanel(this.getWwd()),Box.createRigidArea(new Dimension(1000, 1000))); 

Box.createRigidArea(...)没有做任何事情。 add(...)方法的第二个参数是布局管理器使用的约束,而BoxLayout并不期望任何约束,因此应该忽略它。

如果你想在垂直堆叠的面板之间留出垂直空间,那么你需要将它作为一个单独的组件添加,你可能会使用Box.createVerticalStrut()

this.controlPanel.add(new FlatWorldPanel(this.getWwd()));
this.controlPanel.add(Box.createVerticalStrut( 50 ));

FlatWorldPanel的大小取决于您添加的组件。

阅读How to Use BoxLayout上Swing教程中的部分,了解更多信息和工作示例。