я хочу разделить текстовые поля на отдельные строки
import java.awt.*;
import javax.swing.*;
class MainClass {
JTextField name;
// This should be a JPasswordField!
JTextField pass;
JButton submit;
MainClass(){
JFrame main = new JFrame("Login Form ");
// Don't use this nonsense!
//main.setBounds(350,150,500,500);
main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
name = new JTextField(10);
pass = new JTextField(10);
main.setLayout(new GridLayout(0,1));
JPanel pane = new JPanel(new GridLayout(0,1));
main.add(pane);
pane.add(new JLabel("Username: "));
pane.add(name);
pane.add(new JLabel("Password: "));
pane.add(pass);
submit = new JButton("Submit");
pane.add(submit);
//submit.addActionListener(new Handler());
main.pack();
main.setVisible(true);
}
public static void main(String[] args) {
MainClass mc = new MainClass();
}
}
Если бы я создавал экран входа в систему, его можно было бы расположить более точно по этим направлениям (с метками справа, а кнопка на его собственной панели - слева как упражнение для читателя).
import java.awt.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
class MainClass {
JTextField name;
JPasswordField pass;
JButton submit;
MainClass(){
JFrame main = new JFrame("Login Form ");
main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
name = new JTextField(10);
pass = new JPasswordField(10);
JPanel gui = new JPanel(new BorderLayout(3,3));
gui.setBorder(new EmptyBorder(5,5,5,5));
main.setContentPane(gui);
JPanel labels = new JPanel(new GridLayout(0,1));
JPanel controls = new JPanel(new GridLayout(0,1));
gui.add(labels, BorderLayout.WEST);
gui.add(controls, BorderLayout.CENTER);
labels.add(new JLabel("Username: "));
controls.add(name);
labels.add(new JLabel("Password: "));
controls.add(pass);
submit = new JButton("Submit");
gui.add(submit, BorderLayout.SOUTH);
main.pack();
main.setVisible(true);
}
public static void main(String[] args) {
MainClass mc = new MainClass();
}
}