AWTUtilities setWindowOpaque вызывает проблемы - PullRequest
2 голосов
/ 28 сентября 2011

У меня есть модальное JDialog, которое я установил непрозрачным с помощью вызова метода com.sun.awt.AWTUtilities, setWindowOpaque(this, false).

У меня возникают проблемы, когда я устанавливаю модальный JDialog не непрозрачным. Например, когда я нажимаю на кнопку в непрозрачном диалоговом окне, оно отображается правильно, но после нескольких открытий и закрытий диалогового окна оно открывается. Это не видно; и, так как это модально, мы не можем нажать на кнопку на родительской панели. Как будто он заморожен, но это только из-за модального диалога.

Если я уберу вызов метода setWindowOpaque(this, false), он будет работать без проблем.

Кто-нибудь знает, что происходит?

Я использую версию Java "1.6.0_26" в Windows XP.

Спасибо.

1 Ответ

1 голос
/ 02 декабря 2013

Хорошо, была похожая проблема, иногда окно не отвечало или прозрачность нарушалась ... странные проблемы.

Решением, по крайней мере для меня, был вызов new TransparentWindow() внутри invokeLater:

SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run() {
        TransparentWindow w = new TransparentWindow();
        w.setVisible(true);
    }
});

TransparentWindow - это расширение класса JWindow, которое использует com.sun.awt.AWTUtilities.setWindowOpaque(window,false); для создания прозрачного окна с закругленными прозрачными углами, как описано здесь: Мягкое отсечение и прозрачность на пиксель для окон Swing

...