Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将零部件与SpringLayout居中对齐_Java_Swing_Layout Manager_Springlayout - Fatal编程技术网

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

Java 如何将零部件与SpringLayout居中对齐,java,swing,layout-manager,springlayout,Java,Swing,Layout Manager,Springlayout,我试图用Swing在Java中创建一个表单,但在管理布局方面遇到了困难 我想在对话框的中心有几个带标签的文本字段,在右下角有“保存”和“关闭”按钮 将按钮添加到对话框的右下角很简单,但我不确定如何将文本字段居中对齐。我想,如果没有中心组件方法,那么我可能可以通过计算对话框窗口的中心,然后在对话框重新调整大小时更新位置来对齐字段。但我是个新手,我不知道该怎么做(或者这是否是个好主意) 如何使用Spring布局管理器将组件居中对齐 public class Main { public sta

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

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

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

如何使用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);
    }
  • SpringLayout.NORTH指定组件边框的上边缘
  • SpringLayout.SOUTH指定组件边界矩形的底边
  • SpringLayout.EAST指定组件边框的右边缘
  • SpringLayout.WEST指定组件边框的左边缘
  • SpringLayout.BASELINE指定组件的基线
  • SpringLayout.HORIZONTAL\u CENTER指定组件边框的水平中心
  • SpringLayout.VERTICAL\u CENTER指定组件边框的垂直中心
()

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

  • SpringLayout.NORTH指定组件边框的上边缘
  • SpringLayout.SOUTH指定组件边界矩形的底边
  • SpringLayout.EAST指定组件边框的右边缘
  • SpringLayout.WEST指定组件边框的左边缘
  • SpringLayout.BASELINE指定组件的基线
  • SpringLayout.HORIZONTAL\u CENTER指定组件边框的水平中心
  • SpringLayout.VERTICAL\u CENTER指定组件边框的垂直中心
()


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

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

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

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

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) 为了更快地获得更好的帮助,请发布一个(经过测试且可读性最低的完整示例)。2) 提供GUI的ASCII艺术(或带有简单图形的图像),因为它应该以最小的尺寸显示,并且(如果可以调整大小)具有额外的宽度/高度。@leigero请务必添加
@
符号,以通知用户新的注释。作为对你询问的回应,这是SSCCE试图传达的内容的简短版本,所以是的。此外,MCTaRE托管在Stack Exchange,而托管SSCCE文档的SSCCE.org域将在2月底永远消失。1)为了更快获得更好的帮助,请发布一个(最简单的完整测试和可读示例)。2) 提供GUI的ASCII艺术(或带有简单图形的图像),因为它应该以最小的尺寸显示,并且(如果可以调整大小)具有额外的宽度/高度。@leigero请务必添加
@
符号,以通知用户新的注释。作为对你询问的回应,这是SSCCE试图传达的内容的简短版本,所以是的。此外,MCTaRE托管在Stack Exchange,而托管SSCCE文档的SSCCE.org域将在2月底永远消失。我已经阅读了您链接/复制和粘贴的页面。我正在寻找一种方法,使文本字段居中对齐,并在使用Spring布局调整大小后保持居中。如果要我猜的话,我会说你建议我使用
SpringLayout.HORIZONTAL\u CENTER
像这样<代码>布局.putConstraint(SpringLayout.HORIZONTAL\u CENTER,myfield,0,SpringLayout.HORIZONTAL\u CENTER,this)我已经阅读了您链接/复制和粘贴的页面。我正在寻找一种方法,使文本字段居中对齐,并在使用Spring布局调整大小后保持居中。如果要我猜的话,我会说你建议我使用
SpringLayout.HORIZONTAL\u CENTER
像这样<代码>布局.putConstraint(SpringLayout.HORIZONTAL\u CENTER,myfield,0,SpringLayout.HORIZONTAL\u CENTER,this)