2014-04-20 9 views
0

나는 구조 다음받을 권리 경로를 찾을 수 . 그리고 나는 절대 경로로 일하고 싶지 않습니다. 상대 경로를 찾는 방법은 무엇입니까? 및 그 오른쪽과 fxml 파일 제어기의 설정이다자바 FX

fx:id="client.stuff.controller.DefaultController" 

을 ??

답변

3

응용 프로그램을 배포 할 때 일반적으로 클래스 파일과 모든 자원을 포함하는 jar 파일을 만듭니다. jar 파일 내부 (즉, 자원)에서 fxml 파일을로드해야합니다. 이 문맥에서, 경로 요소 ".."는 실제로 아무 것도 의미하지 않습니다.

사용

public static final String 
     DEFAULT_SCREEN_FXML = "/client/stuff/fxml/Default.fxml"; 

(경로가 클래스 패스에 상대적입니다).

물론

FXMLLoader loader = new FXMLLoader(getClass().getResource(DEFAULT_SCREEN_FXML)); 

또는 비슷한으로로드합니다.

3

... fx:id ...으로 fxml 파일의 컨트롤러를 설정하는 것이 맞습니까?

아니요, 이것은 완전히 잘못되었습니다. 컨트롤러는 이 아니고 fx:id이 아닌 값으로 설정해야합니다.

fx:id은 컨트롤러의 @FXML 요소를 FXML 문서에 정의 된 요소에 매핑하기위한 것으로 컨트롤러 클래스 자체를 매핑하는 것이 아닙니다.

자세한 내용은 Introduction to FXML 문서를 참조하십시오. 그래서

는 사용하지 마십시오
fx:id="client.stuff.controller.DefaultController" 

대신 사용 경로 해상도로 할 수있는 질문의 다른 부분에 대한

fx:controller="client.stuff.controller.DefaultController" 

제임스의 대답은 올바른 것입니다.

+0

아, 죄송합니다. 나는 fx : 컨트롤러를 의미합니다! 하지만 고마워. :) – malex