添加抛出JavaFX控制器类

时间:2017-10-28 22:04:58

标签: java javafx initialization tableview

我正在尝试初始化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);
}

1 个答案:

答案 0 :(得分:1)

自JavaFX8以来,您不需要实现InitializableFXMLLoader将查找名为initialize()且没有参数的方法,并且无效。

@FXML
private void initialize() { }

polulateRates()中的前两行移至initialize()

ObservableList<Rates> rates = RatesDAO.showRates();
currencyTable.setItems(rates):