我的代码:
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?
答案 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可以做到这一点,但使用起来要复杂得多。