【问题标题】:How do you set the position of button in grid layout?如何在网格布局中设置按钮的位置?
【发布时间】:2011-08-02 01:21:11
【问题描述】:

我的代码:

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?

【问题讨论】:

  • 用 Java 和 Swing 重新标记。

标签: java swing grid-layout


【解决方案1】:

尝试在 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);

【讨论】:

  • 这是 Un-Visible JComponents 的基本内容 +1
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-07-25
      • 1970-01-01
      • 2011-11-10
      • 1970-01-01
      • 2022-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-03
      相关资源
      最近更新 更多