ユーザーがボタンを押すと、メッセージがテキスト領域に表示され、2〜3秒後に消えるコードがあります。
Thread.sleep(milliseconds) でこれを行う必要がありますが、機能していないようです (はい、try/catch とすべてで使用しています)。これが私のリスナーです:
private class moveListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
CardLayout cl = (CardLayout)(cards.getLayout());
for(int i = 0; i < 4; i++)
{
for(int j = 0; j < 3; j++)
{
if(e.getSource() == move[i][j])
{
turn++;
if(turn == 4)
turn = 0;
text.setText(""+SPRITES[i]+" has used " + move[i][j].getText() );
try {
Thread.sleep(3000);
} catch (InterruptedException ex) { }
text.setText("");
cl.show(cards, MAIN);
}
}
}
}
これを実行すると、プログラム全体がフリーズするのを感じることができます (おそらく sleep() メソッドが原因です)。言い換えれば、どこに行くべきか クリック > 表示 > 残り > 消去; クリック>残り>消去します。
私は他の方法を試しました: これは古典的な for(int i = 0; i < 9999999; i++) を 20 回のように実行していましたが、それは Thread.sleep() の方法と同じことをしました。
これを修正する方法はありますか?スレッドでUIを使用するのは悪いことについて読んだことがありますが、それが何を意味するのかわかりません....どんな助けも大歓迎です。