2017-01-03 97 views
0

我完全不知所措,我应该使用这些布局来创建我想要的程序的GUI。我想用什么布局来获得我想要的GUI?

在左侧,我想我的面板中有三个按钮,垂直向下。在右侧,我将有另一个面板,这将是我的主面板,显示所有信息,具体取决于按下哪个按钮。

我真的不知道哪些布局我应该使用,而我完全难倒,我怎么让我的GUI看起来像这样:enter image description here

这里是我的时刻代码:

 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); 
    } 

它返回这样的:

enter image description here

正如你可以看到,它看上去一点也不像我想这是我做的不知道该怎么做。

我的按钮是不正确的,我可能接近这个错误的方式。

我的问题是,我怎样才能以正确的方式解决这个问题,我可以创建一个具有正确布局的GUI,并使其看起来像第一张图片?

谢谢。

+0

在工作的代理服务器阻止图像,所以我不能确切地看到你想要的。但是,通过在Swing中嵌套各种布局管理器,通常可以取得良好的效果。我会考虑使用的GridLayout的按钮,嵌套在具有BorderLayout的一个面板上,用含有添加到NORTH的按钮面板,和一个空的标签添加到CENTER占用的剩余空间。然后使用BorderLayout(WEST)将其添加到另一个面板,并将其放置在CENTER中的outerPane中。 –

回答

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的部分,您可以阅读这些示例。

实验并学习嵌套面板以获得您想要的效果。

相关问题