JavaFX ComboBox 데이터 추가 및 이벤트 핸들러
JavaFX에서 ComboBox에 데이터를 추가하고 ComboBox 셀렉트 변경 시 이벤트 발생 처리 방법을 알아보자.
ComboBox를 컨트롤러에서 객체를 생성하는 방법과 scene builder를 사용하여 fxml로 UI를 그리고 컨트롤러에서 조작하는 방법이 있는데
나는 후자로 하려고 한다.
최대한 화면과 컨트롤러를 분리시키기 위해서이다.
이벤트 발생을 onAction이벤트를 사용하는 방법과 comboBox에 addListener를 추가하는 방법 두가지 방법이 있다.
ComboBox UI 생성
우선 fxml에서 ComboBox를 추가하고 fx:id 와 onAction 이벤트를 추가한다.
<AnchorPane>
<children>
<ComboBox fx:id="use" onAction="#useHandleChange" />
</children>
</AnchorPane>
ComboBox 데이터 생성
ComboBox에 데이터를 넣기 위해 ObservableList<String> useData 변수를 생성한다.
FXCollection.observableArrayList로 ComboBox에 들어갈 값을 넣는다.
DB데이터 조회된 값을 입력하려면 String 배열로 값을 넣어주어도 된다.
ComboBox 변경 이벤트
1. ComboBox에 addListener이벤트로 changed이벤트를 등록하는 방법
2. fxml에서 onAction이벤트 useHandleChange 을 @FXML로 등록하고 ActionEvent로 처리하는 방법
첫번째 방법으로는 ComboBox에서 기존 셀렉트된 정보와 변경된 정보를 둘다 알 수 있고,
두번째 방법은 ComboBox 객체에 접근해서 선택된 콤보박스의 정보를 알아낼 수 있다.
둘 중 편한 방법으로 사용하면 좋을 듯 하다.
public class ComboBoxController implements Initializable {
@FXML
private ComboBox<String> use;
ObservableList<String> useData;
@Override
public void initialize(URL location, ResourceBundle resources) {
useData = FXCollections.observableArrayList("Y", "N");
use.setItems(useData);
useAuth.setValue("Y");
use.valueProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
System.out.println(observable + ", " + oldValue + ", " + newValue);
}
});
}
@FXML
private void useHandleChange(ActionEvent event) {
System.out.println(use.getSelectionModel().getSelectedItem() + ", " + use.getSelectionModel().getSelectedIndex());
}
}
'JavaFX' 카테고리의 다른 글
[JavaFX] JavaFX 새 팝업창에 Parameter 데이터 전송 (0) | 2020.04.02 |
---|---|
[JavaFX] JavaFX Popup 새 팝업창 띄우기 (0) | 2020.04.02 |
[JavaFX] JavaFX TableView Mouse Double Click Event 마우스 더블클릭 이벤트 (0) | 2020.03.25 |
[JavaFX] JavaFX hibernate error : xxx is not mapped (0) | 2020.03.18 |
[JavaFX] JavaFX 공통 페이징 처리 목록 만들기 (0) | 2020.03.16 |