如何在单击鼠标时从列表视图启动动画-JAVAFX

时间:2019-03-27 16:55:23

标签: javafx

我创建了场景,动画,列表视图,我的问题是在列表视图中单击动画时如何使它们播放,而且我还需要创建一个动画,以便一次可以播放多个动画。

这是我的代码:

    Group group = new Group();

    Circle circle = new Circle(50, 300, 50);
    circle.setFill(Color.RED);

    TranslateTransition translate = new TranslateTransition();
    translate.setByX(400);
    translate.setDuration(Duration.millis(1000));
    translate.setCycleCount(500);
    translate.setAutoReverse(true);
    translate.setNode(circle);

    FadeTransition fade = new FadeTransition();
    fade.setDuration(Duration.millis(1000));
    fade.setFromValue(10);
    fade.setToValue(0.1);
    fade.setCycleCount(500);
    fade.setAutoReverse(true);
    fade.setNode(circle);

    ScaleTransition transition = new ScaleTransition();
    transition.setByX(1);
    transition.setByY(1);
    transition.setDuration(Duration.millis(1000));
    transition.setCycleCount(500);
    transition.setAutoReverse(true);
    transition.setNode(circle);

    ListView listView = new ListView();
    listView.setPrefWidth(120);
    listView.setPrefHeight(90);
    listView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);

    listView.getItems().add("Translate Transition");
    listView.getItems().add("Fade Transition");
    listView.getItems().add("Scale Transition");





    group.getChildren().addAll(circle, listView);

    Scene scene = new Scene(group, 600, 600);

    primaryStage.setScene(scene);

    primaryStage.show();
}

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    launch(args);
}

}

所以,我有一个问题:

当我在列表视图中单击某些动画时,如何开始播放动画(一次最多可以播放一个动画)。

1 个答案:

答案 0 :(得分:2)

您可以将侦听器添加到列表视图中,以在选择项目时侦听。像这样:

listView.getSelectionModel().selectedItemProperty().addListener((obs, ov, nv) -> {
    if(nv != null && "Translate Transition".equals(nv)){
         translate.play();
    }
    //Etc...
});