問題タブ [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.
java - JTextAreaのデフォルト値?
私は、イベントディスパッチャスレッドを介してGUIを管理することだけを教えられてきました。現在textArea.append("something");
、イベントディスパッチャスレッドの外部を使用していますが、プログラムの実行開始時に常にこれを実行したいと考えています。プログラムの起動時に動作するようにリスナーを設定するにはどうすればよいですか、または私が行ったことは受け入れられますか?
java - Java で計算を開始すると、Java の GUI がフリーズする理由
私はJavaアプリケーションを開発しています
しかし、私のアプリケーションは、アプリケーションのプロセスを開始するとフリーズします
したがって、プロセス中に GUI を更新できます
これを修正する方法はありますか?
お返事ありがとうございますthx
みんな私はすでにこれを試していますが、それでもGUIがフリーズします
ここに私のコードがあります
java - SwingのJTextAreaでsetTextを使用するときのデッドロック
私は次のJavaプログラムを持っていますが、これはすべての起動試行の約50%で開始されます。残りの時間は、GUIを表示せずにバックグラウンドでデッドロックします。問題をJTextAreaオブジェクトのsetTextメソッドにトレースしました。JButtonのような別のクラスを使用すると、setTextで機能しますが、JTextAreaはデッドロックします。誰かが私にこれが起こっている理由と次のコードの何が問題になっているのか説明できますか?
}
java - GUIを持つサーバーアプリケーションを作成する
GUI を持つアプリケーションを作成する必要があります。私のアプリケーションはサーバーとして動作する必要があります。開始時に、すべての着信接続を受け入れ、出力を JTextArea に書き込む必要があります。私の問題は、接続を受け入れる方法でServerSocket ss = new ServerSocket(port_number)
と メソッドを作成する必要がある場所です。ss.accept
私は自分のGUIのメインコンストラクターで作成しようとしましたが、GUIが動かなくなっServerSocket
たというI/O
リクエストです。解決策を解決するためのアイデアはありますか?
GUI のコンストラクターで次のように作成します。
connection()
サーバーソケットを作成して呼び出しを受け入れるメソッドはどこですか
java - Swing - ラベルの更新
メッセージ ラベルと送信ボタンがあります。送信ボタンは複数回押され、各プレスのアクションには最大 1 分かかる場合があります。
ボタンが押されたらメッセージを空にし、タスクが完了したらメッセージを「完了」に設定したいです。
submitActionPerformed()
メソッドが実行される前 (またはメソッド内) で、ボタンがクリックされた後にそのメッセージ ラベルを更新することは可能ですか?
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-クローズド、欠陥ではありません)とほぼ同じ例外が発生していると思われます 。
java - イベントディスパッチスレッド - レポート
私は疑問に思っていました.swingワーカーからメインスレッドに何らかの形で進行状況を報告したいので、進行状況の増加に応じて変化するラベルでインターフェースを更新できます。たとえば、
1/6 をチェックしています...
2/6をチェック中...
..
..
私はしばらくC#で似たようなことをしましたが、その方法を思い出せないので、このJavaアプリケーションにロジックを転送できません。バックグラウンドワーカーの代わりに、ここではスイングワーカーを使用しています
誰かが私が研究する必要があることを教えてください
ありがとう
java - Java: 2 番目のウィンドウが空白です
私は奇妙な問題を抱えています... 私は比較的新しい「熱狂的な」Java プログラマー (以前のキャリアでは Perl をハッキングして生計を立てていました) で、最初の半現実的なアプリケーションに取り組んでいます。「Main-Class」は、インスタンスMyApp
を作成するクラスです。UserInputDialog
UserInputDialog
は、私が作成したクラスでextend
あり、 をJFrame
実装ActionListener
しKeyListener
、 を使用し、 、、および Cancel/OK をFlowLayout
ユーザーに提示します。が whereを生成するとき、または "OK"が を生成するとき、いくつかの入力検証を行い、 を呼び出し、次に を呼び出します。JLabel
JTextField
JButton
JTextField
KeyEvent
keyReleased() == KeyEvent.VK_ENTER
JButton
ActionEvent
UserInputDialog
setVisible(false)
MyApp.doSomething( JTextFieldInstance.getText() )
それはすべて完璧に機能します。しかし、完了するまでにかなりの時間がかかる場合があるためMyApp
、進行状況ウィンドウを に追加しようとしています。doSomething()
を拡張し、 を使用し、 in をトスするProgressWindow
クラスを作成しました。と(ラップ) で。. テストデータからインスタンス化してフィードすると、完全に機能します。ループのテストをにコピーアンドペーストし、インスタンス化していない場合にも問題なく動作します(つまり、この動作を引き起こしている固有のものは何もありません。私が理解していない何らかの相互作用のようです。および)。JFrame
BorderLayout
JProgressBar
NORTH
JScrollPane
JTextArea
CENTER
ProgressWindow
ProgressWindowTester
ProgressWindowTester
MyApp
MyApp
UserInputDialog
MyApp
UserInputDialog
ProgressWindow
しかし、意図ProgressWindow
したとおりに使用しようとするMyApp
と、つまりProgressWindow
setVisible(true) を使用すると、空白の Swing ウィンドウが表示されます (適切なサイズで、タイトル バーが適切に設定されています)。およびコンポーネントは表示さJProgressBar
れJScrollPane / JTextArea
ません。ProgressWindow
メソッドは適切に呼び出されていますMyApp
(System.err.println()
メッセージは適切な相互作用を示しています) ProgressWindow
。
コード スニペットを投稿することはできますが、ちょっと複雑で、おそらく明らかな何かが欠けているだけです...
UI とビジネス ロジックを一般的に分離するという概念には精通していますが (たとえば、 Perl アプリケーションを構築するときにHTML::Template
andClass::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 などは使用していません。
java - Swing利用時の実行の流れ
JavaでのGUIプログラミングに慣れてきたばかりです。これは簡単なプログラム (O'Reilly の「Head First Java」から) で、一見すると理解しやすいように見えますが、私が理解していない側面があります。
この単純なプログラムをコンパイルして実行すると、ボタンのあるウィンドウが開きます。
私が理解していないのは、実行の流れで何が起こっているのかです。このプログラムを実行すると、Test
クラスの static main メソッドが実行され、すべてのコマンドmain()
が実行されます。では、ウィンドウが表示された後にプロセスが終了しないのはなぜですか? なぜ私はまだ無限ループのように見えるのですか? ループとは?
行を追加すると
そうなると、結果はさらに理解不能になります。もちろん、ウィンドウを閉じるとプログラムは終了します。しかし、やはり理由がわかりません。フレームはスタック上にありますが、プログラム フローがどこにあるのかわかりません。スタック上に何かが存在するだけでは、プログラムを存続させるのに十分ではありません。私が見る限り、私が読んでいる本ではカバーされていない基本的な何かが欠けています. 私はこれに少し驚いています -- 「Head first Java」はこれまで微妙な点を指摘し、実際に何が起こっているのかを説明するのに非常に優れていましたが、この点に対処していないようです (少なくとも私が見つけたものではありません)。 )。