0

ここ数か月、私は Java でプログラミングを試みましたが、ほとんどの場合問題はありませんでしたが、現在、ボイドの操作に問題があります。私のプログラムでは、ユーザーがボタンを押すと、複数のメッセージが JLabel に表示されるようになり、メッセージは Thread.sleep() メソッドで広がります。どういうわけか、最後の 1 つだけが送信されてしまいます。これが私のコードです。すべてではありませんが、どこかに問題があると確信しています。そこにあるエラー出力は、コードで何が起こっているのかを確認するためのものでしたが、明らかにそれらは機能しませんでした。

private class ClickListener implements ActionListener 
{    
    public void actionPerformed(ActionEvent e)
    {
        try {
            if (e.getSource() == exitButton)
                System.exit(0);

            else if (e.getSource() == button1)
                alValue = "This is the new message text.";
            System.err.println(alValue);
            createNewArrayList();
            Thread.sleep(3000);
            alValue = "Back to invisible...";
            System.err.println(alValue);
            createNewArrayList();
            Thread.sleep(2000);
            alValue = "";
            System.err.println(alValue);
            createNewArrayList();
        } catch (InterruptedException ex) {
            Logger.getLogger(EmptySpace.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

private void createNewArrayList() {
    ArrayList al = new ArrayList();
    al.add(alValue);
    label1.setText("" + al);
}
4

2 に答える 2

2

を呼び出すThread.sleep()のではなく、代わりにEDTSwing Timerを使用してください。System.outそれに応じて期間間隔を調整して、通話間の遅延を変化させます。ステートメントの範囲を明確にするために、常に中括弧を使用してください。if

于 2012-12-17T22:11:58.747 に答える
0

これがタイプミスかどうかはわかりませんが、 alvalue を actionperformed() 関数のメンバーとして定義していません。また、Java インデントでは、中かっこ {} を配置する必要があるスコープを測定するものではありません

if (e.getSource() == button1)
  {
                 alValue = "This is the new message text.";
                 System.err.println(alValue);
                 createNewArrayList();
                 Thread.sleep(3000);
                 alValue = "Back to invisible...";
                 System.err.println(alValue);
                 createNewArrayList();
                 Thread.sleep(2000);
                 alValue = "";
                 System.err.println(alValue);
                 createNewArrayList();
}
于 2012-12-17T22:08:06.550 に答える