1

GridBagLayoutのセルサイズ(高さ/幅)を制限することは可能ですか?

つまり、同じ重みx = 0.5の2つの行がありますが、サイズを変更するときに、最初の行が300ピクセルを超えないようにします。

また、300より小さい場合は、使用可能なスペースを使用しないようにします(weightxを0に設定します)。セル内のコンポーネントの最大サイズを設定しても意味がありません。サイズを変更すると、使用可能なすべてのスペースがコンポーネントで埋められるためです(コンポーネントはセルを埋めるためにサイズ変更されます)。

4

1 に答える 1

2

私の知る限り、GridBagLayoutでは実行できません。幸いなことに、選択肢があります。MiGLayoutと同様に機能しGridBagLayoutますが、より強力で表現力豊かです。また、セルベースであり、セルおよびセルの行/列の最小、優先、および最大サイズを設定できます。

これは私の好みでは行の制約に大きく依存しており、必要なものに関するいくつかの仮定に基づいているため、独自のソリューションを検討することをお勧めしますが、次に例を示します。

JPanel panel = new JPanel(new MigLayout("flowy, fillx, filly", "[fill, grow]", "[fill, 0:100:300][fill, 0:100:max(100%,300)]"));
JPanel redPanel = new JPanel();
redPanel.setBackground(Color.RED);
JPanel bluePanel = new JPanel();
bluePanel.setBackground(Color.BLUE);

panel.add(redPanel);
panel.add(bluePanel);

JFrame frame = new JFrame();
frame.add(panel);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
于 2012-08-29T12:32:51.200 に答える