2017-11-07 8 views
0

내 창과 컨트롤이있는 사용자 지정 대화 상자를 만들었습니다. 그러나 대화 상자에는 제거하려는 흰색 경계 기본값이 있습니다.대화 상자의 배경을 제거하는 방법은 무엇입니까?

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

을 여기에 하나의 이미지로 예입니다 최상위 부분을 제거하는 중이 야.

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

ScenicView에서 볼 수 있듯이 Dialogdialog 스타일 클래스입니다.

대화 스타일을 수정하는 쉬운 방법 중 하나는 CSS입니다. 보기에 CSS 파일을 추가하고 다음을 설정하십시오.

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

그러면 기본 흰색 대신 배경이 투명하게 설정됩니다.

테두리를 제거하려면 패딩으로 재생할 수 있습니다. ScenicView에서도 볼 수 있듯이 대화 상자에는 가운데에있는 내용의 스타일 클래스 container이있는 VBox와 스타일 클래스 인 dialog-button-bar이있는 아래쪽 버튼의 흐름 창이 있습니다.

아무것도하기 전에, 단지 대신 setGraphic 하나의 이미지를 추가 할 setContent 방법을 사용하십시오

dialog.setContent(new ImageView(img)); 

을 그리고이 모든 경계를 제거해야합니다,하고 이미지가 전체 대화 상자를 보자 :

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

그래서 내가 시도한 것처럼 프로그래밍 방식으로 할 방법이 없습니까? – Mark

+0

CSS를 사용하여 문제가 표시되지 않습니까? 프로그래밍 방식으로 할 때 문제는 대화 상자에 적용된 Gluon 기본 CSS이므로 시도에 관계없이 패딩이 설정됩니다. –