2011-01-08 44 views
5

使用Swing,縮進複選框或單選按鈕下的某些組件的最佳方式是什麼?我需要做一些Firefox 3.6的Options-> Privacy對話框,其中一些複選框在「main」複選框下縮進。我可以使用任何標準的AWT/Swing佈局,包括GroupLayout。我也有JGoodies FormLayout提供給我。我首先嚐試在FormLayout中使用setLeadingColumn偏移量,但它似乎不能很好地工作,除非我在分隔符下進行縮進。也許我只是做錯了?如何使用Java Swing佈局巧妙地縮進某些組件

有什麼像SWT GridLayout的horizo​​ntalIndent設置?那將是完美的。

我正在使用JDK1.6.0_23。

回答

2

有幾種方法可以做到這一點:

  1. 設置每個組件邊框:new EmptyBorder (0, 10, 0, 0)

  2. 使用GridBagLayout並使用Inset (0, 10, 0, 0)填充左側。

  3. 使用GridBagLayout並且主複選框跨兩列,而子複選框通過將它們放在最右邊的列中進行偏移。

  4. 提供自定義複選框圖標,在其左手邊上添加了一些空白空間。

我的建議是學習GridBagLayout - 它是有點笨拙使用,但它確實給你幾乎所有你能想到的佈局能力。 JGoodies的東西對於當你想要特定的自動列大小行爲是有用的,GBL不會給你一些額外的代碼。

0

你應該可以用FormLayout完成這項工作,只需爲子項目添加另一列,並讓主項目跨度爲2列。

3

爲子組件創建一個JPanel。然後,您可以添加一個EmptyBorder到具有所需縮進的面板。

+0

比`GridBagLayout`更簡單的修復方式,它不會像'EmptyBorder`那樣混亂焦點指示器。 – 2rs2ts 2014-04-09 18:49:10

0

另一種選擇是使用SpringLayout並添加填充。