2014-04-29 40 views
1

你好,我們試圖在我們的tableView中爲我們的組合框使用一個事件處理程序。 但由於某些原因,事件處理程序無法啓動。經過漫長的搜索,我們仍然沒有找到答案,所以我們絕望。 這裏是我們的代碼:tableView onEditCommit中的Java FX組合框不起作用

//ComboBoxes in Tableview 
    @FXML 
    private TableColumn<Presentatie, Dag> dagC; 
    dagC.setCellValueFactory(new PropertyValueFactory<Presentatie, Dag>("dag")); 
    dagC.setEditable(true); 
    dagC.setCellFactory(ComboBoxTableCell.<Presentatie, Dag>forTableColumn(dataD)); 

    EventHandler<TableColumn.CellEditEvent<Presentatie, Dag>> nameEditHandler = new EventHandler<TableColumn.CellEditEvent<Presentatie, Dag>>() { 
     @Override 
     public void handle(TableColumn.CellEditEvent<Presentatie, Dag> e) { 
      Presentatie p = e.getRowValue(); 
      Dag newValue = e.getNewValue(); 
      p.setDag(newValue); 
      System.out.println("PLEASE"); 

     } 
    }; 
    dagC.setOnEditCommit(nameEditHandler); 

而且我們dataD是FXCollections.observableArrayList。

我們正在與場景製作者合作,這可能是問題嗎?我們在某處閱讀場景構建器不更新事件處理程序。如果是的話,我們需要做些什麼來使這些代碼有效? 請大家幫忙,我們會很感激。

+0

看起來沒錯。組合框是否按預期顯示?請注意,如果您的'Presentatie'類具有'public ObjectProperty dagProperty(){...}'方法,那麼您的'onEditCommit'處理程序是多餘的:'PropertyValueFactory'將負責從單元格項目到屬性。 –

回答

0

場景製作者不是問題。出於某種原因,顯示值爲null的字符串會導致問題。一種解決方案是用空的""字符串替換null值。