2009-02-12 56 views
10

我對java相當陌生(特別是swing),最近一直在做一些相當簡單的應用程序,隨着我的學習。最新的有很多表單組件,比如JLabels,JTextFields,JButtons等等。所有這些組件都是使用可視化構建器放置在NetBeans中的。我不得不說,我並沒有真正接觸NetBeans,而只是設計了GUI並將代碼直接複製到Eclipse。GroupLayout:它值得學習嗎?

我的問題是:是否值得非常瞭解GroupLayout和手工編碼(因此對我的GUI有更多的控制權)還是繼續照原樣?

回答

11

如果僅僅是因爲理解你的IDE在做什麼總是一個好主意,我認爲值得花些時間去了解GroupLayout。知道幕後發生的事實際上會讓你更加靈活,因爲如果你在無法訪問Netbeans的情況下結束,你會知道如何複製它爲你製作的佈局。此外,在您獲得大量體驗後,您可能會最終節省時間。您通常可以比使用可視化編輯器更快地手動開發簡單的GUI,特別是考慮將代碼從Netbeans複製並粘貼到Eclipse所需的時間。

當然,手動學習如何使用GroupLayout也會使您更容易轉換到Java提供的任何其他佈局管理器,這反過來可導致更簡單的代碼並節省更多的時間。

+0

我也在想這個;我可能處於這樣一種情況,即我無法從NetBeans複製代碼,但需要製作相對複雜的GUI - 而在需要製作更簡單的GUI的情況下,我不需要轉向NetBeans ,而是在一個更簡單的佈局管理器上構建它。 – Ciaran 2009-02-12 23:13:47

10

GroupLayout並非真正爲手寫編碼設計;它比任何其他佈局管理器都要冗長得多(除了可能的GridBagLayout)。既然你說你是Swing的新手,我建議從基本版面管理員開始(BorderLayoutFlowLayout);您可以通過右鍵單擊面板或框架並選擇「設置佈局」在NetBeans中使用它們。在熟悉這些之後,我建議您查看MiGLayout

要回答您的其他問題:我認爲NetBeans表單設計器與計算器相似;如果你已經知道基礎知識,那麼這是一個非常棒的工具,但是如果你只是用它作爲柺杖,你將永遠學不到任何東西。

+0

我認爲SpringLayout更加冗長。 ;)我使用了LWUIT附帶的GroupLayout,它並不算太壞,但也不容易。我喜歡JGoodies FormLayout,並且由於米格佈局是其繼任者,我熱烈推薦米格。無論如何,最好也知道基本的佈局。 – 2009-02-12 22:53:37

+0

我已經很熟悉BorderLayout - 但實際上GroupLayout是我認爲最適合我正在構建的應用程序的。至於使用NetBeans作爲柺杖 - 我只是不喜歡IDE,並且發現它在一些部分中不必要地過於複雜 – Ciaran 2009-02-12 23:10:51

1

大多數更復雜的佈局管理器並不意味着手動編碼。你可以做到這一點,但是從現在開始的幾個月你可能會很難理解你自己的佈局。 GroupLayout也不例外,更糟的是它根本不直觀,你必須扭曲你的想法,迫使你的佈局成爲GroupLayout條款。

這是我的看法,這些佈局經理不值得學習。 GridBagLayout是最糟糕的。它有更多的選擇,你可能會發現,他們似乎從來沒有做你認爲他們做的。 MiGLayout功能非常強大,相當直觀,大部分都可以做你認爲它的功能,但我仍然認爲它太強大,太複雜了,程序員本身也很好。 GroupLayout沒有那麼強大,沒有那麼直觀,也不值得麻煩。

我多年來對Java GUI進行佈局和維護的建議是學習並使用最強大的佈局管理器,您可以在兩個小時內掌握這些佈局管理器,並且永遠不會忘記,然後使用此佈局爲嵌套的容器佈局GUI經理和基本的BorderLayout/GridLayout/FlowLayout/BoxLayout。

3

GroupLayout值得學習以編程方式使用。

我使用GroupLayout作爲我創建的使用標準Swing組件的幾乎每個面板上的默認佈局。我發現結果總是非常令人滿意,調整得非常好。我總是設置這些選項:

groupLayout.setAutoCreateGaps(true); 
groupLayout.setAutoCreateContainerGaps(true); 

,使用此佈局重複,不僅給了我很大的前瞻性佈局,但它給了我能夠放在一起與多家一些複雜的面板所需的低級別的經驗在編譯時未知的組件。我還發現,如果組件數量是動態的,我可以佈置所有組件,然後使用setVisible(boolean)打開和關閉它們,而不重新創建水平和垂直組。

0

如果您傾向於使用VB程序風格,那麼您將花時間在GroupLayouts上。否則,請嘗試使用合適的示例來了解GridBagLayout管理器。對於那些希望每個GUI組件都應該在我們的筆控制下(我們應該編寫而不是IDE)的用戶來說,這是最好的選擇。一個好的java開發人員應該花時間在gui對象和業務對象上,並且必須知道如何區分它們。 L.Sankaranarayanan。