小编Joe*_*ton的帖子

在Java 8中设置装饰JFrame的不透明度

我想知道如何JFrame最新版本的Java中获得透明.

目前,您只能使用

<JFrame>.setOpacity();
Run Code Online (Sandbox Code Playgroud)

如果框架没有装饰.

我没有使用未装饰的框架,所以我想知道如何绕过这个限制并设置框架的不透明度,0.5f同时仍然保持标题栏,调整大小选项等.

我在这里阅读了文档:http://docs.oracle.com/javase/tutorial/uiswing/misc/trans_shaped_windows.html.该代码仅适用于Java 6,不再运行.正如我所说,错误是:

Exception in thread "AWT-EventQueue-0" java.awt.IllegalComponentStateException: The frame is decorated
    at java.awt.Frame.setOpacity(Frame.java:960)
    at TranslucentWindowDemo$1.run(TranslucentWindowDemo.java:53)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    ...
Run Code Online (Sandbox Code Playgroud)

我也尝试(setBackground : Color)使用Color自定义Alpha值(new Color(int, int, int, Alpha))设置背景但它会抛出完全相同的错误.设置JPanel这种方式的跨性别是行不通的,因为它仍然存在JFrame,这是不透明的.

我找不到正确解决此问题的Stack Overflow上的其他答案.事实上,一些人认为这可以通过以下方式解决:

JFrame.setDefaultLookAndFeelDecorated(true);
Run Code Online (Sandbox Code Playgroud)

但他们误解了可能是指Java 7,因为我测试了它,结果是一样的.

我也尝试手动设置外观:

try {
    for (final LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
        if ("Nimbus".equals(info.getName())) {
            UIManager.setLookAndFeel(info.getClassName());
            break;
        }
    }

} catch [...] 
Run Code Online (Sandbox Code Playgroud)

将此与上面提出的解决方案相结合也行不通. …

java swing transparency jframe java-8

6
推荐指数
1
解决办法
2253
查看次数

标签 统计

java ×1

java-8 ×1

jframe ×1

swing ×1

transparency ×1