1

我是 Java 中 GUIS 的新手,我正在尝试创建一个类似于我附加的图像的 GUI,但有多个 JLabel 和 JTextField。我想让按钮位于屏幕底部的中心。

我该怎么做呢?请忽略黑线,因为我找不到更好的图像。

在此处输入图像描述

4

4 回答 4

6

有多种方法可以实现这一目标。对我来说,最简单的方法是使用GridBagLayout,它是所有内置布局管理器中最灵活的,也是最复杂的方法之一:P

很多人关注的一件事是尝试在单个容器上布局组件。这可以做到,但需要大量时间和调整才能做到恰到好处。

更好的方法(恕我直言)是使用多个子容器。

这使您可以将布局要求分解为个人需求,并将这些容器之间的关系作为一个单独的问题来担心。

例如,在您的问题中,您要求 word 和 text 字段对齐在一起,但它们被锚定到容器的北方位置,并且按钮应该在南方,但在标签和字段之间居中.

先担心标签和字段如何布局,然后再担心这些按钮和字段/标签之间的关系...

在此处输入图像描述

public class TestLayout08 {

    public static void main(String[] args) {
        new TestLayout08();
    }

    public TestLayout08() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException ex) {
                } catch (InstantiationException ex) {
                } catch (IllegalAccessException ex) {
                } catch (UnsupportedLookAndFeelException ex) {
                }

                JFrame frame = new JFrame();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new LayoutPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }

        });
    }

    protected  class LayoutPane extends JPanel {

        public LayoutPane() {
            JButton button = new JButton("Find Word");
            JLabel label = new JLabel("Word:");
            JTextField field = new JTextField(12);

            setLayout(new GridBagLayout());

            JPanel fieldPane = new JPanel(new GridBagLayout());

            GridBagConstraints gbc = new GridBagConstraints();
            gbc.gridx = 0;
            gbc.gridy = 0;
            gbc.insets = new Insets(2, 2, 2, 2);

            fieldPane.add(label, gbc);
            gbc.gridx++;
            fieldPane.add(field, gbc);

            gbc.gridx = 0;
            gbc.gridy = 0;
            gbc.anchor = GridBagConstraints.NORTH;
            gbc.weighty = 1;
            add(fieldPane, gbc);

            gbc.gridx = 0;
            gbc.gridy++;
            gbc.weighty = 0;
            gbc.anchor = GridBagConstraints.CENTER;

            add(button, gbc);    
        }        
    }
}

看一眼;

于 2012-10-12T22:17:14.550 回答
2

您至少有两个选择;

  • 使用您喜欢的 IDE 中的 GUI Builder,例如 NetBeans 和 Eclipse
  • 了解如何使用 Swing API。特别是,您将需要学习如何使用 LayoutManagers。在此特定示例中,您可能希望使用 BorderLayout、GridLayout 或 GridBagLayout 和 FlowLayout 的组合。
于 2012-10-12T22:20:37.710 回答
1

如果您更喜欢使用 Eclipse,有一个名为 WindowsBuilder Pro 的插件,您实际上可以直接在 Eclipse 中安装该插件。 https://developers.google.com/java-dev-tools/wbpro/

于 2012-10-12T22:16:55.513 回答
0

尝试使用 Netbeans。您可以拖放所有这些功能,然后只需编写按钮功能的代码即可。课程也会为您创建。

或者,我会从头开始,学习如何从头开始构建它,因为它是一个非常基本的 GUI。

http://thenewboston.org/tutorials.php

于 2012-10-12T22:10:58.910 回答