2010/02/04

Swing GroupLayout (介紹篇)

你知道GroupLayout嘛?


Swing裡有一個LayoutManager叫做「GroupLayout」這是JavaSE 6.0之後開始的新東西。
GroupLayout可以縱橫規則的配置元件。有點像GridLayout、但是卻不同GridLayout般的所有元件都是等距離擺置,而是能在指定的地方將必要的元件擺放的Layout。

為了要使用GroupLayout,在使用方法上有一些特定的步驟。
  1. 作成GroupLayout
  2. 作成分別管理水平方向和垂直方向的群組的GroupLayout.SequentialGroup。
  3. 為垂直用的GroupLayout.SequentialGroup作成GroupLayout.ParalleGroup來組合,元件類與這個GroupLayout.ParallelGroup來組合。

GroupLayout是GroupLayout.SequentialGroup和GroupLayout.ParallelGroup的組合來管理元件。
GroupLayout.SequentialGroup是複數群組的管理,而GroupLayout.ParallelGroup是複數的元件管理。

GroupLayout是使用垂直方向以及水平方向的群組來管理元件。例如這個3列 × 5行的元件排列情況,垂直方向的群組
是5個群組所組成的,每個群組自行管理自己的內部元件組成。同樣的,水平方向的有3個群組,每個群組也自行管理自己的
內部元件。

像這樣在垂直、水平方向上建立並設定群組,藉由這些群組為基本來將元件各自配置排列。要是能夠瞭解這個GroupLayout
的話,就能輕鬆做出有變化的縱橫配置Layout。

最單純的獨自並排方法


完全不使用Layout、而想要更自由的元件Layout的人也很多。setLayout(null)之後,將每個元件的位置和大小都各
自設定也是可能的。但是,例如視窗的大小變更時,元件也要跟著對應就變的很麻煩。

這時侯該怎麼辦呢?有人可能會說「作成自己的LayoutManager」,但是其實有更簡單的調整Layout的方法。
那就是ContainerListener和ComponentListener介面裡的方法。

Container在「元件被加入或是刪除時」「Container被resize(更改大小)時」需要重新再生Layout。這也就是說,利用
發生的事件來重新再生Layout就不需要使用LayoutManager了。

參考文章:http://codezine.jp/article/detail/1626?p=2

明天再來發實做篇。

No comments:

Post a Comment