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