1

でチャットルームを構築していJFrameます。を200 ミリ秒JFrameごとに更新して、新しいテキストが入力されるたびに.JFrame

使ってみwhile(true)ましたがJFrameフリーズします。

コードにタイマーを追加するには?

4

2 に答える 2

3

JFrameでチャットルームを構築しています。新しいテキストが入力されるたびに JFrame 内に表示されるように、JFrame を 200 ミリ秒ごとに更新する必要があります。

while(true) を使用してみましたが、JFrame がフリーズします。

コードにタイマーを追加するには?

  • 同意JFrameできません。JComponent( JTextComponent) のみ更新できません。2 番目の面に変更がある場合のみです。

  • 200milisecondは非常に短い時間です。この短い時間にテキスト メッセージを書くことはできません。750milis - one second

  • または を使用util.Timerして、 から無限ループを開始しますRunnable#Thread

  • の代わりにブールローカル変数を使用しますwhile(true)。たとえば while(canRun)、必要に応じてループを停止および開始することができます

  • Swing GUIfrom util.Timer/へのすべての出力Runnable#Threadは にラップする必要がありinvokeLater、実際の変更があるメソッドのみ、メソッド全体ではなく fromSwing APIsなどのメソッド、出力、接続などの作成を担当する void です。setText()append()

  • は使用しないでSwingWorkerください。無限ループに適した API ではありません。一度だけ実行するように指定されています。

  • 次に、(またはSwingWorkersから呼び出された)のいくつかのインスタンスで同時実行が可能です。すべてが終了し、(いくつかのインスタンスが)同時にライブではないことを誰も保証できないため、最良の選択はループから呼び出されます。TimerExecutorRunnable#Thread

于 2013-06-11T11:45:30.537 に答える