問題タブ [awt-eventqueue]
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 - Java Swing ProgressBar は、長いプロセス中に更新されません
TCP ソケットを介してデータ ブロックをデバイスに送信するプログラムを作成しました。各ブロックが書き込まれるたびに、デバイスは確認パケットを返します。プログラムは、確認応答を受信するたびに次のブロックを書き込みます。この書き込み/読み取りシーケンスは、時間/タイマー ベースではありません。デバイスが肯定応答を返すと、プログラムは続行されます。
JProgressBar を更新したい。プログラムは正常に動作しますが、処理が進むにつれて JProgressBar が更新されません。通信プロセスはタイマー ベースではないため、JProgressBar を処理するためのタイマー ベースのスレッドは機能しません。少なくとも、今はそう考えています。私のニーズに近いソリューションはすべて、タイマーベースのようです。私はこれらが機能するとは思わず、それらを機能させるための私の実行可能な試みは完全に失敗しました.
このセグメントで、私は近いと思います: JProgressBar をサポートするために「EventQueue」スレッドを機能させようとしていますが、今のところ機能していません。私はマルチスレッド アプリケーションの専門家ではないので、具体的に教えてください。私は本当に困惑しています。
java - オーバーラップするパネルに図形を描画します。一方のパネルは静止して描画し、もう一方のパネルは可動を描画します
Swing アプリケーションを作成しています。移動体アプリの一種のロードマップです。形状コンポーネントを 2 つJPanel
の に分割します。1 つは static component JPanel
、2 つ目は dynamic componentJPanel
で、両方とも mainPanel に追加されています。両方のパネルが重なっており、動的コンポーネント パネルの場合、opaque を false にして透明にします。動的コンポーネント パネルの再描画を行うと、静的コンポーネント パネルの再描画もトリガーされます。動的コンポーネント パネルの形状に変更があり、静的コンポーネント パネルの形状が消去されるべきでない場合、毎回静的コンポーネント パネルを再描画したくありません。
現在、私のロジックは以下のとおりです。疑似コードです。静的コンポーネントの上に可動コンポーネントを描画し、起動時に静的コンポーネントを一度描画する方法を教えてください。
出力:ペイント2
jpanel - 別の関数に登録すると JTextField NullPointerException が発生する
JPanel オブジェクトのセットを一度に作成できる関数を作成しようとしました。ただし、フィールドへのユーザーの入力によって作成されたデータを処理しようとすると、NullPointerException
. ラベル/フィールドを作成し、buildPanel
メソッドでパネルに追加すると、すべて問題ありません。このnewSet
方法では、エラーが発生します。オブジェクトはウィンドウに正しく表示されますが、リスナーで情報を取得できないようです。また、パネルを関数に渡さないようにしましたが、違いはありません。この方法でテキストフィールドを登録できますか?
オブジェクトに適用されずtextField
、daysF
代わりに、関数が完了した後に実際には存在しない「テキスト」と呼ばれるラベルを作成していると思います。
後で計算するためにテキスト入力を double に変換するリスナーを次に示します。
私はNullPointerException
ここに着いていますfield.getText()
。
スレッド「AWT-EventQueue-0」での例外 java.lang.NullPointerException
ここにもスタックトレースがあります。
java - イベント ディスパッチ スレッド (EventQueue) からの別のスレッドの停止
JDialog を拡張するログイン フォームがあります。ユーザーは、カードをスワイプするか、ユーザー名とパスワードを入力してログインできます。
磁気ストライプ リーダーと通信するデーモンを作成しましたRunnable
。起動すると、カードのスワイプが要求され、カードがスワイプされるまで待機します。アプリケーションが何か他のことをするためにリクエストをキャンセルする必要がある場合、このスレッドがキャッチするイベントを生成し、カード スワイプを待つリクエストをキャンセルします。
ユーザーがカードをスワイプすると、アプリケーションはユーザー ID のトラックを読み取って検証します。認証が成功すると、停止コマンドがカード スワイプ デーモンに送信され、スレッドが停止します。
ユーザーがユーザー名とパスワードを入力すると、swing パッケージはログイン ボタンのクリック イベントに応答するスレッド (AWT-EventQueue-0) にアクセスし、ログイン資格情報の評価に進みます。
私の問題は、アプリケーションがこの AWT-EventQueue-0 スレッド上にあるときはいつでも、停止イベントをカード スワイプ デーモンに送信しても機能せず、デーモンがスレッド スタックに留まることです。
編集 1:停止コマンドは、カード スワイプ ログインで完全に正常に機能します。カードスワイプスレッドを正常に終了します。このシナリオでは、現在のスレッド スコープは CardSwipeThread にあります。
この問題は手動ログインで発生します。ユーザーがログイン ボタンをクリックすると、現在のスコープ スレッドは AWT-EventQueue-0 またはイベント ディスパッチ スレッドになります。CardSwipeThread の volatile ブール値を false に更新しても、実行は停止しません。
編集 2: リーダーがアプリケーションと通信するのは、カードがスワイプされたときだけであり、スワイプを必要としない手動ログインで問題が発生します。したがって、ブロックされた IO 操作が原因で CardSwipeThread が適切に終了しないという問題はありません。茂みの後ろに隠れていることがわかりました。
これは私のコードの一部です:
LoginDialog.java
SwipeReader.java
CardSwipeDaemon.java
csv - JTable スイング例外
これは、約 1 日前に尋ねた質問のフォローアップです。コードをデバッグしようとしても成功しませんでしたが、基本的に、アプリケーションでは、ユーザーがインポートまたは表示する CSV を選択した後、選択できるようになっています。 JTable 内の Csv の内容のみを表示するファイル。現在、csv でデータを表示できますが、想定どおりに Jtable に表示されません。これは、以下のプログラムのコードです。ただし、netbeans がスローする例外があります。
スローされた例外:
JTable の代わりに、netbeans 出力パネルに表示される結果の一部を次に示します。