ホームページ >Java >&#&チュートリアル >Swing の GroupLayout は、動的に生成されたフォームのコンポーネントのサイズ変更とサイズ制限を効果的に管理するにはどうすればよいですか?
Swing GroupLayout: コンポーネントのサイズ変更と制限の管理
Swing では、GroupLayout はコンポーネントのレイアウトを管理するための堅牢なメカニズムを提供します。ただし、動的コンテンツと応答性の高いレイアウトを扱う場合は、コンポーネントのサイズ変更と制限を制御する必要があります。
動的に生成されたいくつかのデータ入力フォームが、次のようなレイアウトで GroupLayout を使用するシナリオを考えてみましょう。
*-----------------------------------------------* | label A | field A | | label B | field B | | label C | field C | *-----------------------------------------------*
ラベル (JLabel インスタンス) の最大幅を親フレームの幅の特定の部分に制限するには、 ComponentListener:
public void componentResized(ComponentEvent e) { int maxW = parentFrame.getWidth() / 3; for (JLabel l : labels) { l.setMaximumSize( // have also tried setSize() and setPreferredSize() new Dimension( Math.min(l.getSize().width, maxW), l.getMaximumSize().height)); } groupLayout.invalidateLayout(getContentSpace()); }
ただし、このアプローチでは望ましい結果が得られない可能性があります。
提案された解決策: GroupLayout の優先サイズを活用する
GroupLayout は、の推奨サイズに依存する、より洗練されたソリューションラベル:
public class GroupPanel extends JPanel { // ... // Create a GroupLayout and set group constraints GroupLayout layout = new GroupLayout(this); this.setLayout(layout); layout.setAutoCreateGaps(true); layout.setAutoCreateContainerGaps(true); 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)) ); layout.setVerticalGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(label1) .addComponent(field1)) .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(label2) .addComponent(field2)) .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(label3) .addComponent(field3)) ); // ... }
このアプローチの利点:
優先サイズ メカニズムを利用することで、GroupLayout はコンポーネントを管理するためのシンプルかつ効果的な方法を提供します。動的に生成されたデータ入力フォームのサイズ変更と制限。
以上がSwing の GroupLayout は、動的に生成されたフォームのコンポーネントのサイズ変更とサイズ制限を効果的に管理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。