2016-05-23 10 views
0

Ich erstelle eine benutzerdefinierte CheckBoxTableView, wo die ausgewählten Elemente mit einer CheckBox angezeigt werden. Wenn der Benutzer versucht, die Tabelle zu sortieren, sobald Elemente ausgewählt sind, scheint es zu versauen. Ich möchte den Benutzer auffordern, zu sehen, ob sie fortfahren möchten. Wenn ja, möchte ich die Auswahl löschen, wenn nicht, einfach das Ereignis konsumieren, damit die Sortierung nicht passiert.Abfangen von MouseEvent.MOUSE_CLICKED auf TableView auf JavaFX8

Leider - mein EventFilter scheint zu schießen, nachdem die Sortierung abgeschlossen wurde.

Auf dem Tableview-Konstruktor, legte ich den folgenden Code:

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(); 
     } 
    } 
}); 

Aber von der Zeit meiner Eventfilter Feuer hat die Tabelle sortiert wurde.

Irgendwelche Gedanken?

Antwort

0

Verwenden MouseEvent.MOUSE_PRESSED

MouseEvent.MOUSE_CLICKED nach MouseEvent.MOUSE_RELEASED gefeuert, die zu spät Zuhörer abzufangen und Hörer :)

+1

Ich habe versucht, beide - weder gearbeitet. Jedoch konnte ich SortEvent.ANY verwenden und das löste es. –