コンポーネントが縮小するか拡大するかに応じて、利用可能な合計スペースをコンポーネントで分割するようにしたいと考えています。これは動的に発生する必要があります。画面に追加されたコンポーネントの量に関する情報はありません。コンポーネントは、そのプロパティに応じて、高さを維持するか、大きくする必要があります。
+++++++++++++++++++++++++++++++++
| +-----------------------+ |
| | 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 番目のテキスト フィールドは、すべての「余分な」スペースを取る必要があります。