如何在网格布局中设置按钮的位置?

时间:2011-08-02 01:21:11

标签: java swing grid-layout

我的代码:

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?

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:2)

似乎你最好使用GridBag布局,并使用gridx gridy约束来定位你的组件......这是一个来自java的教程:http://download.oracle.com/javase/tutorial/uiswing/layout/gridbag.html  据我所知,你无法使用网格布局直接将组件放在任何地方(@PaŭloEbermann提到同样的事情)

答案 2 :(得分:1)

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

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