我正在编写一个JavaFX应用程序。我有一个TableView
,包含数据库中的所有条目,填充如下:
public class AdvertisementListController {
@FXML public TableView<Advertisement> advertisementTable;
@FXML public TableColumn<Advertisement, String> dateColumn;
@FXML public TableColumn<Advertisement, String> productColumn;
@FXML public TableColumn<Advertisement, String> vendorColumn;
@FXML public TableColumn<Advertisement, Integer> priceColumn;
@FXML public TableColumn<Advertisement, Integer> quantityColumn;
// ...
public void initialize() {
dateColumn.setCellValueFactory(new PropertyValueFactory<>("stringDate"));
productColumn.setCellValueFactory(new PropertyValueFactory<>("productName"));
vendorColumn.setCellValueFactory(new PropertyValueFactory<>("vendorId"));
priceColumn.setCellValueFactory(new PropertyValueFactory<>("price"));
quantityColumn.setCellValueFactory(new PropertyValueFactory<>("quantity"));
// ...
AdvertisementDAO advertisementDAO = new AdvertisementDAO();
annunciTable.setItems(advertisementDAO.getAdvertisementObservableList());
}
从我的应用程序的另一个窗口,我可以在数据库的表中插入新的条目。我是GoF模式的新手,我试图在这里实现一个Observer模式以保持表更新,但我真的不知道从哪里开始。这里的主题是什么?什么是Observer类?
JavaFX是一个使用模型 - 视图 - 控制器(MVC)设计模式的框架。如果你做一些研究,你会发现MVC也使用了Observer
设计模式。
JavaFX更进一步支持Observer
设计模式。 JavaFX有Property
的概念,它基本上是Observer
设计模式。 Property
对象保存该值,它可用于观察值的变化。 Property
(和ObservableList
等)的基本界面是Observable
。
因此,通过使用Property
(在您的情况下ObservableList
),您已经在使用Observer
设计模式。
所以为了做到这一点,这些都是你需要的:
Advertisement
,stringDate
和productName
存储为vendorId
。price
从quantity
获得Property
,将ObservableList
移出,作为AdvertisementDAO
的领域。每当数据发生变化时,您应该改变getAdvertisementObservableList()
。ObservableList
重载创建AdvertisementListController
。例:
ObservableList