2

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

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

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

有谁知道发生了什么?

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

谢谢。

4

1 回答 1

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

于 2013-12-02T09:24:27.773 回答