Java - 如何让组件水平居中,垂直堆叠?

Java - How to center components horizontally, and stack them vertically?

我正在编写一个应用程序,它将获取用户信息,例如姓名、电子邮件、密码。为了获取用户信息,我正在使用 JTextFields。我想让所有组件垂直和水平地位于屏幕中央,并且还让组件一个接一个地堆叠在一起,如下所示:Expected Design

就像您在网站上看到的那样。目前我在 JFrame 中使用 JPanel,JPanel 有一个带有 BoxLayout.Y_AXIS 的 BoxLayout。这是我的代码:

public class RegisterLayout extends Layout {

    @Override
    public void init() {
        this.setBackground(Utilities.babyBlueish);
        this.setBorder(BorderFactory.createTitledBorder("Register Now!"));
        this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
    }

    @Override
    public void addComponents() {
        
        JTextField fName = new JTextField("Enter Your Full Name");
        fName = Utilities.designTextField(fName);
        
        JButton submit = new JButton("Submit");
        submit = Utilities.designButton(submit);
        submit.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                
            }
            
        });
        
        this.add(fName);
        this.add(submit);
    }

}

将 JPanel 添加到 JFrame 的内容窗格时,将调用 init() 和 addComponents()。 “RegisterLayout 扩展布局”和“布局扩展 JPanel”。目前,我的程序代码如下所示:Current Design。如您所见,JTextField 与屏幕水平偏离中心,并且作为一个整体,它没有垂直居中。

如果有人能提供帮助,我将不胜感激。如果您需要更多详细信息,请告诉我。

可以通过多种方式对该布局进行编码。这是一种方式。

将 GUI 的各个部分分解为逻辑单元,'a column of text fields'、'an area for form controls' 等,然后为每个单元提供一个具有合适布局的容器。

在此 GUI 模型中:

  • 紫色区域有边框布局,两个绿色区域出现在中心和页尾约束中。
  • 顶部的第一个绿色区域将是一个网格包布局,用于居中(水平和垂直)..
  • 文本字段的单列网格布局,橙色边框。
  • 第二个绿色边框区域可以是另一个网格包布局,或者如果只需要水平居中,则可以是流式布局。

可以将合适的边框(例如,不可见的空边框)应用于白色容器 space。