팝업화면을 띄울 때 부모창이 선택 안되게 하기
javafx 에서 initOwner 메소드를 사용해서 부모창에서 모달을 띄울 때 부모창이 선택 안되게 할 수 있다.
- initOwner 메소드를 사용하는 방법
- initModality 메소드를 사용하는 방법
fxml에서 fx:id 로 anchorpane을 만든다.
<AnchorPane fx:id="anchorPane">
...
</AnchorPane>
fxml에서 fx:id의 값을 선언한다.
@FXML private AnchorPane anchorPane;
popupOpen 메소드에서 팝업을 호출한다.
initOwner 메소드로 부모창의 window를 입력한다.
initModality 메소드의 Modality.WINDOW_MODAL 로 모달창이 부모창을 선택할 수 없도록 한다.
Modality 는 enum 으로
NONE, WINDOW_MODAL, APPLICATION_MODAL 값을 사용한다.
@FXML private AnchorPane anchorPane;
@FXML
private void popupOpen(){
try{
FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getClassLoader().getResource("path");
Parent root = (Parent) loader.load();
Scene scene = new Scene(root);
Stage stage = new Stage();
stage.initOwner(anchorPane.getScene().getWindow());
stage.initModality(Modality.WINDOW_MODAL);
stage.setScene(scene);
stage.show();
}catch(Exception e) {
}
}
APPLICATION_MODAL을 사용하면 부모창이 아닌 다른 응용프로그램으로의 이벤트를 차단한다.
그럼 stage.initOwner 이벤트를 사용하지 않고 initModality만 사용해서 모달을 띄우고 다른 애플리케이션을 선택할 수 없게 할 수 있다.
stage.initModality(Modality.WINDOW_MODAL)
'JavaFX' 카테고리의 다른 글
[JavaFX] 자바FX Task ProgressBar 팝업 만들기 (0) | 2020.05.27 |
---|---|
[JavaFX] 자바fx background image styleClass로 변경 (0) | 2020.05.18 |
[JavaFX] 자바fx 화면 생성과 동시에 팝업(모달) 띄우기 Platform.runLater (0) | 2020.05.14 |
[JavaFX] 자바 FX CSS 디자인 종류 및 정리(feat. TableView style) (0) | 2020.04.29 |
[JavaFX] 자바 fx ComboBox<T> key, value 값 설정? (0) | 2020.04.27 |