2014-03-03 93 views
3

所以我試圖谷歌如何設置一個默認大小JButtons,以便他們不增長的JFrame調整大小。我沒有看到一個setDefaultSize方法,但我能找到的最接近的方法是setMaximumSize()。然而,這似乎並沒有在我的處境工作,我猜是因爲我使用的網格佈局定位我的按鈕在框架中,這裏的一小塊我的代碼:使按鈕不可改變

rightPanel.add(ButtonA); 
rightPanel.add(ButtonB); 
rightPanel.add(ButtonC); 

outerPanel.add(leftPanel); 
outerPanel.add(rightPanel); 
getContentPane().add(outerPanel); 

這裏有一個發生了什麼圖片:

enter image description here

我也想擁有我的按鈕在右側面板的中間時,我調整(就像他們現在卻小了很多)。任何想法如何解決這個問題?我假設我必須使用其他佈局或其他東西。

感謝

編輯:我修改代碼以使用BoxLayout的,但它似乎並沒有把按鈕在中間。在X比對工作,但Y調整沒有做任何事情:

ButtonA.setAlignmentX(CENTER_ALIGNMENT); 
ButtonA.setAlignmentY(CENTER_ALIGNMENT); 

ButtonB.setAlignmentX(CENTER_ALIGNMENT); 
ButtonB.setAlignmentY(CENTER_ALIGNMENT); 

ButtonC.setAlignmentX(CENTER_ALIGNMENT); 
ButtonC.setAlignmentY(CENTER_ALIGNMENT); 

JPanel rightPanel = new JPanel(); 
rightPanel.setLayout(new BoxLayout(rightPanel, BoxLayout.Y_AXIS)); 

rightPanel.add(ButtonA); 
rightPanel.add(ButtonB); 
rightPanel.add(ButtonC); 

outerPanel.add(leftPanel); 
outerPanel.add(rightPanel); 
getContentPane().add(outerPanel); 

enter image description here

EDIT2:垂直固定膠。

+1

是的,'GridLayout'是錯誤的選擇。您是否嘗試過其他佈局管理器?有幾個選項可以工作。我建議嘗試一點。 –

+0

是的,如果你檢查我的編輯,我嘗試使用BoxLayout,但我無法設法將我的按鈕對齊在面板的中間(見OP中的圖片)。 – user3281466

+1

:-)對不起,我剛纔發表我的評論時沒有看到您的編輯。如果您想將按鈕羣移到中間,我會嘗試在按鈕上方和下方放置垂直膠水。看看camickr的答案中的鏈接。 –

回答

2

GridLayout將始終調整組件大小以填充可用空間。

嘗試使用垂直BoxLayout代替。有關更多信息和示例,請參閱How to Use Box Layout上的Swing教程部分。

+0

謝謝你,你能告訴我爲什麼當我使用Box Layout時,我的按鈕在中間沒有對齊嗎?在帖子中看到我的編輯。 – user3281466

+1

@ user3281466,閱讀教程。有一節介紹了對齊如何工作。您可能需要在組件之前/之後「粘合」。 – camickr

2

使用FlowLayout將每個JButton封裝到JPanel中,然後將這些FlowLayout JPanel添加到rightPanel而不是JButton本身。這將允許您保持均勻間隔的按鈕,但不會使它們展開以佔據父容器可用的整個空間。

如果你不希望它們均勻間隔,但要連續三個按鈕一個接一個地從上到下,你可以讓右側面板有一個BorderLayout,在BorderLayout的北面添加一個子面板, GridLayout的右側面板,然後添加包含JButton的FlowLayout面板。