오히려 좋아..

상황이 나쁘게만 흘러가는 것 같을 때 외쳐보자.. .

궁금한 마음으로 포트폴리오 보기

Language/Java

3. JavaFX No injectable field found in FXML Controller class 오류

junha6316 2020. 4. 29. 14:44

오류 원인 : JavaFX에서 Controller파일에서 Label의 id를 다음과 같이 선언하고 SceneBuilder에서 다시 Label의 아이디를 설정하면 발생하는 오류

 

FXML 파일이 Controller 클래스와 연결되어있으면  컨트롤 클래스의 변수와 FXML 파일의 변수와 연결시켜주는 건 Scene Builder Object fx:id이다.

 

먼저 Object에 fx:id가 설정되어 있으면 SceneBuilder는 Controller 클래스에서 id를 파싱한다.

만약 없다면 이러한 오류를 발생시킨다.

만약 당신이 Controller 클래스에 변수를 추가하고 싶으면

 

In Scene Builder, if the FXML file is associated to a controller class, you know that what makes the connection between the variable in the controller class (pb) and the object in the FXML file (<ProgressBar ... />) is the value of the object's fx:id.

So when you set an fx:id on an object, Scene Builder tries to parse the controller class trying to find a variable of that name.

If it doesn't find any, it displays this warning. It's just a reminder that you may want to add such a variable to the controller class, or that you have to choose other valid name from a list.

Since you have label defined on your controller, if you try to add a Label on Scene Builder, you can get its fx:id from the list:

 

On a side note, you don't need to instantiate the progress bar on the main class, since it will be instantiated in the controller. And ìf you try to link change(ActionEvent event) to a method in Scene Builder (#change), you have to annotate it with @FXML. Anyway, don't use onDragDetected with the slider.

 

https://stackoverflow.com/questions/26865596/no-injectable-field-found-in-fxml-controller-class

'Language > Java' 카테고리의 다른 글

2. 버튼을 눌렀을 때 글자를 받는 함수(JavaFX)  (0) 2020.04.28
JavaFX 환경 구성  (0) 2020.04.27