Java 睡眠使整个线程暂停

Java 睡眠使整个线程暂停,java,swing,timer,wait,thread-sleep,Java,Swing,Timer,Wait,Thread Sleep,我知道我的代码不像是按照java约定编写的,但这只是一个小小的测试。。。 我在班上得了JFrame。这个JFrame应该显示,然后消失一段时间,输入JTextField jtf,而另一个帧NFrame frameZero出现。在那之后,它应该再次出现,frameZero应该消失。 所以我只需要暂停我的方法一段时间的代码 我的问题是:如果使用Thread.sleep()尝试了它,但这里的问题是整个线程都会休眠,因此NFrame frameZero此时不会执行任何操作。 我还尝试了wait()方法,

我知道我的代码不像是按照java约定编写的,但这只是一个小小的测试。。。 我在班上得了JFrame。这个JFrame应该显示,然后消失一段时间,输入JTextField jtf,而另一个帧NFrame frameZero出现。在那之后,它应该再次出现,frameZero应该消失。 所以我只需要暂停我的方法一段时间的代码

我的问题是:如果使用Thread.sleep()尝试了它,但这里的问题是整个线程都会休眠,因此NFrame frameZero此时不会执行任何操作。 我还尝试了wait()方法,这也不起作用

我的代码:

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class MainNF{

    public static void main(String[]args){
        MainNF m=new MainNF();
    }

    JTextField jtf;
    JFrame j;
    JPanel acd;
    JPanel [] eingabe;
    JButton play;
    int letzterScore;

    public MainNF(){
        j=new JFrame("Menue");
        acd=new JPanel();
        letzterScore=0;
        acd.add(new JLabel("Letzter Score: "+letzterScore));
        j.add(acd);

        eingabe=new JPanel[2];
        eingabe[0]=new JPanel();
        eingabe[1]=new JPanel();
        eingabe[1].setLayout(new BoxLayout(eingabe[1], BoxLayout.Y_AXIS));
        eingabe[1].add(new JLabel("Sekunden fuer das naechste Spiel"));
        jtf=new JTextField();
        eingabe[1].add(jtf);
        eingabe[0].setLayout(new BoxLayout(eingabe[0], BoxLayout.X_AXIS));
        eingabe[0].add(eingabe[1]);
        play=new JButton("Los!");
        play.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){
            j.setVisible(false);
            letzterScore=play(getPlaytime());
            j.setVisible(true);
        }});
        eingabe[0].add(play);
        j.add(eingabe[0]);
        j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        j.setBounds(200, 200, 400, 400);
        j.setVisible(true);
    }

    public int play(){
        NFrame frameZero=new NFrame();
        try{
            Thread.sleep(getPlaytime());
        }
        catch(InterruptedException e){}
        frameZero.setAllInvisible();
        return frameZero.amount();
    }

    public int getPlaytime(){
        return Integer.parseInt(jtf.getText());
    }

}
上一次我用计时器试了一下,但根本没有停顿:

public int play(){
    NFrame frameZero=new NFrame();
    ActionListener taskPerformer = new ActionListener() {
    public void actionPerformed(ActionEvent evt) {

    }};
    Timer t = new Timer(getPlaytime(), taskPerformer);
    t.setRepeats(false);
    t.start();
    frameZero.setAllInvisible();
    return frameZero.amount();
}
所以我不知道该怎么办。。。 …如果您能帮助我,
public int play()
是从事件调度线程的上下文中调用的,它阻止它处理重绘请求和新事件

改用Swing
定时器
,有关更多详细信息,请参阅

<>你也可以考虑看一看和