我目前正在使用此代码:
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。
感谢。
答案 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教程中的部分,了解更多信息和工作示例。