2016-05-23 10 views
0

CheckBoxで選択された項目が表示されるカスタムCheckBoxTableViewを作成しています。項目が選択されると、ユーザーが表をソートしようとすると、それは混乱しているように見えます。私は、ユーザーに彼らが続行したいかどうかを確認するように促したいと思います。もしそうなら、私は選択をクリアしたい、そうでなければ、ソートが起こらないように単にイベントを消費する。JavaFX8のTableViewでMouseEvent.MOUSE_CLICKEDを傍受する方法

残念ながら - ソートが完了した後、私のEventFilterが起動するようです。

テーブルビューのコンストラクタで、私は次のコードを配置:

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_CLICKEDは、リスナーを傍受するために手遅れとリスナー:)

+1

私は両方試したことMouseEvent.MOUSE_RELEASED後に解雇されました。しかし、私はSortEvent.ANYを使用することができ、それを解決しました。 –

関連する問題