0

親愛なる皆さん、私はスイング関連の問題を抱えています。会社の方針に反しているため、コードを共有することはできませんので、問題を説明するために最善を尽くします。

つまり、JLabelを含むJWindowを拡張するクラスを作成しました。このJLabelのテキストは、scheduleAtFixedRateメソッドを使用して50ミリ秒ごとにTimerTaskをインスタンス化するタイマーオブジェクトを介してランダムに更新されます。JLabelの値は、特定のデバイスへのデータの送信を処理する別のスレッド(送信スレッドと呼びます)のメソッドを呼び出すことによって取得されます。問題は、デバイスへの送信が終了するまでJWindowがコンテンツなしで画面に表示されることです。そうすると、送信スレッドの最後の結果が得られます。問題は何でしょうか?

4

2 に答える 2

2

この例に示すように、の代わりにjava.util.Timerjavax.swing.Timerがより便利な場合があります。

于 2011-05-05T09:38:24.400 に答える
1

問題は、イベントディスパッチスレッド(EDT)以外のスレッドでスイングコンポーネントにアクセスすることです。これは禁止されています。

すべてのswingコンポーネントのjavadocには、次のページへのリンクがあります:http: //download.oracle.com/javase/6/docs/api/javax/swing/package-summary.html#threading、ここでスレッド化ポリシーが詳細に説明されています。

于 2011-05-05T09:39:53.000 に答える