在 Swing GroupLayout 中調整元件大小和限制元件大小
Swing 的 GroupLayout 為複雜的使用者介面提供靈活的佈局管理。然而,在處理動態調整大小時,控制 GroupLayout 內的元件大小可能具有挑戰性。本文將提出一種解決方案,限制 GroupLayout 中元件標籤的最大寬度,同時保持其對幀大小變化的反應能力。
問題
考慮使用GroupLayout水平佈局的並行組和垂直佈局的順序組,如下:
*-----------------------------------------------* | label A | field A | | label B | field B | | label C | field C | *-----------------------------------------------*
任務是限制標籤的寬度(JLabel 的實例)為框架寬度的三分之一,同時框架可以調整大小。
解決方案
1.依賴首選尺寸
GroupLayout 可以利用標籤的首選尺寸,而不是手動設定尺寸約束。標籤具有適合其文字內容的預設首選尺寸。預設情況下,GroupLayout 在元件調整大小行為時遵循這些首選大小。
2. GroupLayout 對齊
要右對齊標籤,可以使用GroupLayout.Alignment.TRAILING:
layout.setHorizontalGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING) .addComponent(label1) .addComponent(label2) .addComponent(label3)) .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) .addComponent(field1) .addComponent(field2) .addComponent(field3)) );
3.範例程式碼
以下程式碼示範了此解決方案的實作:
public class GroupPanel extends JPanel { private JLabel label1 = new JLabel("Primary:"); private JTextField field1 = new JTextField(16); private JLabel label2 = new JLabel("Secondary:"); private JTextField field2 = new JTextField(16); private JLabel label3 = new JLabel("Tertiary:"); private JTextField field3 = new JTextField(16); public GroupPanel(int n) {
以上是如何限制 Swing 的 GroupLayout 中的 JLabel 寬度,同時保持對幀大小調整的反應能力?的詳細內容。更多資訊請關注PHP中文網其他相關文章!