我有一个模态JDialog
,我通过调用com.sun.awt.AWTUtilities
方法setWindowOpaque(this, false)
来设置非不透明。
当我将模态JDialog
设置为非不透明时,我遇到了问题。例如,当我单击一个非透明对话框的按钮时,它会正确弹出,但在打开和关闭对话框后,它会打开。它不可见;并且,由于它是模态的,我们无法单击父面板中包含的按钮。它就像冻结一样,但这只是因为模态对话框。
如果我删除了对方法setWindowOpaque(this, false)
的调用,则它可以正常运行。
有谁知道发生了什么事?
我在Windows XP上使用Java版“1.6.0_26”。
感谢。
答案 0 :(得分:1)
好的,有类似的问题,有时窗口没有响应,或透明度被破坏......奇怪的问题。
至少对我而言,解决方案是在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);
创建一个带有圆角透明边角的透明窗口,如下所述:Soft clipping and per-pixel translucency for Swing windows