-
javaFX fxml로딩과 Scene 작성 / JavaFX Scene Builder고급 JAVA/FX 2020. 5. 22. 19:10
FXML 로딩
- 작성한 fxml 파일을 읽어들여 선언된 내용을 객체화 하는 것
FXML 파일 로딩을 위해서는 javafx.fxml.FXMLLoader를 해야하며 FXMLLoader는 두 가지 종류의 로드 메서드를 가짐
1. 정적 메서드 load()
2. 인스턴스 메서드 load()
1. 정적 메서드 load()
FXML 파일이 클래스와 동일한 패키지에 있을 때는 정적 load() 메서드로 FXML 파일을 로딩함.
=> Parent root = FMXLLoader.load(getClass().getResource("xxx.fxml"));
getClass() : 현재 클래스 리턴
getResource("xxx.fxml") : 클래스가 위치하는 곳에서 상대 경로로 리소스 URL 리턴
2. 인스턴스 메서드 load()
=> FXMLLoader loader = new FXMLLoader.load(getClass().getResource("xxx.fxml"));
Parent root = (Parent).loader.load();
load() 메서드가 리턴하는 타입은 Parent 타입
실제 객체는 FXML 파일에서 루트 태그로 선언된 컨테이너입니다.
FXML파일에서 루트 태그가 <HBox>이면 타입 변환이 가능합니다.
HBox hb = (HBox) FXMLLoader.load(getClass().getResource("xxx.fxml"));
위의 방법 처럼 FXML 파일을 로딩해서 Parent 객체를 얻었으면, Scene(장면) 객체를 생성하면 된다.
Scene s = new Scene(root);
public class AppMain extends Application { @Override public void start(Stage primaryStage) throws Exception { Parent root = (Parent)FXMLLoader.load(getClass().getResource("root.fxml")); Scene scene = new Scene(root); primaryStage.setTitle("AppMain"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } }
'고급 JAVA > FX' 카테고리의 다른 글
javaFX - 입력 컨트롤 (0) 2020.05.22 javaFX 컨트롤 - 버튼 컨트롤 (0) 2020.05.22 javaFX 속성 바인딩 (0) 2020.05.22 javaFX 이벤트 핸들러 (0) 2020.05.22 javaFX - 컨테이너 : AnchorPane 컨테이너 (0) 2020.05.22