我正在開發一個java桌面應用程序,其中包含許多具有不同佈局的面板。現在,當我想設置面板新佈局時,我總是創建新的佈局。例如。桌面應用程序的佈局
JPanel panel = new JPanel(new GridLayout(0, 1));
是正確的解決方案來創建一些LayoutFactory
,在這裏創建,我需要再設置面板中的所有佈局?
我正在開發一個java桌面應用程序,其中包含許多具有不同佈局的面板。現在,當我想設置面板新佈局時,我總是創建新的佈局。例如。桌面應用程序的佈局
JPanel panel = new JPanel(new GridLayout(0, 1));
是正確的解決方案來創建一些LayoutFactory
,在這裏創建,我需要再設置面板中的所有佈局?
1)新GridLayout(0, 1)
鋪設的JPanel應該是通過使用BoxLayout
相同BorderLayout.CENTER
或可能的,在這種情況下,你將只有一個JComponent
對整個JPanel
2)最簡單的方法是外行JComponents
通過Nested Layout
每個集裝箱可以有不同的LayoutManager,相同LayoutManager
或它們的組合
3)通過使用GridBagLayout或MigLayout是可能的(在大多數情況下)放置每一次JComponents
時間整,包含3或JPanel
#1'GridLayout(0,1)'與'BorderLayout.CENTER'不同。它定義了一個佈局,其中包含一列和與添加元素相同的行。即使'GridLayout(1,1)'在添加更多元素時也不會只有一個單元格,它會動態添加列。 「BoxLayout」有不同的效果,它不會調整組件大小。 #3 JGoodies FormLayout也是一個很好的替代品。 – 2012-01-31 00:45:43
hudi,如果你想讓你的代碼更加簡潔,你可以編寫幫助者方法來創建和分配佈局。如果您只在一個類中設置佈局,則輔助方法可以是該類的private
方法。或者,如果您要在各種類別中設置佈局,則可以將protected
輔助方法添加到公共超類(如果有),或者在實用程序類中添加static
方法。
發佈您的代碼的詳細信息,我們可以給出更具體的建議。
http://docs.oracle.com/javase/tutorial/uiswing/index.html – 2012-01-30 09:30:43
不需要工廠(有些甚至不能共享) – kleopatra 2012-01-30 09:40:15
和可以共享的佈局呢? E.G當我在我的項目中搜索flowLayout時,發現我正在創建約30個此佈局的實例 – hudi 2012-01-30 09:43:54