【问题标题】:Is it possible to, in JavaFX, have a scene, stage, and control that are all transparent?是否有可能在 JavaFX 中拥有全透明的场景、舞台和控件?
【发布时间】:2015-02-12 14:43:22
【问题描述】:

我有一个自定义控件,它是 3 个简单的按钮。该控件处理与其绑定的应用程序的操作,但出于某种原因,它必须驻留在外部阶段。

令人讨厌的是所有按钮之间都是白色背景。

我已经尝试了以下所有方法来消除它:

  • 将 StageStyle 初始化为透明
  • 用透明背景声明场景:new Scene(Node, X, Y, Color.TRANSPARENT);
  • 使用 NULL 背景声明场景:new Scene(Node, X, Y, null);
  • 拥有控件(扩展 HBox).setStyle("-fx-background-color : rgba(0, 0, 0, 0);");

所有这些都未能消除背景的出现。 我已经使用 Windows 窗体完成了此操作,但可以使用 JavaFX 吗?

【问题讨论】:

    标签: java javafx window transparent scene


    【解决方案1】:

    需要设置透明度

    • 舞台
    • 场景
    • 根类(或者在我的情况下是 hbox,我更喜欢根)

    这对我有用:

    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.layout.HBox;
    import javafx.scene.paint.Color;
    import javafx.stage.Stage;
    import javafx.stage.StageStyle;
    
    public class Main extends Application {
    
        @Override
        public void start(Stage primaryStage) {
            try {
    
                HBox hbox = new HBox();
                hbox.setSpacing(12);
    
                Button button1 = new Button("Button 1");
                Button button2 = new Button("Button 2");
                Button button3 = new Button("Button 3");
    
                hbox.getChildren().addAll(button1, button2, button3);
    
                Scene scene = new Scene(hbox, Color.TRANSPARENT);
    
    //          scene.getStylesheets().add( getClass().getResource("application.css").toExternalForm());
                scene.getRoot().setStyle("-fx-background-color: transparent");
    
                primaryStage.initStyle(StageStyle.TRANSPARENT);
                primaryStage.setScene(scene);
                primaryStage.show();
    
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public static void main(String[] args) {
            launch(args);
        }
    }
    

    这是直接的解决方案。当然,与其直接设置样式,不如使用样式表 application.css:

    .root {
        -fx-background-color: transparent;
    }
    

    这是应用程序在代码上的屏幕截图:

    【讨论】:

      猜你喜欢
      • 2016-03-06
      • 1970-01-01
      • 2017-12-17
      • 2018-12-15
      • 2020-07-02
      • 1970-01-01
      • 1970-01-01
      • 2017-05-09
      • 1970-01-01
      相关资源
      最近更新 更多