如何删除对话框的背景?

时间:2017-11-07 16:10:10

标签: gluon-mobile

我创建了一个自定义对话框,其中包含我自己的窗格和控件。但该对话框有一个白色边框默认值我想删除。以下是单个图像的示例:

enter image description here

enter image description here

我尝试使用ScenicView,但无法找到捕捉对话框层并修改它的方法:

public class MainView extends View {

    Image img = new Image("https://i.stack.imgur.com/7bI1Y.jpg", 300, 500, true, true);

    public MainView(String name) {
        super(name);

        Button b = new Button("Pop");
        b.setOnAction(e -> {
            Dialog<Void> dialog = new Dialog<>();
            dialog.setOnShown(e2 -> {
                Parent parent = getParent();
                Pane p = (Pane) parent.lookup(".dialog");
                p.setPadding(new Insets(0));
            });
            dialog.setGraphic(new ImageView(img));
            dialog.showAndWait();
        });
        setCenter(b);
    }
}

我得到的最好的是移除flowpane孩子以移除部分下半部分

dialog.setOnShown(e2 -> {
    Parent parent = getParent();
    Pane p = (Pane) parent.lookup(".dialog");
    p.getChildren().removeIf(c -> (c instanceof FlowPane));
    System.out.println(p.getChildren());
});

删除VBox会移动我不想做的对话框,更改其填充也不会产生任何影响。

1 个答案:

答案 0 :(得分:1)

正如您在ScenicView中看到的那样,Dialog具有dialog样式类。

修改对话框样式的一种简单方法是通过css。只需在视图中添加一个css文件,然后设置:

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

这将设置背景透明,而不是默认的白色。

如果你想删除边框,那么你可以玩填充。正如您还可以在ScenicView中看到的那样,对话框的中心内容为VBox,样式类为container,底部为按钮的流窗格,样式类为dialog-button-bar

在此之前,只需使用setContent方法添加图片而不是setGraphic图片:

dialog.setContent(new ImageView(img));

这将需要删除所有边框,让图像占据整个对话框:

.dialog,
.dialog > .container,
.dialog > .dialog-button-bar {
    -fx-padding: 0;
}