JavaFX는 Java 기반의 UI 프레임워크로, 다양한 UI 컴포넌트를 제공합니다. 이러한 컴포넌트들 간에 데이터를 전달하는 방법은 애플리케이션의 유지보수와 확장에 중요한 역할을 합니다. 이번 글에서는 JavaFX 컴포넌트 간의 데이터 전달을 어떻게 할 수 있는지 살펴보겠습니다.
1. 속성(Property)을 이용한 데이터 전달
JavaFX에서는 속성(Property)을 사용하여 컴포넌트 간의 데이터를 전달할 수 있습니다. 속성은 값을 저장하고, 그 값이 변경될 때 이를 감지할 수 있는 기능을 제공합니다. JavaFX에서는 SimpleObjectProperty
, SimpleStringProperty
등의 클래스를 제공하여 속성을 생성할 수 있습니다.
public class DataModel {
private final StringProperty dataProperty = new SimpleStringProperty();
public StringProperty dataProperty() {
return dataProperty;
}
public void setData(String data) {
dataProperty.set(data);
}
public String getData() {
return dataProperty.get();
}
}
위 코드에서 DataModel
은 데이터를 저장하고 제공하는 모델 클래스입니다. dataProperty
는 데이터를 저장하는 속성이며, setData()
와 getData()
메서드를 통해 데이터를 설정하고 가져올 수 있습니다.
이제 데이터를 전달할 컴포넌트에서 DataModel
객체를 생성하고 속성을 바인딩할 수 있습니다.
public class MainController {
@FXML
private TextField textField;
private DataModel dataModel;
public void initialize() {
dataModel = new DataModel();
textField.textProperty().bindBidirectional(dataModel.dataProperty());
}
}
위 코드에서 MainController
는 UI 컴포넌트인 TextField
를 가지고 있습니다. initialize()
메서드에서 DataModel
을 생성하고, textField
의 textProperty()
와 dataProperty()
를 양방향으로 바인딩하여 데이터를 전달합니다.
2. 이벤트 처리를 통한 데이터 전달
JavaFX에서는 이벤트 처리를 통해 컴포넌트 간에 데이터를 전달할 수도 있습니다. 예를 들어, 버튼 클릭 이벤트가 발생했을 때 해당 이벤트를 처리하는 핸들러에서 데이터를 전달할 수 있습니다.
public class MainController {
@FXML
private Button button;
private DataModel dataModel;
public void initialize() {
dataModel = new DataModel();
button.setOnAction(e -> {
String data = textField.getText();
dataModel.setData(data);
});
}
}
위 코드에서는 버튼의 클릭 이벤트를 처리하는 핸들러에서 textField
의 값을 가져와 dataModel
에 데이터를 설정합니다.
결론
JavaFX에서는 속성을 이용하여 컴포넌트 간의 데이터를 전달할 수 있습니다. 속성은 변경 감지 기능을 제공하여 데이터 변경을 쉽게 알 수 있습니다. 또한, 이벤트 처리를 통해서도 데이터 전달이 가능합니다. 데이터를 전달하는 방법을 적절하게 선택하여 JavaFX 애플리케이션의 유지보수와 확장성을 높여야 합니다.
참고: JavaFX 속성 바인딩