Я пытаюсь создать форму в Swing.Как можно центрировать выравнивание группы компонентов с помощью диспетчера макетов Swing весной
Форма должна выглядеть примерно так:
____________________________________
|___________________________________X|
| |
| ________________ |
| label1 [________________] |
| ________________ |
| label2 [________________] |
| |
| |
| [Save] [Close] |
|____________________________________|
Но у меня возникают проблемы, совместив центр текстовые поля по вертикали.
Ниже приведен код для открытия кадра:
public class Main {
public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
LayoutTest test = new LayoutTest();
test.setVisible(true);
}
});
}
}
Вот код для парафирования поля и создания макета:
public class LayoutTest {
private JFrame testFrame;
JLabel label1;
JTextField field1;
JLabel label2;
JTextField field2;
JButton saveButton;
JButton closeButton;
public LayoutTest() {
testFrame = new JFrame();
initProperties();
initContent();
initLayout();
}
private void initProperties() {
testFrame.setTitle("Test");
testFrame.setSize(1000, 800);
testFrame.setLocationRelativeTo(null);
testFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
private void initContent() {
label1= new JLabel("Label 1");
field1= new JTextField(25);
label1.setLabelFor(field1);
label2= new JLabel("Label 2");
field2= new JTextField(25);
label2.setLabelFor(field2);
saveButton = new JButton("Save");
closeButton = new JButton("Close");
closeButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
System.exit(0);
}
});
testFrame.add(label1);
testFrame.add(field1);
testFrame.add(label2);
testFrame.add(field2);
testFrame.add(saveButton);
testFrame.add(closeButton);
}
private void initLayout() {
SpringLayout layout = new SpringLayout();
layout.putConstraint(SpringLayout.NORTH, label1, 10, SpringLayout.NORTH, testFrame.getContentPane());
layout.putConstraint(SpringLayout.EAST, label1, -5, SpringLayout.WEST, field1);
layout.putConstraint(SpringLayout.NORTH, field1, 10, SpringLayout.NORTH, testFrame.getContentPane());
layout.putConstraint(SpringLayout.HORIZONTAL_CENTER, field1, -10, SpringLayout.HORIZONTAL_CENTER, testFrame.getContentPane());
layout.putConstraint(SpringLayout.NORTH, label2, 10, SpringLayout.SOUTH, label1);
layout.putConstraint(SpringLayout.EAST, label2, -5, SpringLayout.WEST, field2);
layout.putConstraint(SpringLayout.NORTH, field2, 5, SpringLayout.SOUTH, field1);
layout.putConstraint(SpringLayout.HORIZONTAL_CENTER, field2, -10, SpringLayout.HORIZONTAL_CENTER, testFrame.getContentPane());
layout.putConstraint(SpringLayout.SOUTH, closeButton, -20, SpringLayout.SOUTH, testFrame.getContentPane());
layout.putConstraint(SpringLayout.EAST, closeButton, -20, SpringLayout.EAST, testFrame.getContentPane());
layout.putConstraint(SpringLayout.SOUTH, saveButton, -20, SpringLayout.SOUTH, testFrame.getContentPane());
layout.putConstraint(SpringLayout.EAST, saveButton, -10, SpringLayout.WEST, closeButton);
testFrame.setLayout(layout);
}
public void setVisible(boolean visible) {
testFrame.setVisible(visible);
}
}
Я пытался добавить поля к и затем используйте SpringLayout.VERTICAL_CENTER
на панели, но ничего не появилось.
Как можно центрировать выравнивание полей в виде группы?
Вы должны использовать ' SpringLayout'? – MadProgrammer
Если вы можете предложить простой способ создать форму, мне нужно, не добавляя слишком много дополнительных компонентов (например, панелей и т. Д.), Тогда я с удовольствием переключился. «SpringLayout» представляется наиболее гибким, и это единственное, что мне не удалось сделать. –
SpringLayout (аналогично более поздней версии GroupLayout) был разработан для использования в сборщиках, а не вручную. Поэтому я бы инвестировал в изучение причуд какого-то другого менеджера, моим личным текущим предпочтением является MigLayout – kleopatra