본문 바로가기
JavaFX

FMLLoader, FXML 컨트롤러, 이벤트 처리

by 쟈근꿈틀이 2022. 3. 31.
728x90

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[프로그램 개발 지식 공유]

728x90

'JavaFX' 카테고리의 다른 글

[JavaFX]AreaChart, BarChart, PieChart, XYChart  (0) 2022.04.01