首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaFX:如何在特定时间内禁用按钮?

JavaFX:如何在特定时间内禁用按钮?
EN

Stack Overflow用户
提问于 2013-06-04 21:54:10
回答 4查看 10.1K关注 0票数 6

我想在JavaFX应用程序中禁用某个特定时间的按钮。有没有这样做的选择?如果没有,有什么办法可以解决这个问题吗?

下面是我在应用程序中的代码。我尝试过Thread.sleep,但我知道这不是阻止用户单击next按钮的好方法。

代码语言:javascript
复制
nextButton.setDisable(true);
final Timeline animation = new Timeline(
        new KeyFrame(Duration.seconds(delayTime),
        new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent actionEvent) {
                nextButton.setDisable(false);
            }
        }));
animation.setCycleCount(1);
animation.play();
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-06-04 22:16:03

您可以使用提供相关图形用户界面调用的线程的简单方法(当然是通过runLater() ):

代码语言:javascript
复制
new Thread() {
    public void run() {
        Platform.runLater(new Runnable() {
            public void run() {
                myButton.setDisable(true);
            }
        }
        try {
            Thread.sleep(5000); //5 seconds, obviously replace with your chosen time
        }
        catch(InterruptedException ex) {
        }
        Platform.runLater(new Runnable() {
            public void run() {
                myButton.setDisable(false);
            }
        }
    }
}.start();

这可能不是实现它的最巧妙的方法,但可以安全地工作。

票数 6
EN

Stack Overflow用户

发布于 2013-06-04 22:49:28

您也可以使用Timeline

代码语言:javascript
复制
  final Button myButton = new Button("Wait for " + delayTime + " seconds.");
  myButton.setDisable(true);

  final Timeline animation = new Timeline(
            new KeyFrame(Duration.seconds(delayTime),
            new EventHandler<ActionEvent>() {
                @Override public void handle(ActionEvent actionEvent) {
                    myButton.setDisable(false);
                }
            }));
  animation.setCycleCount(1);
  animation.play();
票数 4
EN

Stack Overflow用户

发布于 2013-06-04 21:58:00

禁用JavaFX控件的方法为:

代码语言:javascript
复制
myButton.setDisable(true);

您可以以您希望的任何方式以编程方式实现时间逻辑,可以通过轮询计时器或通过调用此方法来响应某些事件。

如果已在SceneBuilder中通过FXML创建了此按钮实例,则应为该按钮指定一个fx:id,以便在加载场景图期间将其引用自动注入控制器对象。这将使您更容易在控制器代码中使用。

如果您已经以编程方式创建了这个按钮,那么您的代码中就已经有了它的引用。

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

https://stackoverflow.com/questions/16919727

复制
相关文章

相似问题

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