我有一个模态 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/