問題タブ [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.

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

emacs - Emacs Tpu-edt エミュレーション スクロール マージンの起動

tpu-edt エミュレーションで emacs を起動したときに、スクロール マージンを自動的に有効にするのを手伝ってくれる人はいますか? 現在、_emacs ファイル (WinXP) には次の行が含まれています。

TPU はうまく機能し、コマンドを手動で指定できます

次に、上部と下部のパラメーターを入力するように求められ、それらを指定すると正常に機能します。tpu-extras.el ファイルのサンプル行を _emacs ファイルに追加してみました。

しかし、次のメッセージが表示されます:
Symbol's function definition is void: tpu-set-scroll-margin

ヘルプ!スクロール マージンは、これまでで最高の機能です。

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

java - GUIを備えたJava Swingの別のコア

プログラムのコア部分とプログラムの GUI 部分を分離する方法がわかりません。実際、Web 上のすべての例では、GUI アクションは SwingUtilities.invokeLater() メソッドで実行する必要があると書かれています。

問題は、このメソッドを使用して GUI 部分のみを処理する方法と、コアと GUI が通信する方法を理解できないことです。

たとえば、いくつかの計算の GUI 表示を担当するクラスがあります。

そして私は私のプログラムのコアを持っています:

このアーキテクチャが理想的ではないことはわかっていますが、使用する必要があります。私の質問は、EDT を使用して GUI 部分とコア部分を分離する必要があるかどうかです。そして、答えが「はい」の場合、どうすればよいですか?

可能であれば、GUI クラスを使用するユーザーに対して EDT 呼び出しが透過的である必要があります。

編集:

次の GUI クラスの変換は期待どおりの動作をしますか?

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

java - EDT スレッドから非 EDT スレッドで Future.get() を呼び出しても問題ありませんか?

これは、単体テストのコンテキストにあります (実際にそうです)。

テストの最後に、結果がどうであれ、コードでJFileChooserダイアログの存在 (可視性) をチェックし、表示されている場合は閉じます。

もちろん、ダイアログを閉じるにはさまざまな方法がありますが、人間の行動を模倣するために (そして、ここで関心のある種類の質問の例を示すために) を使用することにしjava.awt.Robotました。後者のメソッドは非 EDT スレッドで実行する必要があります。

実際、 Robot を拡張して という便利なメソッドを含めたtype_inputので、

最初に Alt キーを押し、次に F4 キーを押し、次に F4 キーを離してから Alt キーを押します。人間がウィンドウ/ダイアログを閉じるのと同じです。

このダイアログが閉じられるまでコードを次のテストに実行したくないので、Runnable使用を送信します。invokeAndWaitEDT で可視性とフォーカスをテストする必要があります。しかし、前述したように、Robot メソッドは非 EDT で実行する必要があります。

get()EDT でこのようにすることで潜在的な問題はありますか? GUI が応答しなくなる可能性はありますか? 問題は、フレームワークが特定の条件下で「新しい EDT ポンプを開始する」ことができると聞いたことです。これは、私が最もよく知らない EDT 関連の問題の 1 つであることを告白しなければなりません...

後で

私の回答で述べたように、これは当面のケースに対する特定の実際的な解決策に関するものではありません.別のEDT「イベントポンプ」がFuture.get()EDTをブロックして開始するかどうか、またいつ開始するかを理解しようとしています. 私が言うように、この側面全体を理解するのは難しいと思います。JOptionPaneの静的メソッド (EDT で実行する必要があります。SO ad nauseam の投稿を参照) の使用は、これらのメソッド (EDT をブロックします!) が実際には GUI の機能を妨げないように見えることを示しています (NBこれらJOptionPaneの 、またはそれらJDialogの がモーダルかモードレスかを混同しないでください)。

私の理解では、これは「フレームワーク」が別の「イベントポンプ」を開始するという事実によるものです。では、ここでそうすることができますか?

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

java - ハングした Java Swing アプリケーションからのこのスレッド ダンプを解釈する方法は?

ハングしたJava Swing アプリケーションからの次のスレッド ダンプがあります。ボタンをクリックするとハングし、GUI が空白に変わりました。ソケット通信とタスク管理の他のスレッドはまだ動作しています (ログ ファイルからわかります)。関係のない出力をいくつか削除しました。

#13 AW-EventQueue-0はソケットを介してコマンドを送信する必要がありますが、そこで失敗したようです。#20#21は#13 と同じではないW -EventQueue-0-SharedResourceRunnerですか? デッドロックはないようですが、GUI が応答せず、空白になりました。

ぶら下がっている原因について何か有益な情報はありますか?

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

java - 繰り返される AWT イベントを破棄/結合する方法は?

ユーザーがなんらかのアクション (ボタンのクリックなど) を行ったときに、JLabel にステータスを表示する必要があります。このステータスは 2 秒後に消える必要があります。そのために以下を使用します。

ただし、ユーザーがボタンを何度もクリックすると、このタイマーが複数回トリガーされる可能性があります。これには望ましくない影響があります。インスタンスの場合、ボタンが 3 回クリックされたとき。

0 秒目: 1 回目のクリック: 2 秒目でラベルが消える

1 秒目: 2 回目のクリック: 3 秒目でラベルが消える

2 秒目: 3 回目のクリック: 4 秒目でラベルが消える

ここでは、ラベルは 4 秒後に消える必要がありますが、2 秒後に消えます。したがって、このラベルを最後のイベントの後に 2 秒の遅延で非表示にしたい

これを処理するために、アトミック カウンターを使用します。

各タスクには、counter.incrementAndGet() を使用して一意の「taskCounter」が与えられます

.

上記は、トリガーされた最後のイベントである場合にのみ実行されます。それを確実にするために、私のラベルは最後のイベントの少なくとも 2 秒後に表示されたままになります。

この問題に対処するより良い方法はありますか?

0 投票する
0 に答える
22 参照

java - すべて/ほとんどの awt.Toolkit メソッドを EDT で実行する必要がありますか?

... 具体的には、getSystemClipboard()... を使用して、コンテンツの取得や設定などを行っています。

API doc (Java 7) の冒頭で次のように述べています。

反対が明示的に指定されていない場合、多くの GUI イベントはユーザーに非同期で配信される場合があります。同様に、多くの GUI 操作を非同期で実行できます。この事実は、コンポーネントの状態が設定され、その状態がすぐに照会された場合、返された値がまだ要求された変更を反映していない可能性があることを意味します。

... Toolkit のメソッド (およびクリップボードのメソッド) を EDT で実行する必要があるかどうかと、これがどのように関係しているかはまったくわかりません...!

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

axapta - 定義された EDT を使用してすべてのテーブルを見つける方法は?

特定の拡張データ型を含むすべてのテーブルを検索するジョブを作成するにはどうすればよいですか?

この JOB を見つけましたが、エラーが表示されます

0 投票する
0 に答える
202 参照

java - Swing の複数の EventDispatcher スレッド

大きなプロジェクトで、より長い実行時間の後に複数のイベント ディスパッチャ スレッドが使用されていることをログで見つけました。

ログ出力は、類似した名前を持つ複数のスレッドを検出する関数からのものです。アプリケーションは webstart を介して起動されるため、起動時に 1 つの edt が JavaConsole 用である可能性がありますが、なぜ残す必要があるのでしょうか? 複数の edt が同時にアクティブになっていますか?