問題タブ [event-dispatch-thread]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
1534 参照

java - Swing スレッドをロックしない方法で JXTable.packAll() を呼び出す方法はありますか?

SwingXプロジェクトJXTableから大量のデータを表示しています。データをロードした後、テーブルを呼び出しますが、200 百の列と 30,000 のレコードがある場合、5 秒以上かかる場合があります。これは、UI が 5 秒間ロックされていることを意味するスイング スレッドから呼び出しています。バックグラウンド スレッドを呼び出してみましたが、疑ったとおり、これを行うと奇妙な副作用が生じます。を呼び出した後、マウスをテーブルの上に置くと、テーブル内のすべての数値が常に異なる数値に更新されているように見えます。このような大きなテーブルの列をパックするときに、JXTable で適切なユーザー エクスペリエンスを得る方法はありますか。packAll()packAllpackAll()

0 投票する
3 に答える
3013 参照

java - JOptionPane.showMessageDialog と swing.utils.invokeAndWait の (イベントディスパッチ) スレッドセーフな使用法は何ですか?

実行のメインスレッドからいくつかのダイアログボックスをユーザーに表示する必要がある単純なグルーヴィーなスクリプトがあります。

私のスイングの知識は限られており、錆びていますが、イベントディスパッチスレッド (EDT) に GUI を保持するように注意する必要があることについて読んだことを思い出します。

メイン スレッドから静的JOptionPane.showMessageDialogメソッドを呼び出すだけで、GUI を EDT に保持するという正しい慣行に違反すると想定するのは正しいでしょうか?

次のコード例のように、実際に swing.utils.invokeAndWait メソッドを使用する必要がありますか?

上記では、invokeAndWait の完了後にメッセージ ダイアログ以外の値を使用できるようにするために何もしません。

おそらく、グルーヴィーな「クロージャー」が Runnable を実装するという事実は、上記よりも単純なコードになるでしょう。

invokeAndWait は必要ですか? もしそうなら、誰かが正しい実装の例を挙げて、groovyを使用してconfirmDialogのような結果を得ることができますか?

0 投票する
3 に答える
1411 参照

java - Swing で EDT をプロファイリングするにはどうすればよいですか?

Swing で作成しているアプリケーションがあります。スクロールとズームが可能なチャート コンポーネントがあり、パンとズームができます。UI が約 750 ミリ秒一時停止することがありますが、その理由がわかりません。これは常に発生するとは限りませんが、アプリケーションで何かが発生し、6 ~ 8 秒ごとにこのように一時停止することがあります。

実行に 750 ミリ秒程度かかるイベントが EDT に配置されていることは明らかです。これは発生すべきではありません。

このように EDT を具体的にプロファイリングするにはどうすればよいですか? 私が本当にやりたいことは、イベントが EDT で実行されるたびに、イベントにかかった合計時間をログまたは System.out に出力することです。これを行う方法はありますか?

または、私のためにこれを実行し、EDT で実行されるすべてのログと所要時間のログを提供するツールはありますか?

このログを調べて、時間がかかっているものをすべて調べて、問題を見つけたいと思います。

0 投票する
4 に答える
2786 参照

java - イベント スレッドで実行中のすべてを表示する方法

何かがスイング スレッドをフリーズさせている場所を追跡できないバグが発生しています (現在ほぼ 2 週間が経過しており、実際の結果はありません) - 私たちは経験豊富な Swing プログラマーですが、巨大なプログラムを持っており、それがレガシーコード

JDK で実際のEventQueueクラスを編集する以外に、イベント ディスパッチ スレッドで現在実行されているコードのすべての部分を表示できるようにする方法はありますか?イベントディスパッチスレッドに入るか、出ますか?

0 投票する
1 に答える
519 参照

java - ボタンを非表示にし、ボタンをクリックした後、2 秒待ってから再び表示する

私が作成しているこの学校のプロジェクトがあります。ここでは、コードでボタンを非表示にしてからスリープさせてから続行する必要がありますが、ボタンを非表示にすることはありません。

ボタンを押すと開始されるクラスが1つあり、ボタンを非表示にする別のメソッドを開始し、別のクラスで完全に実行する一連のことを実行するメソッドを開始し、3番目のメソッドを開始します最初に行うべきことはスリープですが、ボタンを非表示にする前にスリープし、ボタンの非表示を完全にスキップします。

コードの部分は次のとおりです (デンマークの値/メソッド名は気にしないでください)。

この部分が if.. で囲まれていることは知っていますが、このように呼び出されます。

そして、「computertur」メソッドの開始時

EDT:s に適したコマンドについて読みましたinvokeAndWaitが、それを使用して一時停止するにはどうすればよいでしょうかmythread... または、さらに良い質問ですが、ボタンを非表示にしないのはなぜですか? :)つまり、私の頭の中で、他のsetVisible(false)何よりも前に呼び出すと、他のことをする前にそれが非表示になります..なぜそうしないのですか?

0 投票する
2 に答える
2873 参照

java - Java イベントキュー。すべてを invokelater メソッドに含める必要があるのはなぜですか?

私が読んでいる本では、マルチスレッドを使用した GUI のすべての例に次のようなものがあります。

(つまり、EventQueue)。コードはメイン (EDT) スレッドで自動的に実行されませんか?

0 投票する
2 に答える
633 参照

java - イベントディスパッチスレッドで2つのコンポーネントを同時に実行するにはどうすればよいですか?

私はJButtonを持っており、それをクリックすると、データベースからいくつかのデータをロードし、多くのコントロールを持つJDialogを初期化し、ロードされたデータでそれらのコントロールを埋めてから、遅いJDialogを表示します。これは、最終的にJDialogを表示するのに約3〜5秒かかります。これにより、プログラムがひどくフリーズします。

SwingXのJXBusyLabelを使用して小さなJDialogを作成し、このような遅いプロセスの読み込みと初期化中にビジーなラベルを表示しました。しかし、遅いダイアログを初期化しながら、EDTでこのビジーラベルJDialogを実行するにはどうすればよいですか?

注:データベースからのデータのロードは遅くありませんが、重いJDialogとそのコンポーネントを初期化すると、処理が遅くなります。

0 投票する
2 に答える
91 参照

java - Javaでは、event-dispatch-threadが入力イベントの処理から戻るたびに呼び出されるルーチンを使用できますか?

私はGUIに取り組んでおり、下で状況が変化したときに表示を更新するルーチンがあります。

update()を「頻繁に」呼び出さないようにしています。つまり、多数のプロパティが連続して設定されている場合は、update()を1回だけ呼び出すようにします。

すべてのユーザー入力イベント(key / mouse / etc)の後にupdate()を呼び出すことは可能ですか?これは手動で行うこともできますが、イベントハンドラーが非常に多く、忘れてしまうことはわかっています。Javaでこれを行うことはできますか?

0 投票する
2 に答える
282 参照

java - EDTの外部でGUIを実行しているSunのデモ?

私はSplashDemo.javaJavaSunチュートリアルから見ています。このクラスは、アプリケーションの起動時にスプラッシュ画面を作成する方法を示しています。SplashDemoは、mainメソッドで直接フレームを作成します。この例では、?を使用してイベントディスパッチスレッドで実行されるGUIコードを実行しないのはなぜOKinvokeLaterですか?

完全なソースは次のとおりです。

0 投票する
2 に答える
317 参照

java - マルチスレッド環境での再描画

私は約 10 の異なるデータソース (統計/エラー ログなど) を持つアプレットに取り組んでいます。各データソースは、単一のネットワーク接続によって更新され、オブザーバー メカニズムを介して更新を報告します。アプレットには、データの一部を表示するさまざまなビューがあります。すべてのビューは、データの一部のみに関心があり、必要な Observables で Observer として自身を登録します。

The views(extended JPanels) mostly consist of standard swing components (e.g. JLabels, JButton, ...). Some attributes of the components in the views depend on information from the underlying data model.

Example:

This logic is implemented in the paintComponent() method of the StatisticPanel and the update() methods just calls repaint(), because I didn't want the manipulate the components outside of the EDT.

Is this the intended way of updating swing components in a multi-threaded environment? Is it better to use a Runnable with SwingUtitlies.invokeLater()? Are there better approaches for this problem?