2

私のコード:

public class Form {
    public static void main(String[] args) {
        Form form = new Form();
        form.go();
    }

    public void go() {
        JFrame form = new JFrame();
        GridLayout layout = new GridLayout(2,7);
        Label nameLabel = new Label("Name");
        form.setLayout(layout);
        JTextField nameBox = new JTextField();
        form.getContentPane().add(nameLabel);
        form.getContentPane().add(nameBox);
        form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        form.setSize(500,500);
        form.setVisible(true);
    }
}

では、JTextField のこの位置を 1,2 ではなく 2,7 に設定するにはどうすればよいでしょうか?

4

3 に答える 3

5

次のように、2、7より前の位置に空のコンポーネントを追加してみてください。

form.add(nameLabel);
form.add(new JPanel());
form.add(new JPanel());
form.add(new JPanel());
form.add(new JPanel());
form.add(new JPanel());
form.add(new JPanel());
form.add(new JPanel());
form.add(new JPanel());
form.add(new JPanel());
form.add(new JPanel());
form.add(new JPanel());
form.add(new JPanel());
form.add(nameBox);
于 2011-08-02T01:49:35.597 に答える
2

GridBag レイアウトを使用し、gridx gridy 制約を使用してコンポーネントを配置する方がよいようです... Java のチュートリアルは次のとおり です。グリッドレイアウトを使用してコンポーネントを好きな場所に直接配置できないことはわかっています(@Paŭlo Ebermannも同じことを述べています)。

于 2011-08-02T01:53:55.647 に答える
1

GridLayoutは常に、コンテナーのコンポーネントをコンテナー内にある順序でソートします。以前のすべての場所にダミーコンポーネントを挿入する以外に、特定の場所にコンポーネントを配置することはできません。

他のレイアウトマネージャーを試してみることをお勧めします。GridBagLayoutはこれを実行できますが、使用するのが非常に複雑です。

于 2011-08-02T01:46:36.987 に答える