根据命令反转 TranslateTransition

Reversing TranslateTransition on command

我正在尝试在 BorderPane 的左节点上执行 TranslateTransition。单击时我可以将节点转到 'slide in',但 'slide out' 未按预期工作。这是代码片段。

@Override
public void initialize(URL url, ResourceBundle rb) {
    vbx_lfpane.setVisible(false);
}    

@FXML
private void paneClicked(MouseEvent event) {
    if(vbx_lfpane.isVisible()) {
        vbx_lfpane.setVisible(false);
        TranslateTransition tt1 = new TranslateTransition(Duration.millis(500), vbx_lfpane);
        tt1.setFromX(vbx_lfpane.getLayoutBounds().getMinX());
        tt1.setToX( - (vbx_lfpane.getLayoutBounds().getMinX() + vbx_lfpane.getWidth()));
        tt1.play();
    } else {
        vbx_lfpane.setVisible(true);
        vbx_lfpane.setTranslateX(-vbx_lfpane.getWidth());
        TranslateTransition tt2 = new TranslateTransition(Duration.millis(500), vbx_lfpane);
        tt2.setByX(vbx_lfpane.getWidth());
        tt2.play();
    }
}

在开始 "slide out" 过渡之前,您将 vbx_lfpane 的可见性设置为 false。转换完成后,您需要将可见性设置为 false

tt1.setOnFinished(e -> vbx_lfpane.setVisible(false));
tt1.play();