我有一个模态JDialog
,我通过调用com.sun.awt.AWTUtilities
方法setWindowOpaque(this, false)
将其设置为不透明。
将模式JDialog
设置为非透明时会遇到问题。例如,当我单击一个不透明对话框的按钮时,它会正确弹出,但是在打开和关闭对话框几次后,它确实会打开。它不可见;并且,由于它是模态的,因此我们无法单击父面板中包含的按钮。就像它被冻结了一样,但这仅是由于模态对话框。
如果我删除对方法setWindowOpaque(this, false)
的调用,它可以正常工作。
有人知道发生了什么吗?
我在Windows XP上使用Java版本“ 1.6.0_26”。
谢谢。
最佳答案
好的,有类似的问题,有时窗口没有响应,或者透明性被破坏了……奇怪的问题。
解决方案,至少对我来说,是在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