問題タブ [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違反が発生するのですか?
私はCheckThreadViolationRepaintManagerEDT違反を検出するために使用し始めました。
それは不平を言う:
この方法generatePartnerSelectionPanel()では気に入らないので気に入らないからです。JPanel panel = new JPanel();しかし、なぜその周りに問題があるのかわかりません。
詳細についてはgeneratePartnerSelectionPanel()、JPanelを生成します(EDTでは実行しません)が、次に、getParameterJPanelをメインのJFrameに追加し、EDTで実行します(を使用invokeLater)。
では、なぜ問題があるのでしょうか。
java - Java - SwingWorker - process() メソッドの問題
javax.swing.SwingWorker初めて使用しています。
JLabel次のように、swing ワーカーによって公開された中間結果からa を更新したいと思います。
を更新するためJLabelに、次のようにコーディングしました。
上記のコードは機能しますが、私の問題 (より具体的には、私の疑問) は次のとおりです。
上記の Swing ワーカー タスクは匿名の内部クラスであるため、labelフィールドにアクセスできます。
しかし、swing ワーカー クラスを非インナー クラスにしたい場合はどうすればよいでしょうか。labelprocess() メソッドがアクセスできるように、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 キューからの他のイベントが処理される前に、このコードを処理する必要があることです。