2016-05-23 17 views
0

我正在創建一個自定義CheckBoxTableView,其中所選項目與CheckBox一起顯示。如果用戶一旦選擇了項目就試圖對錶格進行排序,它看起來就搞亂了。我想提醒用戶看看他們是否願意繼續。如果是這樣,我想清除選擇,如果不是,只需要消耗事件,以便排序不會發生。如何在JavaFX8上的TableView上攔截MouseEvent.MOUSE_CLICKED

不幸的是 - 我的EventFilter似乎在排序完成後觸發。

在構造函數的TableView,我把下面的代碼:

addEventFilter(MouseEvent.MOUSE_CLICKED, event -> { 
    if(event.getTarget() instanceof TableColumnHeader) { 
     Alert a = new Alert(Alert.AlertType.CONFIRMATION); 
     a.setContextText("you sure?"); 
     Optional<ButtonType> bt = a.showAndWait(); 
     if(bt.isPresent() && bt.get() == ButtonType.OK){ 
      //Clear selection 
      getSelectionModel().clearSelection(); 
     }else { 
      event.consume(); 
     } 
    } 
}); 

但是當我EventFilter火災,該表已排序。

有什麼想法?

回答

0

使用MouseEvent.MOUSE_PRESSED

MouseEvent.MOUSE_CLICKEDMouseEvent.MOUSE_RELEASED後被解僱這是來不及攔截監聽器和監聽器:)

+1

我都嘗試 - 既不工作。但是我能夠使用SortEvent.ANY並解決了它。 –