gpt4 book ai didi

java - 如何将组件与 SpringLayout 居中对齐

转载 作者:行者123 更新时间:2023-11-29 10:14:31 25 4
gpt4 key购买 nike

我正在尝试使用 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);
}

最佳答案

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

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

关于java - 如何将组件与 SpringLayout 居中对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21622148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com