亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何讓 JavaFX 在運行下一行代碼之前等待節點完成配置

如何讓 JavaFX 在運行下一行代碼之前等待節點完成配置

郎朗坤 2022-05-25 15:34:48
我必須執行一個復雜的過程來加載需要不同時間的圖像,并且在此過程運行時,我想通知用戶一個進程實際上正在后臺運行。為此,我已經放棄了一些動畫,因為它實際上必須在不同線程的背景中,所以我想要的只是一個大紅色文本,上面寫著“正在加載......請稍候”。簡化示例:主要:public class Controller {    @FXML    StackPane mainPane;    Text text;    public void initialize(){        text = new Text();        text.setText("please wait");        text.setVisible(false);        mainPane.getChildren().add(text);    }    public void handleMouseClick(){        text.setVisible(true);        longProcess();        text.setVisible(false);    }    public void longProcess(){        try {            Thread.sleep(10000);        } catch (InterruptedException e) {            e.printStackTrace();        }    }}Fxml 文件:<?import javafx.scene.layout.StackPane?><StackPane fx:controller="sample.Controller"           xmlns:fx="http://javafx.com/fxml"           fx:id="mainPane"           onMouseClicked="#handleMouseClick"></StackPane>因此,這段代碼創建了一個簡單的堆棧窗格并向其中添加了一個不可見的文本,然后在鼠標單擊時它應該首先顯示文本然后使線程休眠(類似于我的漫長過程)然后使文本再次不可見但它只是使線程休眠和由于某種原因不顯示文本。
查看完整描述

2 回答

?
米脂

TA貢獻1836條經驗 獲得超3個贊

將您的 handleMouseClickMethod 更改為如下所示,它應該可以工作


public void handleMouseClick(){

    int delayTime = 10;//Set this to whatever you want your delay in Seconds

    Label text = new Label("please wait");

    mainPane.getChildren().add(text);

    final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();

    executorService.scheduleAtFixedRate(()->

            Platform.runLater(()->mainPane.getChildren().remove(text)), delayTime, 1, TimeUnit.SECONDS);

}


查看完整回答
反對 回復 2022-05-25
?
慕田峪9158850

TA貢獻1794條經驗 獲得超8個贊

編輯:


由于 kleopatra 指出舊代碼段不起作用,我已經搜索了如何做到這一點并找到了這個答案:


“以下代碼將暫停并更改標簽中的值(完全公開,我正在重用我為另一個問題編寫的代碼):”


https://stackoverflow.com/a/26454506/10971694


老的:


下面的代碼會有幫助嗎?


while(!node.isVisible()){

   System.out.println("waiting...");

   try {

       Thread.sleep(delay);

   } catch (InterruptedException e) {

       e.printStackTrace();

   }

}


查看完整回答
反對 回復 2022-05-25
  • 2 回答
  • 0 關注
  • 114 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號