2

我正在使用 JDK7 的半透明窗口支持,发现它不适用于 Windows 的外观和感觉。

这是我的代码:

JFrame.setDefaultLookAndFeelDecorated(true);
SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run() {
        JFrame frame = new JFrame("Translucent Window");
        frame.setOpacity(0.5F);
        frame.setSize(640, 360);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}

此代码正确显示半透明窗口。但是,如果我设置 Windows 外观:

UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");

抛出异常:

Exception in thread "AWT-EventQueue-0" java.awt.IllegalComponentStateException: The frame is decorated

如果我用 禁用框架装饰frame.setUndecorated(true),它会再次工作,但这不是我想要的,因为缺少标题栏。有没有办法解决这个问题?

4

2 回答 2

1

请参阅本教程以了解如何制作JFrame透明或半透明

http://blogofjavacrazy.blogspot.in/2007/03/transparent-window-in-java.html

我偶然发现了一个简洁的小技巧,它实际上不是透明的,而是截取屏幕截图并将那个小片段添加为背景。

看到这个链接:

http://onjava.com/pub/a/onjava/excerpt/swinghks_hack41/index.html

于 2012-09-19T09:26:31.030 回答
0

这真的很愚蠢。在带有 的 Java 6 下AWTUtilities,这工作得很好。

你会想读这个。

Java 教程半透明窗口示例是否会给使用 jdk7 的人带来麻烦?

于 2012-09-19T20:18:51.417 回答