2016-12-25 70 views
2

我需要測試所選項目的值來調用不同的方法的聽衆,所以我寫這篇文章的代碼添加監聽,但代碼生成語法錯誤JavaFX的組合框上添加所選項目價值

@FXML 
private JFXComboBox<String> cmbComp; 

cmbComp.valueProperty().addListener(new ChangeListener<String>() { 
     public void changed(ObservableValue<String> composant, String oldValue, String newValue) throws SQLException { 

      if(/*test item value*/){ 
       /*do something*/ 
      }else{ 
       /*do other thing*/ 
      } 
     } 
    }); 

也我不需要舊的價值和新的價值,只需測試選定的價值,我怎樣才能傳遞論據?


我發現錯誤,這裏是新的代碼,我希望它可以幫助別人

cmbComp.getSelectionModel().selectedItemProperty().addListener((options, oldValue, newValue) -> { 
      System.out.println(newValue) 
    } 
    ); 
+0

嘗試'ObservableValue <?擴展String> composant'而不是'ObservableValue < String> composant' – Kachna

+0

參見http://docs.oracle.com/javafx/2/api/javafx/beans/value/ChangeListener.html – Kachna

+0

它是這樣的,它會產生更多的錯誤 – devhicham

回答

2

一個解決方案,更直接一點,避免一些代碼行額外的添加操作監聽器(理想情況下來自場景製作者)到組合框,如下所示:

private void comboAction(ActionEvent event) { 

    System.out.println(comboBox_DbTables.getValue()); 

}