在运行界面里加一个暂停按钮,可以在执行的时候随时暂停,求大神

{
private JFrame frm = new JFrame("Demo");
private JButton btnPause = new JButton("Pause");
private JLabel lblTest = new JLabel("0");
private boolean isPaused = false;
private int seconds = 0;

 public void run () {
         while (true) {
                 while (isPaused);
                 seconds ++;
                 lblTest.setText(seconds + "");
                 try {
                         sleep(200);
                 } catch (InterruptedException ie) {}
         }
 }

 public PCmx () {
         frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         frm.setResizable(false);
         frm.setLayout(null);
         frm.setSize(150, 200);
         frm.setLocationRelativeTo(null);

         lblTest.setBounds(20, 50, 100, 25);

         btnPause.setBounds(20, 120, 100, 30);
         btnPause.addActionListener(new ActionListener() {
                 public void actionPerformed (ActionEvent ae) {
                         if (isPaused) {
                                 btnPause.setText("Pause");
                                 isPaused = false;
                         } else {
                                 btnPause.setText("Resume");
                                 isPaused = true;
                         }
                 }
         });

         frm.add(lblTest);
         frm.add(btnPause);
         frm.setVisible(true);
         start();
 }

 public static void main (String args[]) {
         new PCmx();
 }

}

3个回答

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

//窗口类
class window extends JFrame{

  public JFrame jf;
  public JPanel jp3;
  public ScrollPane sp1,sp2,sp3;
  public Container c;
window(){
  jf=new JFrame();
    jp3=new JPanel();
    sp1=new ScrollPane();
    sp2=new ScrollPane();
    sp3=new ScrollPane();
    c=getContentPane();
    c.setLayout(new GridLayout(2,2,10,10));
    jf.add(c);
    c.add(sp1);
    c.add(sp2);
    c.add(jp3);
    c.add(sp3);

    jf.setSize(400,300);
    jf.setVisible(true);
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}
}

//Share 类
class Share{
private int u,jishu=0;
private boolean available=false;
public JTextArea jt=new JTextArea("==========生产消费状态==========\n\n");
//同步方法
public synchronized int get(){
jishu++;
while(available==false){
try{wait();}
catch(InterruptedException e){}
jt.append(jishu+" Share中没有资源,消费者等待……\n");
}
available=false;
notifyAll();
jt.append(jishu+" 正在唤醒生产者生产……\n");
return u;
}
public synchronized void put(int value){
jishu++;
while(available==true){
try{wait();}
catch(InterruptedException e){}
jt.append(jishu+" Share中已有资源,生产者等待……\n");
}
u=value;
available=true;
notifyAll();
jt.append(jishu+" 正在唤醒消费者消费……\n");
}
//互斥方法
public int hget(){
jishu++;
jt.append(jishu+" 消费者 正在消费资源……\n");
return u;
}
public void hput(int value){
jishu++;
jt.append(jishu+" 生产者 正在生产资源……\n");
u=value;
}

}

//生产者类
class Producer extends Thread{
private Share shared;
public String jieguo[]=new String[11];
public JTextArea jt=new JTextArea("==========生产者进程==========\n\n");

public Producer(Share s){
    shared=s;
    }
    public void run(){
        for(int i=1;i<11;i++){
            shared.put(i);
            jieguo[i]=i+" 生产者第"+i+"次生产"+"  生产者的生产数据:"+i+"\n";
            jt.append(jieguo[i]);
            try{
                //sleep((int)(Math.random()*100));
                sleep(1000);
            }catch(InterruptedException e){}

            }
        }

}

class hProducer extends Thread{
private Share shared;
public String jieguo[]=new String[11];
public JTextArea jt=new JTextArea("==========生产者线程==========\n\n");

public hProducer(Share s){
    shared=s;
    }
    public void run(){
        for(int i=1;i<11;i++){
            shared.hput(i);
            jieguo[i]=i+" 生产者第"+i+"次生产"+"  生产者的生产数据:"+i+"\n";
            jt.append(jieguo[i]);
            try{
                //sleep((int)(Math.random()*100));
                sleep(1000);
            }catch(InterruptedException e){}

            }
        }

}

//消费者类
class Consumer extends Thread{
private Share shared;
public String jieguo[]=new String[11];
public JTextArea jt=new JTextArea("==========消费者线程==========\n\n");

public Consumer(Share s){
    shared=s;
    }
    public void run(){
        int value=0;
        for(int i=1;i<11;i++){
            value=shared.get();
            jieguo[i]=i+" 消费者第"+i+"次消费"+"  消费者获得的生产数据:"+value+"\n";
            jt.append(jieguo[i]);
            try{
                //sleep((int)(Math.random()*100));
                sleep(1000);
            }catch(InterruptedException e){}
            }
        }
}

class hConsumer extends Thread{
private Share shared;
public String jieguo[]=new String[11];
public JTextArea jt=new JTextArea("==========消费者线程==========\n\n");

public hConsumer(Share s){
    shared=s;
    }
    public void run(){
        int value=0;
        for(int i=1;i<11;i++){
            value=shared.hget();
            jieguo[i]=i+" 消费者第"+i+"次消费"+"  消费者获得的生产数据:"+value+"\n";
            jt.append(jieguo[i]);
            /*try{
                //sleep((int)(Math.random()*100));
                sleep(1000);
            }catch(InterruptedException e){}*/
            }
        }
}

//程序入口
public class PCmx{

public static void main(String[] args){
    window win=new window();
    BHandler h=new BHandler();
    BHandler1 h1=new BHandler1();
    JButton jb=new JButton("开始同步线程读写");
    JButton jb1=new JButton("开始互斥线程读写");
    JButton jb2=new JButton("暂停");
    win.jf.setTitle("生产者与消费者同步与互斥演示");
    jb.addActionListener(h);
    jb1.addActionListener(h1);

    win.jp3.add(jb);
    win.jp3.add(jb1);
    h.winadd(win.jf,win.sp1,win.sp2,win.sp3,win.jp3,win.jp3);
    h1.winadd(win.jf,win.sp1,win.sp2,win.sp3,win.jp3,win.jp3);
    }
}

//同步按钮事件
class BHandler implements ActionListener{
private ScrollPane sp1,sp2,sp3;
private JPanel jp1,jp2;
private JFrame jf;
JTextArea jt1=new JTextArea();
JTextArea jt2=new JTextArea();
public void actionPerformed(ActionEvent e){
jf.setTitle("生产者与消费者的同步与互斥- 同步演示");
Share s=new Share();
Producer p=new Producer(s);
Consumer c=new Consumer(s);
sp1.add(p.jt);
sp2.add(c.jt);
sp3.add(s.jt);
p.start();
c.start();
}
public void winadd(JFrame jff,ScrollPane s1,ScrollPane s2,ScrollPane s3,JPanel j1,JPanel j2){
jf=jff;
sp1=s1;
sp2=s2;
sp3=s3;
jp1=j1;
jp2=j2;
}
}

//互斥按钮事件
class BHandler1 implements ActionListener{
private ScrollPane sp1,sp2,sp3;
private JPanel jp1,jp2;
private JFrame jf;
JTextArea jt1=new JTextArea();
JTextArea jt2=new JTextArea();
public void actionPerformed(ActionEvent e){
Share s=new Share();
hProducer p=new hProducer(s);
hConsumer c=new hConsumer(s);

sp1.add(p.jt);
sp2.add(c.jt);
sp3.add(s.jt);
jf.setTitle("生产者与消费者的同步与互斥- 互斥演示");
p.start();
c.start();
}
public void winadd(JFrame jff,ScrollPane s1,ScrollPane s2,ScrollPane s3,JPanel j1,JPanel j2){
jf=jff;
sp1=s1;
sp2=s2;
sp3=s3;
jp1=j1;
jp2=j2;
}
}

没看到你的问题,不知你想问什么

那你的意思就是想要点下暂停,线程就停住了,点下重启,线程又开始跑了,线程没有重启一说,只有唤醒,那么你可能就需要2个线程,但你可以换一种思路,线程点暂停,就关闭线程,点重启,又重新开启一个线程(这是我以前做爬虫的思路,是可以达到上述效果的),这样效果其实一样。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
执行和暂停
web 应用中 我的程序需要在按照我的要就 执行到一个阶段 我要让他“停止”过1-2分钟在继续执行。rnrn有什么方法 和写法。rnrn有人说在里面写个空循环,循环多少万次结束,然后在继续执行程序,这个方法妥当吗 ,谁有更好的方法
完成暂停界面(一)
用libGDX1.4.1版本开发一个微信打飞机游戏
完成暂停界面(二)
用libGDX1.4.1版本开发一个微信打飞机游戏
制作暂停界面
玩儿过塔防游戏吗?听说过《保卫萝卜》和《塔防战争》吗?本系列课程使用简单易懂的逻辑带你一起剖析这类游戏制作的过程。本案例完美展示了该类项目从搭建到完成的完整架构体系,无论代码设计还是结构布局都是悉心安排。想知道如何使用四元数跟随目标旋转吗?想知道如何使用曲线实现淡入淡出吗?本课程经过精心录制,带你轻松学习更多知识,只要你对Unity有一些基本操作的认识,就可以跟着老师一起完成这款游戏。
完成暂停界面(三)
用libGDX1.4.1版本开发一个微信打飞机游戏
暂停界面功能完成
玩儿过塔防游戏吗?听说过《保卫萝卜》和《塔防战争》吗?本系列课程使用简单易懂的逻辑带你一起剖析这类游戏制作的过程。本案例完美展示了该类项目从搭建到完成的完整架构体系,无论代码设计还是结构布局都是悉心安排。想知道如何使用四元数跟随目标旋转吗?想知道如何使用曲线实现淡入淡出吗?本课程经过精心录制,带你轻松学习更多知识,只要你对Unity有一些基本操作的认识,就可以跟着老师一起完成这款游戏。
“暂停”按钮代码
这个代码可以用来在vb程序中作“暂停”按钮。
c#下载暂停按钮
c#下载暂停按钮实例,自己整理,绝对管用
暂停JS向下执行。
如:rnvar a = 1;rn暂停3秒,再执行下面代码;rnvar b = 2;rnrn
如何暂停程序的执行!
如果在winform中有这样的方法rnprivate void a()rnrn b();//现在我希望当在b()中满足一定的条件后,不运行c(),该怎么弄??不用if作判断rn c();rnrnprivate void b()//返回voidrnrnprivate void c()rnrn我知道在asp.net中可以用Response.End();来实现,在winform中可以吗?
如何暂停程序的执行??
myRTB.AppendText("你好!"); rnmyRTB.AppendText("开始!"); rnrn如何在执行完第一句代码后让程序暂停5秒后再执行第二句。
暂停执行JS代码
function sleep(ms) { for(var t = Date.now();Date.now() - t &amp;lt;= ms;); } sleep(200);写代码过程中因为各种问题,需要暂停一下代码的执行,所以在网上找到一个比较好的方法,真的很好用,自己记录一下备忘。...
shell命令:暂停进程执行
挂起进程并放入后台 $ ctrl+z 查看后台进程 $ jobs 使第N个任务在后台运行(N为jobs显示的进程编号,如bg、fg命令不带参数%N则默认对最后一个进程操作) $ bg %N 使第N个任务在前台运行 $ fg %N
暂停线程的执行问题
有两个按钮,按钮1和按钮2,按钮1开始一个线程,并执行线程中的操作,按钮2要实现暂停线程的操作,我用的是void WINAPI WaitHandle(HANDLE handle)函数,但是当线程开始执行之后,整个界面都处于“死机”状态,按界面上的其他按钮都没反应,这是怎么回事?这个线程的创建在一个主线程里面。跟这个有关系吗?
暂停JS向下执行
var a = 1;rn暂停3秒;rnvar b = 2;
如何暂停函数执行?
如何暂停一个函数的执行,并可以在中断的地方继续执行?
js 暂停执行
转原文件:http://blog.csdn.net/liangzhongqin/article/details/6400452     js 暂停执行         //js暂停函数      function Pause(obj,iMinSecond){          if (window.eventList==null) window.eventList=new Ar...
暂停
  这周终于结束了,开心O(∩_∩)O~~   这一星期 都在写页面,感觉写页面挺有意思的,但是,在这过程中遇到了很多困难,在看教程时感觉好简单,但是自己写的时候完全和想象中不一样,例如:写一段文字很简单,但是当你要把它放在某一指定位置,给它加上某一特效时,一下子就变得很难,要不停地调位置,要不停地百度,去理解某一代码的含义。更令人头疼的是,自己的页面好像很不听话,有时写的甚至和范本一样,然而现实...
js 暂停执行 和重复执行
  var  demo = setTimeout(function(){ },200);     暂停多少毫秒执行   clearTimeout (demo) 在时间以内 可以清除执行 还有一种执行方法,与暂停类似,setInterval()就是时间间隔表示在某段时间内不停的去执行一行代码,除了停止它否则会一直执行下去,这就是与setTimeout()不同之处,一个是暂停多少秒后执行一次,而...
如何通过按钮控制程序的运行和暂停
当我点击运行时程序运行,当我点击暂停时,程序暂停,再按运行时,程序继续运行。rn我现在不知道如何下手,谁能教教我呀,最好能有一个例子
css3动画的暂停与运行
class="panorama"> .panorama { width: 300px; height: 300px; background-image: url(http://7vilbi.com1.z0.glb.clouddn.com/blog/6608185829213862083.jpg); background-size: auto 100%; cursor: poi
VB程序可以暂停吗?我要暂停一个窗体
FORM1rnrn button1.clickrn form2.showrn 暂停rn form3.showrnrnFORM2rnrn loadrn msgbox ...rn unloadrnrn首先是 button1.click,然后当然是FORM2.SHOWrnrn我现在要等FORM2自己unload之后,才执行form3.show,怎么做呢?
Python3使运行暂停的方法
在Python3中已经有很大一部分语句与Python2不互通了,运行暂停的方法也有所不同。 1、input();     这种方法不用包含模块,因此这也是最常用的一种暂停手段。     Python2中的raw_input()和input()语句在Python3中已经被合并到input()中。 2、os.system("pause");     这种方法需要包含os模块(import o
让 Script 暂停运行
让 Script 暂停,除了 alert(),confirm()和prompt()
求一个暂停计时的方法
我想实现这样的功能:单击菜单‘暂停’,让timer1_timer事件暂停,让程序暂停也可以rn然后,还有个菜单‘继续执行’,单击,让timer1_timer事件接着暂停时的位置继续执行rn给个方法吧,不胜感激!!!rn
GIF编辑器 可以暂停
使用Qt Creator建立工程并设计界面。 代码中使用中文注释,注释的比较详细。 程序使用中文界面。
可以暂停的setTimeout
function Timer(callback, delay) { var timerId, start, remaining = delay; this.pause = function () { window.clearTimeout(timerId); remaining -= new Date() - ...
angular+两个按钮一个暂停一个停止
html> html lang="en"> head> meta charset="UTF-8"> title>Titletitle> script src="angular/angular.js">script> script> var myapp=angular.module("myapp",[]); var timmer
VB可以暂停吗?
各位大侠:rn 小生在VB中有一条调用扫描的代码,该代码要花上半分钟左右才能执行完,在VB下调用没有问题。可编译成EXE文件后,这段代码却一闪而过,执行下面的代码,导致程序出错。rn还请大侠指点指点!rn 在线等待,马上给分!!!
如何用按钮随时控制flash暂停和继续
请教各位:rn 我做了一个flash,想新添加一层,在这层中有两个按钮,按钮1:暂停,按下时flash暂停播放;按钮2:继续播放,按下时flash从刚刚暂停的那一帧继续播放。rn
求做千千静听播放器的暂停按钮的代码。
就是我想用WindowsMediaPlayer 控件做个简单的播放器, rn 1. 想做个按钮点击一下就暂停,再点一下又可以继续播放。rn 2. 还想做个可以调整声音大小的按钮。点击加大可以加大, 点击减小可以减小的。rn 3. 还请教的就是怎么判断已拨歌曲与未播歌曲。rnrn 本人菜鸟,请各位大虾们不吝啬给详细点的代码。谢谢!rn 在线,通宵等。
暂停服务 暂停服务代码
暂停服务代码 暂停服务代码 暂停服务代码 暂停服务代码 暂停服务代码
windows命令脚本暂停/cmd命令暂停
启动一个cmd脚本,发现闪退。这个时候就是报错了,但是我们又看不成报错的原因是什么,这个时候只需要右键用文本打开cmd命令,在后面加上这样一行代码,就可以查看报错的原因啦!最后,记得把这个删除或者注释掉哦~...
游戏暂停2(暂停实现)
继续第一篇的实战项目学习,完成游戏“弹道精英”后期开发,特效、音效的控制等至打包上线。
游戏暂停3(暂停弹出框)
继续第一篇的实战项目学习,完成游戏“弹道精英”后期开发,特效、音效的控制等至打包上线。
求实现暂停的程序!!!
本人对VB一窍不通,急需一个类似于SLEEP的vbs程序,以实现暂停的功能,请各位大侠帮助解决!
线程暂停(循环计数暂停)
黑窗口 多线程 不断输出数据 按键盘暂停继续,很实用。VC6.0.对于初学信号量的人来说很有用。
视频播放界面智能暂停功能
实现方式:进入视频界面,打开前置摄像头,开启线程每隔一段时间拍一次照并作人脸识别处理,若检测不到人脸则暂停,反之继续播放或重新开始播放,最后退出视频界面时关闭前置摄像头。 需要注意的是保存bitmap中头像的方向应该是竖直向上,否则人脸识别失败。 管理员在2009年8月13日编辑了该文章文章。 -->
界面播放,暂停tooltip的实现
求大神指导下播放器的播放,暂停的tooltip是怎么实现的[img=https://img-bbs.csdn.net/upload/201310/16/1381901985_285780.jpg][/img][img=https://img-bbs.csdn.net/upload/201310/16/1381901999_523813.jpg][/img]
可以随时开始暂停和更改时间流速的小页面
&amp;lt;!DOCTYPE html&amp;gt; &amp;lt;html&amp;gt; &amp;lt;head&amp;gt; &amp;lt;meta charset=&quot;utf-8&quot;&amp;gt; &amp;lt;title&amp;gt;Time&amp;lt;/title&amp;gt; &amp;lt;!-- 引入 echarts.js --&amp;gt; &amp;lt;link r
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview