4

MigLayout でフォームを作成しようとしています。テキスト フィールドの前に小さな JLabel を付けて、スペースが空くにつれてテキスト フィールドが大きくなるようにしたいと考えています。次のコードでこれを正常に実行できます。

JFrame frame = new JFrame("Test");
JPanel panel = new JPanel(new MigLayout("", "fill", ""));
panel.add(new JLabel("Testing"));
panel.add(new JTextField(), "growx, pushx, wrap");
frame.setContentPane(panel);
frame.pack();
frame.setMinimumSize(new Dimension(400, 100));
frame.setPreferredSize(new Dimension(400, 100));
frame.setVisible(true);

結果は次のようになります。これは予想どおりです (JLabel は必要最小限のサイズであり、JTextField は残りの領域を占有します)。

ここに画像の説明を入力

ただし、この下に JEditorPane を配置して、ウィンドウ全体の長さにまたがると、ウィンドウを拡大すると JLabel が大きくなり、大きくなります。コードの変更は次のようになります。

...
panel.add(new JTextField(), "growx, pushx, wrap");
//New line of code here:
panel.add(new JEditorPane(), "growx, pushx, span");
frame.setContentPane(panel);
...

これにより、予期しない結果が生じます (JLabel が大きくなりました)。

ここに画像の説明を入力

"growx 0"やなどの JLabel の MigLayout パラメータを追加して、これを修正しようとしました"shrink"が、これはラベルのサイズに影響を与えないようです。

このような状況で JLabels が成長しないようにするにはどうすればよいですか?

4

1 に答える 1