JAVA Swing 图形设计的一个延时问题

用网上找到的Thread.sleep(1000);的时候,程序就一直卡着了,没有用多线程,只用主线程的话,延迟要怎么做到?比如点击按钮弹出多个窗口,想要每隔1s跳出一个,... 用网上找到的 Thread.sleep(1000);的时候,程序就一直卡着了,没有用多线程,只用主线程的话,延迟要怎么做到?
比如点击按钮弹出多个窗口,想要每隔1s跳出一个,用Thread.sleep()会等一会儿一起跳出来
展开
 我来答
百毒千毒
2018-12-12 · TA获得超过4737个赞
知道大有可为答主
回答量:2504
采纳率:88%
帮助的人:650万
展开全部
import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.Serializable;
import java.util.Timer;
import java.util.TimerTask;

import javax.swing.JButton;
import javax.swing.JFrame;
public class Day12_A extends JFrame implements Serializable{
JButton but=new JButton("弹窗");
boolean flag=false;
Timer timer = new Timer();
public int x=0,y=0;
private static final long serialVersionUID = 1L;
Day12_A(){
this.setTitle("延迟弹窗");
this.setBounds(x,y,200,200);
this.setResizable(false);
this.setDefaultCloseOperation(3);
init();
this.setVisible(true);
}
private void init() {
this.add(but,BorderLayout.SOUTH);
but.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent m) {
if(flag)
timer.cancel();
else
time();
flag=!flag;
}
});
}
private void method() {
x=y+=102;
JFrame jf=new JFrame();
jf.setBounds(x,y,100,100);
jf.setResizable(false);
jf.setDefaultCloseOperation(2);
jf.setVisible(true);
}
public  void time() {
        timer.schedule(new TimerTask() {
            public void run() {
             method();
            }
        }, 2000, 1000);
      
}
public static void main(String[] args) {
new Day12_A();
}
}

xl8191250
2018-12-12 · TA获得超过1046个赞
知道小有建树答主
回答量:739
采纳率:36%
帮助的人:128万
展开全部
sleep就是延迟,具体你那里有问题你什么都不说也不知道
更多追问追答
追问
就是比如一个按钮。点下去后会弹出多个窗口。我想要这多个窗口1s弹出一个。不过用sleep延迟1s进去下一个循环。运行的时候等了一会儿多个窗口一起弹出来
追答
你的代码逻辑有问题,实在不行直接用Timer来设置定时任务
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式