我创建了一个自定义对话框,其中包含我自己的窗格和控件。但该对话框有一个白色边框默认值我想删除。以下是单个图像的示例:
我尝试使用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会移动我不想做的对话框,更改其填充也不会产生任何影响。
答案 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;
}