디렉터리 구조
SceneBuiler 세팅
확인 버튼과 취소 버튼에 각각
OnAction : OkBtn
OnAction : CancleBtn 을 추가
ListView와 ImageView의 fx:id에 각각
fxListView
fxImageView
을 입력한다. 그 이후에 fxml 파일에 반영시킨다.
Controller.java
@FXML 어노테이션을 사용함으로써 fxml에 있는 fx:id를 불러올 수 있다.
MainClass.java
Controller에서 Root 전체 내용을 가져다 쓰지는 않을 예정이므로 getController() 메소드는 사용하지 않는다.
(필요한 요소만 @FXML 어노테이션으로 불러와서 사용)
실행결과
갤럭시S1~7을 각각 눌렀을 때 해당하는 이미지를 불러오기 위해
다음과 같이 코드를 추가한다.
addListener 메소드를 보면 인자로 람다식이 들어와 있는데 람다식을 인자값으로 넣은 이유는
addListner의 매개변수로 ChangeListener가 들어간다.
api문서를 살펴보면 ChangeListner<T>는 인터페이스임을 알 수가 있으며
메소드는 changed (ObservableValue <? extends T> observable, T oldValue, T newValue)
이거 단 하나밖에 가지고 있지 않다.
인터페이스를 매개변수로 가지며 해당 인터페이스가 메소드를 하나만 가지고 있는 경우 인자로 넣을때 람다식을 사용하여 넣을 수 있다.
그러면 갤럭시S1~S7을 각각 눌렀을 때 console창에 어떤 값을 눌렀는지 바로 출력이 된다.
ex05패키지에 phone.java 파일을 생성하자.
이미지 폴더 : 이미지 파일 이름이 phone01 ~ 07 --> 이 폴더를 프로젝트 폴더에 넣도록 하자.
Controller.java 코드 추가
이미지 경로가 정상적으로 출력이 된다.
이제 실제 이미지를 출력하기 위해 코드를 작성해보자.
갤럭시S4를 누르면 그에 해당하는 이미지가 정상적으로 출력이 된다.