1

JPanelのGridLayoutがセルを完全に埋めて、コンポーネントのsetSizeを無視しないようにしようとしています。

私はこのコードを使用しています:

import javax.swing.*;
import java.awt.*;

public class GrideComponents{
  public static void main(String[] args) {
    JFrame frame = new JFrame("Laying Out Components in a Grid");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel panel = new JPanel(new GridLayout(5,2,0,0));
    panel.add(new JLabel("Enter name"));
    JTextField a = new JTextField(5);
    a.setSize(10, 10);
    panel.add(a);
    panel.add(new JLabel("Enter Roll"));
    panel.add(new JTextField(3));
    panel.add(new JLabel("Enter Class"));
    panel.add(new JTextField(3));
    panel.add(new JLabel("Enter Total Marks"));
    panel.add(new JTextField(3));
    panel.add(new JButton("Ok"));
    panel.add(new JButton("Cancel"));
    frame.add(panel);
    frame.setSize(400,400);
    frame.setVisible(true);
  }
}

そして、すべてのコンポーネントは、指定されたサイズではなく、グリスセルを埋めています。

ありがとう

4

4 に答える 4

1

setMaximumSizeとsetPreferredSizeを設定してみましたか?

いずれにせよ、すべてのレイアウトのニーズに合わせてMiGLayoutを試すことをお勧めします。シンプルさに驚かれることでしょう!

于 2010-11-06T11:49:42.060 に答える
1

GridLayoutの要点は、コンポーネントを通常のグリッドにレイアウトすることです。通話setSizeはレイアウトマネージャーによって上書きされます。おそらくsetPreferredSizeまたsetMaximumSizeはうまくいくかもしれませんが、それらを考慮に入れるかどうかを決定するのはレイアウトマネージャー次第です。

于 2010-11-06T11:57:32.157 に答える
1

レイアウトマネージャーの使用に関するSwingチュートリアルを読んで、レイアウトマネージャーの動作の基本を理解してください。

GridLayoutは、すべてのコンポーネントのサイズを同じサイズに変更します。

フォームを作成するときは、通常、さまざまなレイアウトマネージャーを使用してさまざまなパネルをネストし、目的の効果を得ることができます。

この場合、ボタンにFlowLayoutを使用できます。次に、他のコンポーネントにGridBagLayoutまたはSpringLayoutを使用できます。

于 2010-11-06T15:35:08.137 に答える
0

BoxLayoutこの例に見られるように、はこのコンテキストで有用な代替手段です。

于 2010-11-06T18:46:37.503 に答える