У меня есть jframe, когда я использую

setLocationRelativeTo(null);

JFrame не отображается в середине окна, поэтому мой полный код -

JFrame ca = new JFrame("Start");
ca.setUndecorated(true);
ca.setLocationRelativeTo(null);
JLabel lab = new JLabel("   Space Invaders");
JButton bu = new JButton("START");
JButton bu2 = new JButton("QUIT");
lab.setFont(new Font("Serif Italic", Font.BOLD, 60));
lab.setForeground(Color.RED);
bu.setForeground(Color.WHITE);
bu.setBackground(Color.BLACK);
bu.setFont(new Font("serif", Font.BOLD, 50));
bu.setBorderPainted(false);
bu2.setForeground(Color.WHITE);
bu2.setBackground(Color.BLACK);
bu2.setFont(new Font("serif", Font.BOLD, 50));
bu2.setBorderPainted(false);

Мой результат - введите описание изображения здесь

0
Yeshwin Verma The Programmer 14 Окт 2020 в 19:19

1 ответ

Лучший ответ
setLocationRelativeTo(null);

Должен быть вызван ПОСЛЕ того, как вы добавили компоненты во фрейм и вызвали pack() в фрейме, в противном случае фрейм имеет размер (0, 0), поэтому его нельзя будет правильно центрировать.

Редактировать:

JFrame frame = new JFrame(...);
frame.add(someComponent);
frame.add(anotherComponent);
frame.pack(); // now the frame width/height is greater than 0.
frame.setLocationRelativeTo( null );
frame.setVisible( true );
1
camickr 14 Окт 2020 в 16:28