2010-11-15 167 views
2

使用現有佈局管理器而不是編寫處理調整大小函數的偵聽器有什麼好處?舉例來說,我需要安排在網格按鈕和中央電網:Java佈局管理器

int h = component.getHeight()/11; 
int w = component.getWidth()/9; 
int offsetX = w; 
int offsetY = h; 
int x = (2 * column) * w - offsetX; 
int y = (2 * row) * h - offsetY; 

setBounds(x, y, w, h); 

而是摸索周圍有一個佈局管理器,我寫的是每當JPanel的調整大小的按鈕激活代碼這個小一點的。如果我要使用佈局管理器,編寫代碼來安排所有內容會更麻煩,如果我要說向JPanel添加組件,事情會變得更加複雜,而不是簡單地添加一些增加或減少。

因此,在這種情況下使用佈局管理器會有什麼好處,或者是否會使用一些自定義的線更容易使用和維護?

回答

6

你的代碼基本上是模仿GridLayout

setLayout(new GridLayout(11, 9)); 
// add all the components 
... 
// Profit 

要居中:

JPanel outerPanel = new JPanel(new BorderLayout()); 
JPanel gridPanel = new JPanel(new GridLayout()); 
outerPanel.add(gridPanel, BorderLayout.CENTER); 
+0

好的,在我的實現中可能還有5行代碼,但是與我的代碼相比,這種方法有沒有真正的好處?速度?文件大小? – 2010-11-15 22:46:26

+0

@Glenn,你的代碼是特定於你的實現。這不是一個可擴展的解決方案。另外,GirdLayout方法在設置中都被關注。沒有必要的特殊事件處理代碼。另外,你的方式非常不標準。 – jjnguy 2010-11-15 22:49:11

+0

@Glenn,因爲Java是調整大小的東西,所以我認爲它更快一些,但我不能保證。 – jjnguy 2010-11-15 22:49:41

1

這有可能是什麼東西那麼簡單,編寫自己的代碼是很容易的。但是當你發現你需要添加兩個新按鈕和一個文本區域時會發生什麼?我認爲學習使用佈局管理器是您投資的一個好時機,因爲這些知識可以讓您輕鬆擴展GUI的複雜性。 (沒有雙關語意思;)

+0

事情是,在這個例子中它是一個危險的風格的遊戲,所以只會有該地區的按鈕。我有一個得分的插槽,就是這樣。新元件沒有任何機會發揮作用。 – 2010-11-15 22:11:17

1

很酷。現在嘗試寫入相同的128次(每個屏幕上的每個控件)。這不是遊戲的結束。現在嘗試更改您的應用程序的圖形設計,即再次重寫此代碼128次。請享用!

+0

我有一個重複20次的按鈕,它是擴展JButton類的類的一部分。它並不那麼悲慘;) – 2010-11-15 22:17:09