LocationRelativeTo (JAVA) не работает
Я часто использую:
setLocationRelativeTo(null);
В моем конструкторе JFrame, чтобы рамка появилась прямо посередине, но теперь это не работает. Это просто помещает JFrame в один угол.
Если у вас есть какое-либо представление о том, что это происходит, или если у вас теперь есть другой способ всегда отображать Jframe посередине на любом компьютере, пожалуйста, скажите мне.
Я сказал это, потому что я мог бы использовать
setLocation(x,y);
и просто поместите координаты, которые поместят Jframe в центр моего экрана, но, например, если мой компьютер имеет разрешение 1920 x 1080, Jframe не будет отображаться в центре на компьютере с разрешением 1280 x 720.
Если я не прав в этом, пожалуйста, поправьте меня, я новичок в Java, поэтому я могу пропустить много вещей, которые не пропустит Билл Гейтс. (У меня сейчас windows не закодирован в Java)
1 ответ
Для справки вот пример, который работает правильно; Вы можете сравнить это с вашим текущим подходом. Особенно,
Графические объекты Swing должны создаваться и обрабатываться только в потоке диспетчеризации событий.
Обязательно
pack()
вмещающий контейнер верхнего уровня.взывать
setVisible(true)
как последний шаг в создании графического интерфейса.
MCVE:
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
/** @see https://stackru.com/a/29643591/230513 */
public class Test {
private void display() {
JFrame f = new JFrame("Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new JLabel("Test", JLabel.CENTER));
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(() -> {
new Test().display();
});
}
}