FXMLLoader클래스를 사용해 fxml 파일에 선언된 내용을 객체화한다.
FXMLLoader loader = new FXMLLoader(getClass().getResource("Ex1.fxml"));
Parent form = loader.load();
getClass(): 메소드를 호출한 클래스의 경로를 반환
getResource(String name): name의 운영체제 상의 경로를 반환
Ex1.fxml파일의 경로를 FXMLLoader의 생성자에 전달해 해당 fxml파일에 접근할 수 있는 참조 변수 loader를 생성한다.
FXMLLoader의 load()를 통해 해당 fxml파일을 메모리에 로드하고(객체 생성) 그 참조 값을 참조 변수인 form에 담는다.
Scene scene = new Scene(form);
primaryStage.setTitle("Ex1");
primaryStage.setScene(scene);
primaryStage.show();
Scene타입의 객체 생성 시 fxml파일의 객체를 넘겨준다.
화면(primaryStage)에 Scene객체를 넣고 show()를 호출하여 화면을 실행한다.
fxml파일(컨트롤러를 설정한)이 실행되면 컨트롤러도 실행된다.
컨트롤러는 화면에 대한 이벤트를 처리한다.
컨트롤러 클래스는 Initializable(인터페이스)를 상속받아야 한다.
*Initializable(인터페이스)의 추상 메소드: initialize()
Initializable을 상속받지 않은 클래스에서는?? / fxml파일의 컨트롤러가 아닌 클래스에서는???
@FXML을 사용하여 fxml파일의 객체에 접근할 수 없다?????
fxml파일의 객체에 접근하는 방법은 두 가지이다.
@FXML 어노테이션을 통해 fxml파일에 작성한 fx:id와 클래스의 멤버 필드명이 일치하면, 그 fxml파일의 객체를
멤버 필드에 자동으로 주입할 수 있다.
또는 fxml파일 객체의 참조 변수에서 lookup()을 호출한 후 fx:id를 통해 파일의 요소들에 접근할 수도 있다.
initialize()는 컨트롤러 객체가 생성되면 가장 먼저 실행되는 메소드이다.
TextField의 메소드
- getText()
- textProperty(): TextInputControl의 텍스트 내용을 반환함
이벤트란 프로그램의 상태가 변화 했을 때 발생하는 신호와 같은 것이다.
setOnAction(EventHandler<ActionEvent> value): 커서의 변화, 클릭, 키 입력 등 이벤트가 일어났을 때 호출되는 메소드
addListener(ChangeListener<? super String> listener): 관찰대상(메소드를 호출한 객체)의 값이 변화할 때마다 호출되는 메소드
출처:https://araikuma.tistory.com/384[프로그램 개발 지식 공유]
'JavaFX' 카테고리의 다른 글
[JavaFX]AreaChart, BarChart, PieChart, XYChart (0) | 2022.04.01 |
---|