본문 바로가기

카테고리 없음

JavaFX:imageView와 ListView

반응형

디렉터리 구조

 

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를 누르면 그에 해당하는 이미지가 정상적으로 출력이 된다.

반응형