我正在尝试初始化TableView元素,为此我需要从DB获取数据。方法(位于控制器类中)从数据库获取数据并返回ObservableList,抛出SQLException和ClassNotFoundException。当我将该方法放在initialize()中时,我收到一个错误:
重写方法不会抛出' java.sql.SQLException'
使其工作的唯一方法是制作一个按钮并将其链接到该方法。但这并不能自动填充TableView。 有没有办法在这个阶段打开时调用该方法,而没有整个"按钮"接近?
代码:
public void initialize(URL location, ResourceBundle resources) {
// Link table cells to Rates object
currencyCol.setCellValueFactory(cellData -> cellData.getValue().currencyCodeProperty());
buyCol.setCellValueFactory(cellData -> cellData.getValue().buyRateProperty().asObject());
sellCol.setCellValueFactory(cellData -> cellData.getValue().sellRateProperty().asObject());
}
@FXML
public void populateRates() throws SQLException, ClassNotFoundException {
ObservableList<Rates> rates = RatesDAO.showRates();
currencyTable.setItems(rates);
System.out.println(rates);
}
答案 0 :(得分:1)
自JavaFX8以来,您不需要实现Initializable
。 FXMLLoader
将查找名为initialize()
且没有参数的方法,并且无效。
@FXML
private void initialize() { }
将polulateRates()
中的前两行移至initialize()
。
ObservableList<Rates> rates = RatesDAO.showRates();
currencyTable.setItems(rates):