首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使JavaFX stage透明(仅限Stage)

如何使JavaFX stage透明(仅限Stage)
EN

Stack Overflow用户
提问于 2017-07-13 09:14:19
回答 1查看 953关注 0票数 0

下面的示例仅适用于文本,但一旦我向舞台添加了一个按钮,透明按钮就会变为非活动状态

代码语言:javascript
复制
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import javafx.stage.StageStyle;

public class Main extends Application {

    @Override
    public void start(Stage stage) {
        stage.initStyle(StageStyle.TRANSPARENT);
        Text text = new Text("!");
        text.setFont(new Font(40));
        VBox box = new VBox();
        Button btn = new Button("Test transparent");
        box.getChildren().addAll(text, btn);
        //if I removed the btn, transparent works as expected. 
        final Scene scene = new Scene(box,300, 250);
        scene.setFill(null);
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

我要找的是只使舞台透明,但显示的文本和按钮

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-13 15:23:09

在这种情况下,您的Button不是问题。默认情况下,VBox是灰色背景,所以你的Stage是透明的,但VBox不是。你必须通过CSS文件、内联或代码来设置透明背景:

CSS:

代码语言:javascript
复制
.your-vbox {
    -fx-background-color: transparent;
}

内联:

代码语言:javascript
复制
box.setStyle("-fx-background-color: transparent;");

代码:

代码语言:javascript
复制
box.setBackground(new Background(new BackgroundFill(Color.TRANSPARENT, CornerRadii.EMPTY, Insets.EMPTY)));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45069900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档