Я работаю над макетом для простого экрана входа. Я использую GridLayout для того, чтобы манипулировать элементы, но наткнулся на вопрос, она занимает всю ширину кадра, как это:Как исправить JPanel с сеткой, которая занимает полную ширину рамки?
Где, как я хочу быть с фиксированным положением и шириной, высотой и быть вертикально, горизонтально центрироваться внутри рамки, но не занимать его в полном размере. Возможно, метки для имени пользователя и пароля занимают меньше места, поэтому текстовые поля на самом деле ближе к ним. Я попытался установить основной размер моей панели, например .setMaximumSize(Dimension (200, 150));
Но это не работает.
//Create the frame.
JFrame frame = new JFrame("Online Shop");
JPanel mainPanel = new JPanel();
JPanel usernamePanel = new JPanel();
JPanel passwordPanel = new JPanel();
JPanel buttonPanel = new JPanel();
JButton loginButton = new JButton("Login");
loginButton.setMaximumSize(new Dimension(100, 50));
JTextField username = new JTextField();
JLabel usernameLabel = new JLabel("Username");
JPasswordField password = new JPasswordField();
JLabel passwordLabel = new JLabel("Password");
//Panel
frame.setContentPane(mainPanel);
usernamePanel.setLayout(new GridLayout(1,2));
usernamePanel.add(usernameLabel);
usernamePanel.add(username);
passwordPanel.setLayout(new GridLayout(1,2));
passwordPanel.add(passwordLabel);
passwordPanel.add(password);
mainPanel.setLayout(new GridLayout(3, 1));
mainPanel.add(usernamePanel);
mainPanel.add(passwordPanel);
mainPanel.add(loginButton);
//Event Listeners
frame.addWindowListener(new MyWindowListener());
loginButton.addActionListener(new MyActionListener());
//Sizes, Positioning
frame.setSize(720, 480);
frame.setLocationRelativeTo(null);
//Show Frame
frame.setVisible(true);
Обратите внимание, что экран входа в систему, используя только 'GridLayout' будет * всегда * выглядеть как мусор. Обычно я использовал сложный макет или «GroupLayout» для таких вещей. Также согласитесь с обоими camickr & trashgod, что явно задание размеров - очень плохая идея. См. [Я должен избегать использования методов Set (Preferred | Maximum | Minimum) в Java Swing?] (Http://stackoverflow.com/q/7229226/418556) (Да.) –