我正在尝试使用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);
}
答案 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.putConstraint()
放置在中心位置,就像在角落里一样。