3

グリッドレイアウトのGUIを作成しています。JTextFields、JButtons、およびすべてを直接追加しました。たとえば、このように、

JButton b1 = new JButton("Hello"):
JButton b2 = new JButton("Bye");
JTextField t1 = new JTextField(10);
JTextField t2 = new JTextField(10);

GridLayout grid = new GridLayout(2,2,2,2);

JPanel panel = new JPanel();
panel.setLayout(grid);
panel.add(b1);
panel.add(t1);
panel.add(b2);
panel.add(t2);

ここでは、ユーザーがウィンドウのサイズを変更すると、すべてが非常に大きく表示されます。これらがこれらを取得するのを防ぐために私が知っている他の唯一の方法は、FlowLayoutを持つJPanelを分離するためにすべてを追加することです。しかし、それは実用的ではありません。20個ある場合、20個のJPanelが存在するからです。最大サイズ、最小サイズなどを設定してみましたが、何も変わりませんでした。助けてください。

4

3 に答える 3

5
  1. これはこのレイアウトマネージャーの基本機能であるため、プレーンなGridLayoutでは不可能です。

  2. 適切なレイアウトマネージャーGridBagLayoutまたは今日のMigLayoutを使用する

  3. 非常に簡単な方法は、SpringLayoutを使用することです

于 2012-06-08T17:38:52.230 に答える
2

@mKorbelと@Loganは答えにポイントがありますが、何らかの理由で本当に本当に本当にGridLayoutを使用する必要があり、JTextFieldを特定のサイズに保つ必要がある場合は、JTextFieldをJPanel内に配置することでこれを行うことができます。 BorderLayout。

JTextField fixedWidthField = new JTextField();
JPanel fieldPanel = new JPanel(new BorderLayout());
fieldPanel.add(fixedWidthField, BorderLayout.WEST);

GridLayout grid = new GridLayout(2,2,2,2);

JPanel panel = new JPanel();
panel.setLayout(grid);
panel.add(b1);
panel.add(fieldPanel);
panel.add(b2);
panel.add(t2);

より高度なレイアウトマネージャーを使用することをお勧めします。私は個人的にTableLayoutが好きですが、そのために追加のJarファイルをダウンロードする必要があります。

于 2012-06-08T17:55:51.353 に答える
0

これがgridLayoutのデフォルトの動作です。止めやすいかわかりません。代わりにgridBagLayoutを使用します。セルごとに塗りつぶしをnoneに設定できます。最初はもっと難しいですが、今はそれだけです。

于 2012-06-08T17:44:07.597 に答える