でチャットルームを構築していJFrame
ます。を200 ミリ秒JFrame
ごとに更新して、新しいテキストが入力されるたびに.JFrame
使ってみwhile(true)
ましたがJFrame
フリーズします。
コードにタイマーを追加するには?
JFrameでチャットルームを構築しています。新しいテキストが入力されるたびに JFrame 内に表示されるように、JFrame を 200 ミリ秒ごとに更新する必要があります。
while(true) を使用してみましたが、JFrame がフリーズします。
コードにタイマーを追加するには?
同意JFrame
できません。JComponent
( JTextComponent
) のみ更新できません。2 番目の面に変更がある場合のみです。
200milisecond
は非常に短い時間です。この短い時間にテキスト メッセージを書くことはできません。750milis - one second
または を使用util.Timer
して、 から無限ループを開始しますRunnable#Thread
。
の代わりにブールローカル変数を使用しますwhile(true)
。たとえば while(canRun)
、必要に応じてループを停止および開始することができます
Swing GUI
from util.Timer
/へのすべての出力Runnable#Thread
は にラップする必要がありinvokeLater
、実際の変更があるメソッドのみ、メソッド全体ではなく fromSwing APIs
などのメソッド、出力、接続などの作成を担当する void です。setText()
append()
は使用しないでSwingWorker
ください。無限ループに適した API ではありません。一度だけ実行するように指定されています。
次に、(またはSwingWorkers
から呼び出された)のいくつかのインスタンスで同時実行が可能です。すべてが終了し、(いくつかのインスタンスが)同時にライブではないことを誰も保証できないため、最良の選択はループから呼び出されます。Timer
Executor
Runnable#Thread