2016-06-09 2 views
3

내 응용 프로그램에 모달 popus 같은 것을 구현하려고합니다. 그것들을 더 명확하게하기 위해, 나는 창 전체를 흐리게하고 그것 앞에 popus를 놓기로 결정했다.JavaFX 흐림 전체 창

문제는 전체 창에 적용 할 때 자바 FX의 번짐이 아티팩트를 생성한다는 것입니다 :

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); 
} 

그래서 효과가 컨텐츠 패널을 뿌리 적용됩니다.


P. 질문은 this의 중복이 아닙니다. 제공된 솔루션이 동일한 가장자리 효과를 겪고 있다고 생각하기 때문에 양식의 내용이 여기와 같이 너무 어둡지 않기 때문에 명확하게 보이지 않습니다.

+1

가능한 복제 (http://stackoverflow.com/questions/22622034/frosted-glass-effect-in-javafx) – Itai

+0

I 스냅 사진을 촬영 한 후, 블러 링을 시도 스냅 사진. 그러나 그것은 효과가 없습니다. 또한 가장자리 효과가 해당 솔루션에 있다고 생각합니다. 그러나 배경이 밝고 테두리 효과가 흰색이므로 더 미묘합니다. – Maxim

답변

5

Scenefill을 배경색으로 설정하십시오.

다음 예제에서는 채우기 (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(); 
} 
[자바 FX에 젖빛 유리 효과 η]