我完全不知道应该使用哪些布局来创建我想要的GUI程序。
在左侧,我希望我的面板上有三个按钮,垂直向下。在右侧,我将有另一个面板,它将是我的主面板,其中显示所有信息,具体取决于按下的按钮。
我完全不知道应该使用哪种布局,而且我完全不知道如何让我的GUI看起来像这样:
此处是我的代码:
public void addComponentsToPane(Container pane) {
JPanel innerPane = new JPanel();
JPanel outerPane = new JPanel();
outerPane.setBackground(Color.yellow);
pane.setLayout(new GridBagLayout());
JButton btnAdd = new JButton("Add");
JButton btnEdit = new JButton("Edit");
JButton btnMovements = new JButton("Movements");
innerPane.add(btnAdd, BorderLayout.NORTH);
innerPane.add(btnEdit, BorderLayout.CENTER);
innerPane.add(btnMovements, BorderLayout.SOUTH);
pane.setLayout(new GridLayout(1,2));
pane.add(innerPane);
pane.add(outerPane);
}
返回此内容:
正如你所看到的,它看起来并不像我想要的那样,我不知道该怎么做。
我的按钮不正确,我可能以错误的方式接近这个。
我的问题是,我怎样才能以正确的方式解决这个问题,因为我可以用正确的布局创建一个GUI,让它看起来像第一张图片?
谢谢。
答案 0 :(得分:1)
默认情况下,JFrame的内容窗格使用BorderLayout。我会保持这种布局。
然后创建一个“左”面板并将其添加到BorderLayout.LINE_START。该区域将包含您的按钮。然后,您可以将此面板的布局管理器设置为GridBagLayout。使用GridLayout创建第二个面板,组件垂直对齐。将按钮添加到此面板。使用以下方法将此面板添加到“左侧”面板:
leftPanel.add(buttonPanel, new GridBagConstraints);
然后创建另一个面板并将其添加到BorderLayout.CENTER。这是你的彩色面板。
所以基本逻辑是:
JPanel buttonPanel = new JPanel( new GridLayout(...) );
buttonPanel.add(...);
JPanel leftPanel = new JPanel( new GridBagLayout() );
leftPanel.add(buttonPanel, new GridBagConstraints());
JPanel centerPanel = new JPanel();
center.setBackground( Color.YELLOW );
frame.add(leftPanel, BorderLayout.PAGE_START);
frame.add(centerPanel, BorderLayout.CENTER);
如果您希望按钮大于默认值,那么您可以执行以下操作:
button.setMargin( new Insets(20, 20, 20, 20) );
阅读Layout Managers上的Swing教程,了解每个布局管理器的更多信息和示例。
如果您想在包含按钮的面板上留出额外空间,则需要使用EmptyBorder
。 Swing教程还包含How to Use Borders
部分,您可以阅读工作示例。
尝试并学习嵌套面板以获得所需效果。