2014-03-27 51 views
1

改變佈局在我的JPanel,我有6個按鈕連續佈局(使用FlowLayout截至目前)。面板的默認大小足以在一行中容納這些按鈕。但是,當調整大小frame時,它會卡住每個按鈕的最小大小總和的大小。一個靈活的佈局管理器,將根據調整大小

我需要一個佈局管理器,只需將按鈕放在新的行中就可重新調整面板大小。 我是Java Swing的新手,所以如果這是一個微不足道的問題,我會提前道歉。

+0

儘管GridbagLayout非常靈活,但它並不是微不足道的,事實上在標準中沒有針對每種情況的佈局。我同意@ lance-java說MigLayout是迄今爲止最高效和實用的佈局。 –

+0

@YagoMéndezVidal謝謝,我現在試圖miglayout – ContinuousError

+0

所以,我用[鏈接](http://www.uffesorensen.dk/Uni/dat1/doc/dat1/path/gui/ModifiedFlowLayout.html)哪是ModifiedFlowlayout()的代碼,然後添加一個Thread來每隔100 ms重新驗證面板 – ContinuousError

回答

3

MigLayout是迄今爲止我使用過的最好的佈局管理器。過去需要嵌套容器和許多難以理解的代碼的東西可以在一個容器中完成,而且容易理解(並且維護)字符串約束。

+0

檢出它,謝謝! – ContinuousError

2

流佈局能夠滿足您的期望行爲(如果組件不適合將組件移動到新行中)。檢查出swing tutorial(運行FlowLayoutDemo)。您必須向我們展示您的源代碼才能發現,是否有其他限制可以阻止它。

+0

FlowLayout不適合我,我現在嘗試MigLayout – ContinuousError

0

FlowLayout確實在新行上繪製組件,但問題在於面板的首選大小不會更改,所以在許多情況下,您看不到組件(除非您碰巧將面板添加到一個BorderLayout的中心)。

一種解決方案是使用Wrap Layout,它擴展了FlowLayout以重新計算面板的首選大小,以便您可以看到新行上的按鈕。

+0

WrapLayout似乎沒有工作,但謝謝你的建議 – ContinuousError

+0

@ContinuousError,發佈你的[SSCCE](http://www.sscce.org /)顯示問題。 – camickr