gpt4 book ai didi

java - 在JavaFX Controller 类中添加向initialize()抛出异常的方法

转载 作者:行者123 更新时间:2023-12-02 02:31:40 26 4
gpt4 key购买 nike

我正在尝试初始化 TableView 元素,为此我需要从数据库获取数据。方法(位于 Controller 类中),从数据库获取数据并返回 ObservableList,抛出 SQLException 和 ClassNotFoundException。当我将该方法放入initialize()时,出现错误:

overridden method does not throw '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);
}

最佳答案

自 JavaFX8 以来,您不需要实现 InitializedFXMLLoader 将查找名为 initialize() 的方法,该方法不带参数且为 void。

@FXML
private void initialize() { }

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

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

关于java - 在JavaFX Controller 类中添加向initialize()抛出异常的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46994953/

26 4 0
文章推荐: java - 计算树中叶子的两种版本
文章推荐: java - 模拟特定类对象 stub 失败的测试mockito
文章推荐: Java : Method overriding in return statement
文章推荐: java - 通过反射根据字段名称对 List 进行排序