UNIFIED StageStyle和Transparent Scene产生黑色背景而不是透明

时间:2015-02-02 22:16:41

标签: css javafx

JavaFX 8具有StageStyle.Unified,可以创建OS X样式的统一工具栏。我测试了下面的代码在JDK 8u5中正常工作。(场景背景是透明的,按钮出现在舞台背景上。)

然而,在JDK 8u25和JDK 8u31中,有一种奇怪的行为。场景背景变黑。 将场景颜色更改为透明工作以外的任何其他颜色,它会显示该颜色。

除非我遗漏了某些东西,否则它看起来像个臭虫, 有什么想法吗?

public class UnifiedTest extends Application {

@Override
public void start(Stage primaryStage) {

    StackPane testPane = new StackPane();
    testPane.setStyle("-fx-background-color:transparent;");

    Label someText = new Label("TEXT AGAINST TRANSPARENT SCENE");
    testPane.getChildren().add(someText);

    Scene myScene = new Scene(testPane,500,500);
    myScene.setFill(Color.TRANSPARENT);



    primaryStage.setScene(myScene);
    primaryStage.initStyle(StageStyle.UNIFIED);
    primaryStage.setTitle("Application");
    primaryStage.show();
}


/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    launch(args);
}

}

更多信息:

在舞台背景中,我指的是操作系统提供的窗口背景。

我正在尝试创建一个统一的工具栏。根据JavaFX 8 API,这样做的方法是使用StageStyle.UNIFIED。这将提供OSX提供的窗口。

当没有添加场景时,它看起来像这样: http://imgur.com/iHEiVf0,fMbFr4e,bFSL8bA

然而,当我setFill(Color.TRANSPARENT)时,场景背景变为黑色: http://imgur.com/iHEiVf0,fMbFr4e,bFSL8bA#2

期望的结果是在第一个链接的背景下看到文本。它适用于JDK 8u5,但现在我使用8u31而不是那个灰色我变黑了。奇怪的是,如果我设置了填充(Color.RED)背景变为预期的红色

来自JavaFX 8 api: public static final StageStyle UNIFIED 使用平台装饰定义舞台样式,并消除客户区和装饰之间的边界。客户区背景与装饰统一。这是一个条件功能,用于检查是否支持它,请参阅Platform.isSupported(javafx.application.ConditionalFeature)。如果平台不支持该功能,则此样式将降级为StageStyle.DECORATED `注意:要查看场景覆盖舞台的效果应该具有Color.TRANSPARENT

1 个答案:

答案 0 :(得分:0)

看起来这是一个针对Java 8u60修复的错误:

Kevin Rushforth对错误跟踪器发表评论:

  

看起来回归是在8u20的某个时候引入的。