如何将Component与SpringLayout对齐

时间:2014-02-07 07:51:12

标签: java swing layout-manager springlayout

我正在尝试使用Swing在Java中创建一个Form,而我在管理布局时遇到了困难。

我希望在对话框的中心有一些带有标签的文本字段,并在右下角有“保存”和“关闭”按钮。

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

如何使用Spring Layout Manager中心对齐我的组件?

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 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:3)

  • SpringLayout.NORTH指定组件边界矩形的上边缘。
  • SpringLayout.SOUTH指定组件边界矩形的下边缘。
  • SpringLayout.EAST指定组件边界矩形的右边缘。
  • SpringLayout.WEST指定组件边界矩形的左边缘。
  • SpringLayout.BASELINE指定组件的基线。
  • SpringLayout.HORIZONTAL_CENTER指定组件边界矩形的水平中心。
  • SpringLayout.VERTICAL_CENTER指定组件边界矩形的垂直中心。

How to Use SpringLayout

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