問題タブ [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 投票する
2 に答える
1583 参照

java - JTextAreaのデフォルト値?

私は、イベントディスパッチャスレッドを介してGUIを管理することだけを教えられてきました。現在textArea.append("something");、イベントディスパッチャスレッドの外部を使用していますが、プログラムの実行開始時に常にこれを実行したいと考えています。プログラムの起動時に動作するようにリスナーを設定するにはどうすればよいですか、または私が行ったことは受け入れられますか?

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

java - Java で計算を開始すると、Java の GUI がフリーズする理由

私はJavaアプリケーションを開発しています

しかし、私のアプリケーションは、アプリケーションのプロセスを開始するとフリーズします

したがって、プロセス中に GUI を更新できます

これを修正する方法はありますか?

お返事ありがとうございますthx

みんな私はすでにこれを試していますが、それでもGUIがフリーズします

ここに私のコードがあります

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

java - SwingのJTextAreaでsetTextを使用するときのデッドロック

私は次のJavaプログラムを持っていますが、これはすべての起動試行の約50%で開始されます。残りの時間は、GUIを表示せずにバックグラウンドでデッドロックします。問題をJTextAreaオブジェクトのsetTextメソッドにトレースしました。JButtonのような別のクラスを使用すると、setTextで機能しますが、JTextAreaはデッドロックします。誰かが私にこれが起こっている理由と次のコードの何が問題になっているのか説明できますか?

}

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

java - GUIを持つサーバーアプリケーションを作成する

GUI を持つアプリケーションを作成する必要があります。私のアプリケーションはサーバーとして動作する必要があります。開始時に、すべての着信接続を受け入れ、出力を JTextArea に書き込む必要があります。私の問題は、接続を受け入れる方法でServerSocket ss = new ServerSocket(port_number)と メソッドを作成する必要がある場所です。ss.accept私は自分のGUIのメインコンストラクターで作成しようとしましたが、GUIが動かなくなっServerSocketたというI/Oリクエストです。解決策を解決するためのアイデアはありますか?

GUI のコンストラクターで次のように作成します。

connection()サーバーソケットを作成して呼び出しを受け入れるメソッドはどこですか

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

java - Swing - ラベルの更新

メッセージ ラベルと送信ボタンがあります。送信ボタンは複数回押され、各プレスのアクションには最大 1 分かかる場合があります。

ボタンが押されたらメッセージを空にし、タスクが完了したらメッセージを「完了」に設定したいです。

submitActionPerformed()メソッドが実行される前 (またはメソッド内) で、ボタンがクリックされた後にそのメッセージ ラベルを更新することは可能ですか?

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

java - java SwingWorker.doInBackground() は GUI 要素にアクセスしてはなりません

これは些細なことかもしれませんが、SwingWorkerに関する簡単なドキュメントを理解するのに苦労しています。

コピペした内容はこちら

ワークフロー

SwingWorker のライフサイクルには、次の 3 つのスレッドが関係しています。

現在のスレッド: このスレッドで execute() メソッドが呼び出されます。ワーカースレッドでの実行のために SwingWorker をスケジュールし、すぐに戻ります。get メソッドを使用して SwingWorker が完了するのを待つことができます。

ワーカー スレッド: doInBackground() メソッドがこのスレッドで呼び出されます。これは、すべてのバックグラウンド アクティビティが発生する場所です。バインドされたプロパティの変更について PropertyChangeListeners に通知するには、firePropertyChange および getPropertyChangeSupport() メソッドを使用します。デフォルトでは、state と progress の 2 つのバインドされたプロパティを使用できます。

イベント ディスパッチ スレッド: Swing 関連のすべてのアクティビティは、このスレッドで発生します。SwingWorker は process メソッドと done() メソッドを呼び出し、このスレッドのすべての PropertyChangeListeners に通知します。

多くの場合、現在のスレッドはイベント ディスパッチ スレッドです。

--

ワーカー スレッドは EDT ではないため、doInBackground() のコードは GUI 要素にアクセスしてはなりません。私の理解は正しいですか?

背景: SwingWorker を使用する小さなコードがありますが、doInBackground() で FileChooser を作成し、setCurrentDirectory(). http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6637181 (11-クローズド、欠陥ではありません)とほぼ同じ例外が発生していると思われます 。

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

java - イベントディスパッチスレッド - レポート

私は疑問に思っていました.swingワーカーからメインスレッドに何らかの形で進行状況を報告したいので、進行状況の増加に応じて変化するラベルでインターフェースを更新できます。たとえば、

1/6 をチェックしています...

2/6をチェック中...

..

..

私はしばらくC#で似たようなことをしましたが、その方法を思い出せないので、このJavaアプリケーションにロジックを転送できません。バックグラウンドワーカーの代わりに、ここではスイングワーカーを使用しています

誰かが私が研究する必要があることを教えてください

ありがとう

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

java - Java: 2 番目のウィンドウが空白です

私は奇妙な問題を抱えています... 私は比較的新しい「熱狂的な」Java プログラマー (以前のキャリアでは Perl をハッキングして生計を立てていました) で、最初の半現実的なアプリケーションに取り組んでいます。「Main-Class」は、インスタンスMyAppを作成するクラスです。UserInputDialog

UserInputDialogは、私が作成したクラスでextendあり、 をJFrame実装ActionListenerKeyListener、 を使用し、 、、および Cancel/OK をFlowLayoutユーザーに提示します。が whereを生成するとき、または "OK"が を生成するとき、いくつかの入力検証を行い、 を呼び出し、次に を呼び出します。JLabelJTextFieldJButtonJTextFieldKeyEventkeyReleased() == KeyEvent.VK_ENTERJButtonActionEventUserInputDialogsetVisible(false)MyApp.doSomething( JTextFieldInstance.getText() )

それはすべて完璧に機能します。しかし、完了するまでにかなりの時間がかかる場合があるためMyApp、進行状況ウィンドウを に追加しようとしています。doSomething()

を拡張し、 を使用し、 in をトスするProgressWindowクラスを作成しました。と(ラップ) で。. テストデータからインスタンス化してフィードすると、完全に機能します。ループのテストをにコピーアンドペーストし、インスタンス化していない場合にも問題なく動作します(つまり、この動作を引き起こしている固有のものは何もありません。私が理解していない何らかの相互作用のようです。および)。JFrameBorderLayoutJProgressBarNORTHJScrollPaneJTextAreaCENTERProgressWindowProgressWindowTesterProgressWindowTesterMyAppMyAppUserInputDialogMyAppUserInputDialogProgressWindow

しかし、意図ProgressWindowしたとおりに使用しようとするMyAppと、つまりProgressWindowsetVisible(true) を使用すると、空白の Swing ウィンドウが表示されます (適切なサイズで、タイトル バーが適切に設定されています)。およびコンポーネントは表示さJProgressBarJScrollPane / JTextAreaません。ProgressWindowメソッドは適切に呼び出されていますMyApp(System.err.println()メッセージは適切な相互作用を示しています) ProgressWindow

コード スニペットを投稿することはできますが、ちょっと複雑で、おそらく明らかな何かが欠けているだけです...

UI とビジネス ロジックを一般的に分離するという概念には精通していますが (たとえば、 Perl アプリケーションを構築するときにHTML::TemplateandClass::DBIとを使用しCGI::Applicationました)、Java で「正しく行っている」かどうかはわかりません...

前もって感謝します!

ああ、コードを試した 2 つの環境でまったく同じ動作が得られます。Fedora 15 Linux ディストリビューション、カーネル 2.6.31.10-3、LXDE デスクトップ環境の javac 1.7.0_02[1]。

[1] oracle.com から直接ダウンロード。私; OpenJDK (JDK 7 が OpenJDK に基づいていることは知っています) や gcj などは使用していません。

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

java - Swing利用時の実行の流れ

JavaでのGUIプログラミングに慣れてきたばかりです。これは簡単なプログラム (O'Reilly の「Head First Java」から) で、一見すると理解しやすいように見えますが、私が理解していない側面があります。

この単純なプログラムをコンパイルして実行すると、ボタンのあるウィンドウが開きます。

私が理解していないのは、実行の流れで何が起こっているのかです。このプログラムを実行すると、Testクラスの static main メソッドが実行され、すべてのコマンドmain()が実行されます。では、ウィンドウが表示された後にプロセスが終了しないのはなぜですか? なぜ私はまだ無限ループのように見えるのですか? ループとは?

行を追加すると

そうなると、結果はさらに理解不能になります。もちろん、ウィンドウを閉じるとプログラムは終了します。しかし、やはり理由がわかりません。フレームはスタック上にありますが、プログラム フローがどこにあるのかわかりません。スタック上に何かが存在するだけでは、プログラムを存続させるのに十分ではありません。私が見る限り、私が読んでいる本ではカバーされていない基本的な何かが欠けています. 私はこれに少し驚いています -- 「Head first Java」はこれまで微妙な点を指摘し、実際に何が起こっているのかを説明するのに非常に優れていましたが、この点に対処していないようです (少なくとも私が見つけたものではありません)。 )。