使用 BoxLayout 在 GUI 中调整 JPanel 的大小
Using BoxLayout to resize JPanels in GUI
我目前正在使用此代码:
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
}
我正在尝试调整 JPanel(此处称为 controlPanel)的大小,使每个 JPanel 在我的 GUI 中都有自己独特的大小。我是使用 java 构建 GUI 的新手,我拥有的大部分代码都是从另一个文件中提取的。我试图合并的代码是我的代码中描述的这些新面板,并试图调整它们的大小。我想使用 BoxLayout 来获得我想要的效果吗?
此外,当我使用 createRigidArea 时,它似乎可以工作,但如果我继续更改您传递给它的 x 和 y 值,似乎什么也没有发生。我的意思是,通过更改值我没有看到任何视觉差异,并且我使用的值范围为 0-1000。
谢谢。
this.controlPanel.add(new FlatWorldPanel(this.getWwd()),Box.createRigidArea(new Dimension(1000, 1000)));
Box.createRigidArea(...)
没有做任何事情。 add(...) 方法的第二个参数是布局管理器使用的约束,而 BoxLayout 不期望任何约束,因此应该忽略它。
如果你想在垂直堆叠的面板之间垂直 space 那么你需要将它添加为一个单独的组件,你可能会使用 Box.createVerticalStrut()
:
this.controlPanel.add(new FlatWorldPanel(this.getWwd()));
this.controlPanel.add(Box.createVerticalStrut( 50 ));
FlatWorldPanel
的大小取决于您添加到其中的组件。
阅读有关 How to Use BoxLayout 的 Swing 教程部分,了解更多信息和工作示例。
我目前正在使用此代码:
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
}
我正在尝试调整 JPanel(此处称为 controlPanel)的大小,使每个 JPanel 在我的 GUI 中都有自己独特的大小。我是使用 java 构建 GUI 的新手,我拥有的大部分代码都是从另一个文件中提取的。我试图合并的代码是我的代码中描述的这些新面板,并试图调整它们的大小。我想使用 BoxLayout 来获得我想要的效果吗?
此外,当我使用 createRigidArea 时,它似乎可以工作,但如果我继续更改您传递给它的 x 和 y 值,似乎什么也没有发生。我的意思是,通过更改值我没有看到任何视觉差异,并且我使用的值范围为 0-1000。
谢谢。
this.controlPanel.add(new FlatWorldPanel(this.getWwd()),Box.createRigidArea(new Dimension(1000, 1000)));
Box.createRigidArea(...)
没有做任何事情。 add(...) 方法的第二个参数是布局管理器使用的约束,而 BoxLayout 不期望任何约束,因此应该忽略它。
如果你想在垂直堆叠的面板之间垂直 space 那么你需要将它添加为一个单独的组件,你可能会使用 Box.createVerticalStrut()
:
this.controlPanel.add(new FlatWorldPanel(this.getWwd()));
this.controlPanel.add(Box.createVerticalStrut( 50 ));
FlatWorldPanel
的大小取决于您添加到其中的组件。
阅读有关 How to Use BoxLayout 的 Swing 教程部分,了解更多信息和工作示例。