Swing/SecondaryLoop のバックアップ(No.4)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/SecondaryLoop へ行く。
- category: swing folder: SecondaryLoop title: SecondaryLoopを使用してイベント・ディスパッチ・スレッド上で別途イベント・ループを実行する tags: [SecondaryLoop, InputEvent, JLayer] author: aterai pubdate: 2015-10-12T05:29:04+09:00 description: SecondaryLoopを使用して、イベント・ディスパッチ・スレッドをブロックせずに、別スレッドをイベント・ループを実行します。 image:
概要
SecondaryLoop
を使用して、イベント・ディスパッチ・スレッドをブロックせずに、別スレッドをイベント・ループを実行します。
Screenshot
Advertisement
サンプルコード
layerUI.setInputBlock(true);
final SecondaryLoop loop = Toolkit.getDefaultToolkit().getSystemEventQueue().createSecondaryLoop();
Thread work = new Thread() {
@Override public void run() {
doInBackground();
layerUI.setInputBlock(false);
loop.exit();
}
};
work.start();
loop.enter();
View in GitHub: Java, Kotlin解説
上記のサンプルでは、JLayerで指定したコンポーネントへの入力を禁止と同様のJLayer
を使用して任意のコンポーネントへの入力可不可を切り替えていますが、SwingWorker
を使用するのではなく、SecondaryLoop
を使用して、バックグラウンドで処理を実行している間でも、イベント・ディスパッチ・スレッドをブロックしないようにしています。
参考リンク
- Hidden Java 7 Features – SecondaryLoop @ sellmic.com
- SecondaryLoop (Java Platform SE 8)
- JLayerで指定したコンポーネントへの入力を禁止