JavaFX带有装饰的透明窗口背景

3
我在尝试为javafx应用程序窗口制作透明背景时遇到了困难。看起来scene.setFill(null)只能与stage.initStyle(StageStyle.TRANSPARENT)一起使用。 setFill的文档说:

支持空值表示不绘制背景和带透明度的Paint,但是它后面绘制的内容将取决于平台。

但这对我来说没有意义。 它(在Windows 8上)仅与StageStyle.TRANSPARENT一起使用,这会删除退出按钮等,但我仍然希望保留他们。

我查看了http://www.adam-bien.com/roller/abien/entry/completely_transparent_windows_stage_in和这里的一些问题。

在Windows上能做到吗?


可能是JavaFX完全自定义窗口?的重复问题。 - jewelsea
@jewelsea 所以基本上如果不进行黑客攻击,这是不可能的吗? - Old Badman Grey
2个回答

0

我一直在调整类似的设置,这对我有效:

  @Override
   public void start(Stage primaryStage) throws Exception{
      Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));

      primaryStage.setTitle("Hello World");
      primaryStage.initStyle(StageStyle.TRANSPARENT);
      primaryStage.setOpacity(0.5);
      primaryStage.setFullScreen(true);
      Scene scene = new Scene(root, 300, 275);
      primaryStage.setScene(scene);
      scene.getStylesheets().add(Main.class.getResource("main.css")
            .toExternalForm());
      primaryStage.show();
}

...和 CSS

.root {
    -fx-background-color: rgba(0,0,0,0.5); 
}

1
他不想要一个 TRANSPARENT 窗口,这就是问题所在。 - RecursiveExceptionException

0

您可以使用this库。它是一个完全可定制的JavaFx Stage(CustomStage)。您可以在CustomStage Wiki中看到如何使用它的详细说明。

它具有以下功能:

  • 窗口调整大小
  • 默认操作按钮及其行为(关闭、最大化/还原、最小化)
  • 窗口拖动
  • 窗口会根据屏幕分辨率自动缩放
  • 非常响应
  • 可定制样式
  • 可以实现透明度
  • 具有内置的导航面板和抽屉
  • 等等。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接