問題タブ [edt]
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.
java - なぜEDT違反が発生するのですか?
私はCheckThreadViolationRepaintManager
EDT違反を検出するために使用し始めました。
それは不平を言う:
この方法generatePartnerSelectionPanel()
では気に入らないので気に入らないからです。JPanel panel = new JPanel();
しかし、なぜその周りに問題があるのかわかりません。
詳細についてはgeneratePartnerSelectionPanel()
、JPanelを生成します(EDTでは実行しません)が、次に、getParameter
JPanelをメインのJFrameに追加し、EDTで実行します(を使用invokeLater
)。
では、なぜ問題があるのでしょうか。
java - Java - SwingWorker - process() メソッドの問題
javax.swing.SwingWorker
初めて使用しています。
JLabel
次のように、swing ワーカーによって公開された中間結果からa を更新したいと思います。
を更新するためJLabel
に、次のようにコーディングしました。
上記のコードは機能しますが、私の問題 (より具体的には、私の疑問) は次のとおりです。
上記の Swing ワーカー タスクは匿名の内部クラスであるため、label
フィールドにアクセスできます。
しかし、swing ワーカー クラスを非インナー クラスにしたい場合はどうすればよいでしょうか。label
process() メソッドがアクセスできるように、swing ワーカー クラスのコンストラクターに引数として渡す必要がありますか。
または他の方法はありますか?
Swing ワーカー クラスが内部クラスでない場合、Swing ワーカー クラスの結果から UI コンポーネントを更新するために、他の開発者はどのようなアプローチに従いますか?
java - EDT で 2 つの GUI アクションを実行できますか?
JDialog で、ユーザーが JButton をクリックすると、EDT で 2 つの GUI アクションを実行したい:
- ユーザーに「間違ったプロセスが終了するまでお待ちください」と伝えるために、別の小さな JDialog をビジー状態のアイコンと共に表示します。
- JTable に大量のレコードを挿入する。
両方のアクションを実行しようとすると、期待どおり、「お待ちください」ダイアログが挿入プロセスをブロックします。
ご覧のとおり、両方のアクションを EDT で実行する必要があります。これに対する解決策はありますか?
java - java.awt.DesktopをEDTで使用する必要がありますか?
周りを見回すと、EDTでjava.awt.Desktopを使用する必要があるという要件が見つからず、その理由もわかりませんでしたが、明示的に使用されている場所は見つかりませんでした。いいので、結局、awtクラスなので聞いてみようと思いました。
いずれにせよ、公式に言うところはありますか?
text-editor - EDT エディター - 最新のアプローチ?
私はかなり前に VMS で EDT エディターを使用していました。この優れたテキスト エディタの最新の実装はありますか? もしそうなら、ソースコードはありますか? Emacs と Vim によって回避されるのでしょうか?
ありがとうございました
java - Swing イベント ハンドラーは、EDT のイベントの後にキューに入れる必要がありますか?
Swing イベント処理コードは、EDT のイベントの後にキューに入れる必要がありますか? もしそうなら、イベント ハンドラをスケジュールするのはイベント ソースの責任ですか、それとも後で実際の処理コードをスケジュールするのはイベント ハンドラの責任ですか?
検討:
SNIP 1
イベントの受信時にハンドラー コードを実行します。JButton
が によるイベントのスケジューリングを担当する場合、EventQueue.invokeLater()
これはおそらく正しいでしょう。SNIP 2
イベントを受信し、イベントの受信後にハンドラー コードのスケジューリングを担当します (この特定のイベント タイプの他のすべてのリスナーによって処理されます)。どちらが正しい?
編集: わかりやすくするために、最初のイベント ハンドラーの状態を変更すると、イベント時の元の状態がコンポーネントの他のイベント ハンドラーから隠される可能性があるため、後で EDT でイベント ハンドラーをスケジュールします。
java - SwingタイマーでJavaフルスクリーン排他モードを使用する
良い一日!フルスクリーン専用モードの標準スイングタイマーを使用したかったのです。このために、SwingWorkerを適用して、グラフィックモードを設定する必要がある場合のイベントを制御しました。以下のすべてのステップは、runメソッドで実行されます。run()はmainから呼び出されます。1)まず、SwingWorkerオブジェクトを作成し、その2つのメソッド(doInBackgroundとdone)をオーバーライドします。Initは、必要なすべてのグラフィック設定を現在のJFrameオブジェクトに設定し、キーリスナーオブジェクト(screen_listと呼ばれる)をバインドする必要があるため、重要なメソッドです。
2)次に、ActionListenerとKey Listenerを実装するscreenlistenerを作成します。これは、init()メソッドのKeyListenerとしてdispにバインドされています。
3)スイングタイマーを作成して初期化し、起動します。4)そして最後にexecuteメソッドを呼び出します:
私が書いたクラスScreenListenerは、KeyListenerとActionListenerを実装します。ActionPerfomedメソッドで、workerがそのジョブ(initメソッド)を実行したかどうかを確認します。はいの場合、現在の表示モードへの参照を取得して、何かを描画します。
キーボードからのイベントが処理されないのはなぜですか?
java - スイングスレッドセーフボイラープレート
簡単にするために、ファイルをダウンロードするアプリケーションを想像してみてください。進行状況を表示する1つのラベルが付いたシンプルなGUIがあります。EDT違反を回避するために、すべての合法的な市民のように、私は1つのスレッド(メイン)でファイルをダウンロードし、別のスレッド(EDT)でGUIを更新します。したがって、これがpseudcodeの関連するチャンクです。
Javaがクロージャをサポートしておらず、コードが非常に明確であるという事実が気に入っています。冗談はさておき、私は疑問に思っています...私はそれを間違っていますか?SwingUtilities
すべての方法での匿名の実装などで、この醜い定型文をすべて排除することは可能Runnable
ですか?
私の場合はこれより少し複雑ですが、プロキシなどを実装してオーバーエンジニアリングしないようにしています。
javascript - toLocaleString() を使用して JavaScript を介して返された日付から「EDT」を削除する最良の方法
私はJavaScriptに比較的慣れていないので、これは本当に簡単な質問かもしれません. toLocaleStringで返された日付の後に「EDT」の印刷を停止する簡単な方法はありますか? ありがとう!
java - Swing では、イベントを EDT イベント キューの一番上に投稿できますか?
イベントをイベントキューの一番下に置くのではなく、InvokeLater() 関数だけが行うことを行う方法を探しています。少なくとも私はそれが私が望むことをすると思います、多分もっと良い方法があります。以下は、私が複製しようとしていることを説明しています。
何年も前に、現在のイベントの処理中に CriticalChore リストに Chore オブジェクトを追加できる機能を備えた Mac で C++ フレームワークを使用していました。これは、Swings EDT に相当するコードの実行中に行います。現在のイベントの処理が終了した後、GetNextEvent() を呼び出す直前に、フレームワークは CriticalChore リストが空かどうかをチェックします。リストにアイテムが含まれている場合は、Perform() (つまり、run()) 関数が呼び出されます。リストが終了すると、すべてのアイテムが削除されました。
この機能は本当に便利でした。早い段階でイベントを処理しているときに、追加のコードを実行する必要があることを知っていることがよくありますが、それは他の多くのコードが処理された後でのみです。しかし、最も重要なことは、EDT キューからの他のイベントが処理される前に、このコードを処理する必要があることです。