JavaFX模糊整个窗口

Max*_*xim 4 java javafx javafx-8

我试图在我的应用程序中实现类似模式popus的东西.为了使它们更清晰,我决定模糊整个窗口并将popus放在它前面.

问题是JavaFX模糊在应用于整个窗口时会产生伪影:

ALT

注意一个白色边框 - 它不应该存在.


我的代码是:

public void enableBlur() {
    ColorAdjust adj = new ColorAdjust(0, -0.9, -0.5, 0);
    GaussianBlur blur = new GaussianBlur(55); // 55 is just to show edge effect more clearly.
    adj.setInput(blur)
    rootPanel.setEffect(adj);
}
Run Code Online (Sandbox Code Playgroud)

因此效果将应用于根内容面板.


PS的问题是不是重复这个,因为我认为,提供的解决方案来自同一个边缘效应受到影响,但由于形式的内容是不是太黑暗这里也不是那么清晰可见.

fab*_*ian 6

设置fillScene背景色.

在以下示例中,您可以在无填充(null)和背景颜色(Color.BLACK)之间切换(如果您可以通过该模糊效果找到按钮).

@Override
public void start(Stage primaryStage) {
    Button btn = new Button("If you can read this, the blur isn't working!");

    StackPane root = new StackPane();
    root.getChildren().add(btn);
    root.setStyle("-fx-background-color: black;");
    ColorAdjust adj = new ColorAdjust(0, -0.9, -0.5, 0);
    GaussianBlur blur = new GaussianBlur(55); // 55 is just to show edge effect more clearly.
    adj.setInput(blur);
    root.setEffect(adj);

    Scene scene = new Scene(root, 500, 200, null);

    btn.setOnAction((ActionEvent event) -> {
        scene.setFill(scene.getFill() == Color.BLACK ? null : Color.BLACK);
    });

    primaryStage.setScene(scene);
    primaryStage.show();
}
Run Code Online (Sandbox Code Playgroud)