2017-01-03 147 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的部分,您可以閱讀這些示例。

實驗並學習嵌套面板以獲得您想要的效果。