2

コンポーネントが縮小するか拡大するかに応じて、利用可能な合計スペースをコンポーネントで分割するようにしたいと考えています。これは動的に発生する必要があります。画面に追加されたコンポーネントの量に関する情報はありません。コンポーネントは、そのプロパティに応じて、高さを維持するか、大きくする必要があります。

+++++++++++++++++++++++++++++++++
|   +-----------------------+   |
|   |       don't grow      |   |
|   +-----------------------+   |
|                               |
|   +-----------------------+   |
|   |                       |   |
|   |       growy           |   |
|   |                       |   |
|   +-----------------------+   |
|                               |
|   +-----------------------+   |
|   |       don't grow      |   |
|   +-----------------------+   |
|                               |
|   +-----------------------+   |
|   |       don't grow      |   |
|   +-----------------------+   |
|                               |
|   +-----------------------+   |
|   |                       |   |
|   |       growy           |   |
|   |                       |   |
|   +-----------------------+   |   
|                               |
|   +-----------------------+   |
|   |       don't grow      |   |
|   +-----------------------+   |
+++++++++++++++++++++++++++++++++

次の結果を作成できました。

ほぼそこに..しかし完全ではない

次のSSCCEが提供されます。

public class SimpleMain {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }

    private static void createAndShowGUI() {
        JFrame frame = new JFrame("MigLayout");

        JPanel panel =  new JPanel(new MigLayout("debug, flowy", "grow", "grow"));

        // 1st set of textfields
        panel.add(new JTextField(), "shrink, growx, top");
        panel.add(new JTextField(), "grow, top");
        panel.add(new JTextField(), "shrink, growx, top");

        // 2nd set of textfields
        panel.add(new JTextField(), "shrink, growx, top");
        panel.add(new JTextField(), "grow, top");
        panel.add(new JTextField(), "shrink, growx, top");

        frame.getContentPane().add(panel);

        frame.pack();
        frame.setVisible(true);
    } 

}

2 番目と 5 番目のテキスト フィールドは、期待どおりに大きくなります。コンテナは「縮小」せず、そのスペースを他のコンポーネントと分割するように処理されていますが、他のコンポーネントは予想どおりのサイズのままです。2 番目と 5 番目のテキスト フィールドは、すべての「余分な」スペースを取る必要があります。

4

1 に答える 1