@CheshKin

Как избавиться от мерцания при открытии окна Java?

Открывающийся фрейм надоедает своим мерцанием, когда выравнивается по центру. Вот код простой программы.

Main.java
import javax.swing.*;

public class Main extends JFrame {

    public static void main(String[] args) {
        JFrame frame = new JFrame("Тест фрейма");
        frame.add(new MainMenu());
        frame.setSize(600, 400);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        frame.setResizable(false); 
        frame.setLocationRelativeTo(null); //из-за него мерцает???
    }


Дальше он открывает окно, оно появляется на миллисекунду в левом верхнем углу, а потом перемещает в центр!
  • Вопрос задан
  • 375 просмотров
Решения вопроса 1
Rodgenk
@Rodgenk
Главная ошибка состоит в том, что весь ваш код нужно обернуть:
SwingUtilities.invokeLater(new Runnable() {
// TODO
})

Почитайте про EventDispatchThread в Swing'e.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Applez
@Applez
Разраб
И можно попробовать setDoubleBuffered(true);
Но запускать окно, конечно, надо в потоке обработки интерфейса.
Ответ написан
Комментировать
@jkotkot
режим сарказма
Нужно переместить setVisible в самый конец.
А еще там есть бага в JDK про мерцание в свинге. Но так вы его хотя бы минимизируете.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы