2017-10-28 10 views
0

TableView要素を初期化しようとしています。そのために、DBからデータを取得する必要があります。 DBからデータを取り出し、ObservableListを返すメソッド(コントローラクラスにあります)は、SQLExceptionとClassNotFoundExceptionをスローします。私は)(初期化中にその方法を置くとき、私はエラーを取得:JavaFXコントローラクラスで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); 
} 

答えて

0

あなたはJavaFX8以来Initializableを実装する必要はありません。 FXMLLoaderは、引数なしでinitialize()と呼ばれるメソッドを探し、無効になります。

@FXML 
private void initialize() { } 
initialize()polulateRates()内の2つの最初の行を移動

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

本当にありがとうございます。 –

関連する問題