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 的这个位置,使其为 2,7 而不是 1,2?

4

3 回答 3

5

Try adding empty components into the positions before 2,7 , something like:

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 网格约束来定位你的组件......这是来自 java 的教程: http : //download.oracle.com/javase/tutorial/uiswing/layout/gridbag.html据我所知,您不能使用网格布局直接将组件放置在您想要的任何位置(@Paŭlo Ebermann 提到了同样的事情)

于 2011-08-02T01:53:55.647 回答
1

GridLayout 将始终按照它们在容器中的顺序对容器的组件进行排序。除了在之前的所有位置插入虚拟组件外,您不能将组件放置在特定位置。

您可能想尝试其他布局管理器。GridBagLayout 可以做到这一点,但使用起来相当复杂。

于 2011-08-02T01:46:36.987 回答