当前位置: 首页 > 知识库问答 >
问题:

如何将零部件与SpringLayout居中对齐

巫煌
2023-03-14

我试图用Swing在Java中创建一个表单,但我在管理布局方面遇到了困难。

我想在对话框的中心有几个带标签的文本字段,在右下角有“保存”和“关闭”按钮。

将按钮添加到对话框右下角很简单,但我不确定如何将文本字段居中对齐。我想,如果没有中心组件方法,那么我可能可以通过计算对话框窗口的中心,然后在对话框重新调整大小时更新位置来对齐字段。但我对swing还不熟悉,我不知道该怎么做(或者这是否是个好主意)。

如何使用Spring布局管理器将组件居中对齐?

public class Main {
    public static void main(String args[]) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                MyFrame myFrame = new MyFrame();
                myFrame.setVisible(true);
            }
        });
    }
}

这是框架的外观:

public class MyFrame extends JFrame {

    JLabel label1;
    JTextField field1;

    JLabel label2;
    JTextField field2;

    JButton saveButton;
    JButton closeButton;

    public MyFrame() {
        initLookAndFeel();
        initFrameProperties();
        initContent();
        initLayout();
    }

    private initContent() {
        label1= new JLabel("Label 1");
        field1= new JTextField();
        label1.setLabelFor(field1);

        label2= new JLabel("Label 2");
        field2= new JTextField();
        label2.setLabelFor(field2);

        saveButton = new JButton("Save");

        closeButton = new JButton("Close");
        closeButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent event) {
                System.exit(0);
            }
        });


        this.add(label1);
        this.add(field1);
        this.add(lebel2);
        this.add(field2);
        this.add(saveButton);
        this.add(closeButton);
    }

    private void initLayout() {
        SpringLayout layout = new SpringLayout();

        this.setLayout(layout);
    }

共有2个答案

白烨煜
2023-03-14
  • SpringLayout。NORTH指定组件的边框的上边缘

(如何使用SpringLayout)

使用相同的springLayout.putConstraint()放置在中心,就像在角落一样。

东门仲卿
2023-03-14

您可以通过添加将组件的水平中心设置为与内容窗格的水平中心相同的约束来居中对齐组件。这将在窗口调整大小时自动更新组件位置。

SpringLayout layout = new SpringLayout();

// For Horizontal Alignment    
layout.putConstraint(SpringLayout.HORIZONTAL_CENTER, component, 0, SpringLayout.HORIZONTAL_CENTER, contentPane);

// For Vertical Alignment
layout.putConstraint(SpringLayout.VERTICAL_CENTER, component, 0, SpringLayout.VERTICAL_CENTER, contentPane);

setLayout(layout);
 类似资料:
  • 问题内容: 我使用引导程序,并试图像这样将div(span7)居中: 我的CSS代码是: 但这并不是中心。如何设置中心? 编辑 现在在Bootstrap 4中 问题答案: Twitter的引导程序类浮动在左侧,因此它们不会以通常的方式居中。因此,如果您希望它居中,只需将其添加到规则中即可。 CSS

  • 在这个页面上,有一些员工的照片。 在肖像模式的iPad上,员工照片在右手边被切断。 我不介意他们被切断,但我希望他们对齐中心,而不是左对齐。 注意,我希望图像的尺寸是相同的,只是对齐向左移动,变成中心,这样脸就显示在图像边界的中间。 我尝试了以下解决这个问题的方法: 和 和 但这些都不起作用。

  • 不知道如何将此按钮居中。在BS3中,我只使用中心块,但在BS4中,这不是一个选项。有什么建议吗?

  • 问题内容: 说我有以下CSS和HTML代码: 标头部分的高度固定,但是标头内容可能会更改。 我希望标题的内容与标题部分的底部垂直对齐,因此文本的最后一行“粘贴”到标题部分的底部。 因此,如果只有一行文本,则将是: 如果有三行: 如何在CSS中完成此操作? 问题答案: 相对+绝对定位是您最好的选择: 但是您可能会遇到问题。当我尝试它时,在内容下方显示下拉菜单时出现问题。只是不漂亮。 坦白地说,对于垂

  • 问题内容: 我正在尝试制作一个小的用户名和密码输入框。 我想问一下,如何垂直对齐div? 我所拥有的是: 如何使ID为Username和Form的div垂直对齐中心?我试着把: 在CSS中用于ID为Login的div,但似乎不起作用。任何帮助,将不胜感激。 问题答案: 现代浏览器中最好的方法是使用flexbox: 某些浏览器将需要供应商前缀。对于不支持Flexbox的较旧的浏览器(例如IE9及更低

  • 问题内容: 如何在ReactNative中水平和垂直居中放置文本? 我在rnplay.org中有一个示例应用程序,其中 justifyContent =“ center” 和 alignItems =“ center” 不起作用:https : **//rnplay.org/apps/AoxNKQ** 文本应居中。为什么在文本(黄色)和父容器之间的顶部留有空白? 码: 问题答案: 从‘样式删除,和