본문 바로가기

IT공부/JAVA

JavaFX 속성 감시 및 바인딩, 컨트롤

JavaFX 속성 감시와 바인딩


속성 바인딩

  • JavaFX 속성은 다른 속성과 바인딩될 수 있다.
  • 바인딩된 속성들은 하나가 변경되면 자동적으로 다른 하나도 변경된다.
  • xxxProperty() 메서드가 리턴하는 Property 구현 객체의 bind() 메서드를 이용하면 된다.
  • 단방향 바인딩 : bind() 메서드, 바인딩 받는 쪽은 변경 불가함
  • 양방향 바인딩 : bindBidirectional()



Bindings 클래스

  • Bindings의 정적 메서드는 속성을 연산하거나, 다른 타입으로 변환한 후 바인딩하는 기능을 제공한다.



JavaFX 컨트롤


버튼 컨트롤

  • 버튼 컨트롤은 마우스로 클릭할 수 있는 컨트롤로 ButtonBase를 상속하는 하위 컨틀롤을 말한다.
  • Button, CheckBox, RadioButton, ToggleButton, Hyperlink 등.
  • setGraphic() : 아이콘을 추가할 수 있다.
  • userData 속성 : 프로그램에서 처리하는 데이터, Check, Radio, Toggle에 해당
  • toggleGroup 속성 : Radio, Toggle에서 ToggleGroup으로 묶어 같은 그룹 내에서 하나의 컨트롤만 선택하게 할 수 있다.



입력 컨트롤
  • 입력 컨트롤은 한 줄 입력을 위한 TextField, 다중 행 입력을 위한 TextArea, 패스워드 입력을 위한 PasswordField, 제한된 항목에서 선택하는 ComboBox 가 있다.
  • DatePicker, ColorPicker, HTMLEditor 등.

뷰 컨트롤
  • 뷰 컨트롤은 텍스트 또는 이미지 등을 보여주는데 목록 형태로 보여주는 ListView, 테이블 형태로 보여주는 TableView, 이미지를 보여주는 ImageView가 있다.




JavaFX 컨트롤 - 뷰 컨트롤


ImageView 컨트롤

  • ImageView는 이미지를 보여주는 컨트롤.
  • fitWidth, fitHeight 속성 : ImageView의 폭과 높이를 지정.
  • preserveRatio 속성 : 이미지의 종횡비를 유지 여부.


ListView 컨트롤

  • ListView는 항목들을 목록으로 보여주는 컨트롤.
  • ListView에 항목을 추가하려면 setItems(ObservableList<T> value) 메소드를 사용
  • ObservableList 구현 객체는 FXCollections.observableArrayList(E ... items) 정적 메소드로 생성
  • 선택된 인덱스와 항목을 얻으려면 속성 감시를 이용할 수 있다.
  • getSelectionModel()메소드 이용하여 MultipleSelectionModel을 얻고나서
  • selectedIndexProperty() 또는 selectedItemProperty()에 리스너를 설정


TableView 컨트롤

  • TableView는 테이블 형태로 데이터를 보여주는 컨트롤.
  • TableView에 행(row)을 추가하려면 행의 데이터를 가지는 모델(model) 객체를 필요.
  • 모델 속성 타입은 컬럼 값의 데이터 타입에 따라 javafx.beans.property 패키지의
  • SimpleXXXProperty를 사용하면 된다.
  • TableColumn의 setCellValueFactory() 메서드는 매개값으로 제공되는 PropertyValueFactory(“모델속성명”)을 이용해서 모델 속성값을 TableColumn 값으로 세팅.
  • TableView에서 선택된 행의 인덱스와 모델 객체를 얻으려면 속성 감시를 이용
  • getSelectionModel() 메서드로 TableViewSelectionModel을 얻고, selectedIndexProprety 또는 selectedItemProperty에 리스너를 설정하면 된다.

JavaFX 컨트롤

미디어 컨트롤
  • 미디어 컨트롤에는 비디오를 재생할 수 있는 MediaView 컨트롤과 볼륨 조절 및 재생 위치조절을 위한 Slider 컨트롤 그리고 현재 진행 상태를 보여주는 ProgressBar, ProgressIndicator 컨트롤이 있다.
  • MediaView 컨트롤은 비디오를 보여주는 용도로만 사용하며, 레이아웃상에서 비디오가 위치할 영역을 표시한다.
  • MediaView 컨트롤은 비디오 재생을 위해 MediaPlayer가 있어야 한다.


  • MediaPlayer의 상태에 따라 자동 실행해야 할 코드들은 Runnable의 run() 메서드에 작성하고, setOnXXX() 메소드로 등록한다.
  • MediaPlayer의 상태에 따라 자동 실행되는 Runnable 설정 메소드