ホームページ >Java >&#&チュートリアル >フレームのサイズ変更への応答性を維持しながら、Swing の GroupLayout で JLabel 幅を制限するにはどうすればよいですか?
Swing GroupLayout でのコンポーネント サイズの変更と制限
Swing の GroupLayout は、複雑なユーザー インターフェイスに柔軟なレイアウト管理を提供します。ただし、動的なサイズ変更を扱う場合、GroupLayout 内でコンポーネントのサイズを制御するのは困難になる場合があります。この記事では、フレーム サイズの変更に対する応答性を維持しながら、GroupLayout 内のコンポーネント ラベルの最大幅を制限する解決策を紹介します。
問題
GroupLayout を検討してください。水平レイアウトの場合は並列グループ、垂直レイアウトの場合は順次グループです。
*-----------------------------------------------* | label A | field A | | label B | field B | | label C | field C | *-----------------------------------------------*
タスクは、制限することです。ラベル (JLabel のインスタンス) の幅をフレームの幅の 3 分の 1 にします。フレームのサイズは変更できます。
解決策
1.優先サイズに依存する
手動でサイズ制約を設定する代わりに、GroupLayout はラベルの優先サイズを利用できます。ラベルには、テキストの内容に適応するデフォルトの推奨サイズがあります。デフォルトでは、GroupLayout はコンポーネントのサイズ変更動作においてこれらの推奨サイズを尊重します。
2. GroupLayout Alignment
ラベルを右揃えにするには、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 中国語 Web サイトの他の関連記事を参照してください。