Java 暂停Swing GUI

Java 暂停Swing GUI,java,swing,timer,wait,thread-sleep,Java,Swing,Timer,Wait,Thread Sleep,嘿! 因此,我从netbeans java gui开发开始,遇到了以下问题: 我制作了一个带有按钮和文本字段的窗口。当用户单击按钮时,我希望文本字段开始延迟键入。例如: textfield.text=h wait(1) sec textfield.text=he wait(1) sec textfield.text=hel wait(1) sec textfield.text=hell wait(1) sec textfield.text=hello 我已经尝试过使用Thread.sleep(

嘿! 因此,我从netbeans java gui开发开始,遇到了以下问题:

我制作了一个带有按钮和文本字段的窗口。当用户单击按钮时,我希望文本字段开始延迟键入。例如:

textfield.text=h
wait(1) sec
textfield.text=he
wait(1) sec
textfield.text=hel
wait(1) sec
textfield.text=hell
wait(1) sec
textfield.text=hello
我已经尝试过使用
Thread.sleep()
,但在上面的示例中,它会等待4秒钟左右,然后显示整个文本(因此它不会给我想要的打字效果)


有人能帮我解决这个问题吗?

如果使用
线程.睡眠(…)
或任何其他延迟Swing事件线程的代码,那么最终将使整个Swing事件线程进入睡眠状态,并使应用程序进入睡眠状态。这里的关键是使用一个。在计时器的ActionListener的actionPerformed方法中,添加一个字母并增加索引,然后使用该索引决定下一步添加哪个字母

i、 e


如果您使用
Thread.sleep(…)
或延迟Swing事件线程的任何其他代码,那么最终将使整个Swing事件线程进入睡眠状态,并与应用程序一起进入睡眠状态。这里的关键是使用一个。在计时器的ActionListener的actionPerformed方法中,添加一个字母并增加索引,然后使用该索引决定下一步添加哪个字母

i、 e


通过使用类似这样的东西使其工作:

Timer a,b,c

Timer c=new Timer(500, new ActionListener(){public void actionPerformed(ActionEvent e){textfield.setText(abc)}})

Timer b=new Timer(500, new ActionListener(){public void actionPerformed(ActionEvent e){textfield.setText(ab);c.start()}})

Timer a=new Timer(500, new ActionListener(){public void actionPerformed(ActionEvent e){textfield.setText(a);b.start()}})

a.setRepeats(false);
b.setRepeats(false);
c.setRepeats(false);

a.start()

有没有人知道一种更简单的方法可以达到同样的效果?

通过使用类似的方法来实现:

Timer a,b,c

Timer c=new Timer(500, new ActionListener(){public void actionPerformed(ActionEvent e){textfield.setText(abc)}})

Timer b=new Timer(500, new ActionListener(){public void actionPerformed(ActionEvent e){textfield.setText(ab);c.start()}})

Timer a=new Timer(500, new ActionListener(){public void actionPerformed(ActionEvent e){textfield.setText(a);b.start()}})

a.setRepeats(false);
b.setRepeats(false);
c.setRepeats(false);

a.start()

有没有人知道一种更简单的方法可以达到同样的效果?

看看这个答案,它实现了一个专门为实现您想要的功能而设计的Swing计时器。看看这个答案,它实现了一个Swing定时器,专门用来做你想让它做的事情。你能写一个适合我的例子的完整的代码例子吗?我将非常感激。@user2580136:不,相信我,通过使用我的想法和自己编写完整的示例代码,您将获得更多,学到更多。如果你被卡住了,请带着你的代码和问题回来。我给你留了一个链接,请看一下。祝你好运我会努力的,但我担心我会落泪:/@user2580136:这都是学习经历的一部分。最好先学会为代码而汗流浃背,然后再乞求代码。@user2580136:不,继续努力,你会得到它的!你能写一个适合我的例子的完整的代码例子吗?我将非常感激。@user2580136:不,相信我,通过使用我的想法和自己编写完整的示例代码,您将获得更多,学到更多。如果你被卡住了,请带着你的代码和问题回来。我给你留了一个链接,请看一下。祝你好运我会努力的,但我担心我会落泪:/@user2580136:这都是学习经历的一部分。最好先学会为代码而汗流浃背,然后再乞求代码。@user2580136:不,继续努力,你会得到它的!