자바fx로 개발하면서 화면이 생성됨과 동시에 팝업을 띄워야 할때가 있다.
그냥 팝업만 띄우면 상관 없지만 팝업을 띄운 후 부모창을 선택할 수 없게 하려고 한다면
initOwer을 사용하면 될것이다.
하지만 initOwer을 사용하려면 부모창의 scene을 넘겨줘야 하는데,
fxml로 화면을 생성하고 fxml에서 anchor등의 객체를 가져오기 전에 팝업을 호출하기 때문에 에러가 발생한다.
이때 사용할 수 있는 방법이
Platform.runLater 이다.
@FXML private AnchorPane anchor;
private void popup(){
Platform.runLater(new Runnable(){
@Override
public void run(){
try{
Parent root = FXMLLoader.load(getClass().getClassLoader().getResource("경로");
stage = new Stage();
stage.initOwner(anchor.getScene().getWindow());
stage.initModality(Modality.WINDOW_MODAL);
} catch(Exception e){
}
}
});
}
'JavaFX' 카테고리의 다른 글
[JavaFX] 자바fx background image styleClass로 변경 (0) | 2020.05.18 |
---|---|
[JavaFX] 자바fx 팝업창 모달로 부모창 선택 못하게 initOwner, initModality, Modality (1) | 2020.05.15 |
[JavaFX] 자바 FX CSS 디자인 종류 및 정리(feat. TableView style) (0) | 2020.04.29 |
[JavaFX] 자바 fx ComboBox<T> key, value 값 설정? (0) | 2020.04.27 |
[JavaFX] Hibernate Exception in thread JavaFX Application Thread xxx is not mapped [ FROM xxx] 에러 (0) | 2020.04.16 |