JavaFXで画面UIからの操作により、更新処理を実行しています。
その際、更新処理に時間が掛かるのでsetCursor(Cursor.WAIT)でマウスカーソルを変更して
「ただいま更新処理をしてますよ」というのを示したいと思っています。
操作により発生したイベント処理で
setCursor(Cursor.WAIT) → 更新処理 → setCursor(Cursor.DEFAULT)
と書いてみたのですが、更新処理中にマウスカーソルが変化せず狙い通りにいきませんでした。
更新処理をスレッドにすれば上手くいくのではないかと次のように書いたのですが、これでも上手くいきません。
java
1Scene scene = pane.getScene(); // コンテナよりsceneを取得 2Cursor bkCur = scene.getCursor(); 3scene.setCursor(Cursor.WAIT); // マウスカーソル変更 4 5ExecutorService service = Executors.newSingleThreadExecutor(); 6Future<Boolean> future = service.submit( () -> { // 更新処理スレッド 7 Thread.sleep(10000); // ダミー処理 8 return true; 9 } 10); 11 12Boolean thResult = future.get(); // スレッドの終了を待つ 13scene.setCursor(bkCur); // マウスカーソルを戻す 14
処理中にマウスカーソルを変更しても処理が終了して画面に制御が戻らないとカーソルに反映できないようですが、
処理中にマウスカーソルを変更するにはどうしたらよいでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/18 09:34 編集
2019/02/19 01:30 編集