首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于javafx中的PauseTransition

关于javafx中的PauseTransition
EN

Stack Overflow用户
提问于 2020-06-05 01:44:03
回答 1查看 355关注 0票数 0

当我点击带有文本" click“(button_to_click)的按钮时,十个其他按钮(一个包含十个元素的按钮数组)会将背景颜色更改为”红色“。以下是我的代码

代码语言:javascript
复制
package sample;

import javafx.animation.PauseTransition;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.scene.control.*;
import javafx.util.Duration;

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception{

        VBox root = new VBox();

        Button button_to_click = new Button("Click");

        Button[] buttons = new Button[10];

        root.getChildren().add(button_to_click);

        for(int i = 0; i <= 9; i++){
            buttons[i] = new Button(""+i);
            root.getChildren().add(buttons[i]);
        }

        button_to_click.setOnAction(e->{
            for(int i = 0; i <= 9; i++){
                buttons[i].setStyle("-fx-background-color:red");
                PauseTransition pause = new PauseTransition(Duration.seconds(1));
                pause.play();
            }
        });


        primaryStage.setScene(new Scene(root, 300, 275));
        primaryStage.show();
    }


    public static void main(String[] args) {
        launch(args);
    }
}

所有的按钮同时改变它的背景颜色,这不是我想要的。

EN

回答 1

Stack Overflow用户

发布于 2020-06-05 02:58:09

您对待PauseTransition就像对待Thread.sleep调用一样。但PauseTransition并不是这样工作的。

即使它是相同的,睡眠调用也不会做你想要的事情。与大多数用户界面工具包一样,JavaFX是单线程的,因此休眠调用会挂起应用程序。

暂停转换发生在后台线程中。您想要的是在pause finishes中更改按钮的颜色

代码语言:javascript
复制
button_to_click.setOnAction(e -> {
    for (int i = 0; i <= 9; i++) {
        Button button = buttons[i];

        PauseTransition pause = new PauseTransition(Duration.seconds(i));
        pause.setOnFinished(
            f -> button.setStyle("-fx-background-color:red"));
        pause.play();
    }
});

请注意,我已经将PauseTransition的持续时间从seconds(1)更改为seconds(i)。这不是最有效的方法,但它只需要对现有代码进行最少的更改。它将导致在经过i秒后调用每个按钮的setStyle方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62200942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档