2016-06-27 17 views
0

Ich versuche, meine TitledPane nicht zu öffnen, wenn es gerade erweitert wird. Ich habe eine boolesche Variable erstellt, die isExpanding auf True setzt, wenn es expandiert, und auf false, wenn die Expansion abgeschlossen ist.JavaFx - Abbrechen eines MouseEvent

Mein Problem ist, dass, während ich die SceneBuilder GUI benutze, ich einen TitledPane habe, der beim Anklicken standardmäßig erweitert wird und ich glaube nicht, dass ich das ändern kann. Was ich brauche ist, wenn meine var isExpanding == true, dann ist das Klicken auf das TitledPane-Ereignis verbraucht, und es tut nichts.

Hier ist mein MouseEvent für wenn Sie auf den TitledPane klicken. Nachdem die Animation in einer anderen Funktion beendet wurde, wird der isExpanding auf false gesetzt.

@FXML 
private void handleTitledPaneMouseClickDNSAction(MouseEvent event) { 
    if(dnsTitledPane.expandedProperty() == null || dnsTitledPane.isExpanded() == false) { 
     animateCollapse(dnsPane, dnsTitledPane); 
     isExpanding = false; 
    } else { 
     expanTimeline = new Timeline(new KeyFrame(
      Duration.millis(15), 
      ae -> animateExpanstion(dnsPane, dnsTitledPane))); 
     expanTimeline.setCycleCount(Timeline.INDEFINITE); 
     expanTimeline.play(); 
     isExpanding = true; 
    } 
} 

Antwort

0

Es ist nur ein Workaround. Sie können in seinem Mausklick-Handler explizit set titledPane Expansion as false. Hier ist der Code:

titlePane.setOnMouseClicked((evt) -> { 
    if(isExpanding) 
    titlePane.setExpanded(false); 
    else 
    titlePane.setExpanded(true); 
});