我想用什么布局来获得我想要的GUI?
问题描述:
我完全不知所措,我应该使用这些布局来创建我想要的程序的GUI。我想用什么布局来获得我想要的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,并使其看起来像第一张图片?
谢谢。
答
默认情况下,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
的部分,您可以阅读这些示例。
实验并学习嵌套面板以获得您想要的效果。
在工作的代理服务器阻止图像,所以我不能确切地看到你想要的。但是,通过在Swing中嵌套各种布局管理器,通常可以取得良好的效果。我会考虑使用的GridLayout的按钮,嵌套在具有BorderLayout的一个面板上,用含有添加到NORTH的按钮面板,和一个空的标签添加到CENTER占用的剩余空间。然后使用BorderLayout(WEST)将其添加到另一个面板,并将其放置在CENTER中的outerPane中。 –