java - AWTUtilities setWindowOpaque 导致问题

标签 java swing jdialog awtutilities

我有一个模态 JDialog,我通过调用 com.sun.awt.AWTUtilities 将其设置为非不透明的方法,setWindowOpaque(this, false)

当我将模态 JDialog 设置为非不透明时遇到问题。例如,当我单击一个非不透明对话框的按钮时,它会正确弹出,但在打开和关闭对话框几次后,它确实会打开。它是不可见的;而且,由于它是模态的,我们无法单击包含在父面板中的按钮。就像它被卡住了,但这只是因为模态对话框。

如果我删除对方法 setWindowOpaque(this, false) 的调用,它可以正常工作。

有人知道这是怎么回事吗?

我在 Windows XP 上使用 Java 版本“1.6.0_26”。

谢谢。

最佳答案

好吧,有一个类似的问题,有时窗口没有响应,或者透明度被破坏......奇怪的问题。

至少对我来说,解决方案是在 invokeLater 中调用 new TransparentWindow():

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

TransparentWindow 是一个扩展 JWindow 的类,它使用 com.sun.awt.AWTUtilities.setWindowOpaque(window,false); 创建一个带有圆角透明角的透明窗口,如下所述:Soft clipping and per-pixel translucency for Swing windows

关于java - AWTUtilities setWindowOpaque 导致问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7576066/

相关文章:

java - JDialogs 导致我的应用程序菜单在 OSX 上消失

java - Codename One createMaterial 命令的图标大小

java - BorderLayout West Center East all 等宽

Java Swing JMenu 不断消失

java - 如何以最短的方式对JTable进行排序?

java可扩展的JDialog

java - 在 JDialog 中的 JPanel 周围添加空间?

java - 为什么在android中命名资源不能使用大写?

java - JVM退出后守护线程如何存活?

java - 发生内存泄漏。无法检测泄漏并进行清洁