1. 경로 참조


파일 경로 참조시에는 getClass().getResource("경로")


와 같이 쓴다.


예를들어


src/app/Main.java


src/app/call.fxml


구조로 되있다면


Main에서 호출할 때 getClass().getResource("main.fxml") 와 같이 단순하게 써도 된다.


그리고 만약


src/app/Main.java


src/app/view/main.fxml


위와 같이 호출한 java파일의 하위에 있다면


getClass().getResource("view/main.fxml")와 같이 쓰면 인식이 된다


하지만 다른 폴더에 있을 경우는 달라지는데


src/app/Main.java


src/view/fxml/main.fxml


위와 같이 소스폴더는 같지만 그 다음 경로가 완전히 다르다면


getClass().getResource("../view/fxml/main.fxml")과 같이 ".."을 통해서 한번 상위폴더로 이동 후 경로를 입력해야 한다.


여담으로 getClass().getResource("경로")는 이 코드를 입력한 java파일이 담겨있는 폴더의 경로를 의미한다.


고로 "..", 점 두번으로 유도리있게 입력해야 한다.





2.fxml파일과 컨트롤러 클래스의 관계


프로젝트는 기본적으로 화면을 하나만 쓰는게 아니라 여러개를 사용하게 되는데


fxml파일에 함수를 붙이고 싶다면 Controller 클래스를 붙이게 된다.


그런데 가끔 같은 컨트롤러를 참조하게 되는데


이런 경우에는 main.fxml - funcController.java - sub.fxml과 같이 공유하는게 아니고


main.fxml - funcController.java / sub.fxml - funcController.java와 같이 새로 불러와 별개의 클래스를 사용한다.


따라서 main에서 변수에 1을 넣었다고 하더라도 sub에서 같은 변수를 불렀을 때 다른값이 나오게 되는 것.


이런 경우에는 따로 java파일을 만들어서 static 변수로 공유한다면 편하게 사용할 수 있다.






+ Recent posts