首頁 > Java > java教程 > 如何限制 Swing 的 GroupLayout 中的 JLabel 寬度,同時保持對幀大小調整的反應能力?

如何限制 Swing 的 GroupLayout 中的 JLabel 寬度,同時保持對幀大小調整的反應能力?

Susan Sarandon
發布: 2024-12-10 10:10:16
原創
390 人瀏覽過

How Can I Limit JLabel Width in Swing's GroupLayout While Maintaining Responsiveness to Frame Resizing?

在 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板