Java Swing: changing text after delay

Basically, I have this game. Once I guess the correct answer, it starts a new game of new words I want to display correctly! But after three seconds, change it to an empty string What do I do?

My attempt:

if (anagram.isCorrect(userInput.getText()))
    {

        anagram = new Anagram();
        answer.setText("CORRECT!");
        word.setText(anagram.getRandomScrambledWord());
        this.repaint();
        try
        {
        Thread.currentThread().sleep(3000);
        }
        catch (Exception e)
        {
        }
        answer.setText("");

    } else
    {
        answer.setForeground(Color.pink);
        answer.setText("INCORRECT!");
    }

Edit:

My solution

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
    {
        // TODO add your handling code here:
    if (anagram.isCorrect(userInput.getText()))
    {
        answer.setText("CORRECT!");

        ActionListener taskPerformer = new ActionListener()
    {
    public void actionPerformed(ActionEvent evt)
    {
        anagram = new Anagram();
        word.setText(anagram.getRandomScrambledWord());
        answer.setText("");
        userInput.setText("");
    }
    };
    Timer timer = new Timer(3000,taskPerformer);
    timer.setRepeats(false);
    timer.start();
    } else
    {
        answer.setForeground(Color.pink);
        answer.setText("INCORRECT!");
    }
    }

I'm not sure, but I hope I follow mad programmer's advice instead of blocking the event itself, but a new thread I also look for Java timer

Solution

Swing is an event - driven environment When an event scheduling thread is blocked, no new events can be processed

You should never block EDT in any time-consuming process (such as I / O, loop, or thread #sleep)

You may want to read the event dispatch thread for more information

Instead, you should use javax swing. Timer. It will trigger actionlistener after a given delay

The advantage is that the actionperformed method is executed in the context of event dispatching thread

For examples, see this or this or this or this

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>