Java 基本图形用户界面示例

标签 java swing layout jbutton layout-manager

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

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

enter image description here

最佳答案

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

很多人都被困住的一件事是试图在单个容器上布置组件。这是可以做到的,但需要花费大量时间和调整才能恰到好处。

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

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

例如,在您的问题中,您要求单词和文本字段对齐在一起,但它们锚定在容器的北部位置,按钮应在南部,但在标签之间居中和领域。

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

enter image description here

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);    
        }        
    }
}

看一看;

关于Java 基本图形用户界面示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12867734/

相关文章:

jquery - 开发网站时如何处理不同的屏幕分辨率/屏幕尺寸?

wpf - 如何保持WPF元素在背景图像上的相对位置

java - 现代的 javadeps 等价物?

java - 如何更改java中标签之间的内容?

java - Hibernate validator 实现

Java GUI 空白和空指针异常

java - 是否值得创建自定义注释来表明方法只是有助于提高可读性?

java - 如何修改不同窗体上的控件?

java - HTML 页面未显示在 Java Swing JTextPane 中

javascript - GWT 计算一个 div 中的行数