JavaFx 8과 함께 SceneBuilder 2.0이 발표되었습니다. 프로그램 인터페이스를 구상하는데 요긴하게 사용할 수 있겠는데 scala에서는 java와 거의 동일한 방법으로 사용할 수 있습니다.
화면에 배치한 컨트롤들과 scala 소스내의 변수를 연결해 주는 과정이 필요한데 다음과 같은 방법을 사용하면 됩니다.
- 컨트롤과 연결하고자 하는 var형 변수를 정의하고 앞에
@FXML
디렉티브를 붙여준다 - FXMLLoader의 load 함수를 호출하기 전에 setController 함수로 콘트롤러 클래스를 지정해준다. 이러면
fx:id
로 지정한 컨트롤과 이벤트 핸들러가 연결된다.
데모용으로 아래의 스크린 샷과 같은 프로그램을 작성해 보았는데 아주 잘 동작합니다. 단, text 컨트롤이 BorderPane의 center 경계를 벗어나는데 이를 해결하기가 어렵군요. 기본적으로 BorderPane은 clip을 하지 않는듯 합니다.
소스코드와 FXML은 다음과 같습니다. Property 끼리의 연결이 아주 많은 일을 해 주는군요.