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

{
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();
 }

}

0

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;
}
}

0

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

0

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

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Android使用线程做开始暂停
代码:        package com.example.liu.mytesta.home.pause; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.widget.Button; import android.widget.TextView; ...
MATLAB 程序暂停的方法
程序暂停 pause 直接输入pause指令即可,程序会暂停等待用户按下任意键。 暂停固定时间 pause(n); 暂停n秒钟,MATLAB 在暂停执行时会阻止或隐藏命令提示符,注意,该暂停无法通过键盘打断。 暂停开关指令 pause('on'); pause('off'); 通过on和off关键字开启或者关闭pause指令。如果pause被关闭,所有的pause指令都会失效。所以可以通过查...
让Python脚本暂停执行的几种方法(转载)
转自:让Python脚本暂停执行的几种方法1.time.sleep(secs) 参考文档原文:Suspend execution for the given number of seconds. The argument may be a floating point number to indicate a more precise sleep time. The actual sus
Unity简单计时器,实现随时播放,暂停,继续,停止
最近的项目中要用到简单的计时功能,又因为函数的构造已经写好了,不想去改变,所以最后用了dotween模拟计时功能,闲下来时就自己实现了一个简易的计时器 首先是状态图 计时器由三个状态组成,停止状态,播放状态和暂停状态,其中的切换逻辑见图 然后是主要的实现部分
pycharm 暂停摁键变成骷髅头摁键
使用Pycharm 运行一个程序时,如果计算时间较长,当执行过程中暂停时,暂停键会变成“骷髅”头像摁键。
让Python脚本暂停执行的几种方法
转自:让Python脚本暂停执行的几种方法  1.time.sleep(secs)      参考文档原文:   Suspend execution for the given number of seconds. The argument may be a floating point number to indicate a more precise s
MFC中让函数暂停几秒在运行
static CTime PASCAL GetCurrentTime( ); //返回一个CTime对象表示当前时间。 CTimeSpan operator -( CTime time ) const; //两个CTime 对象相减  返回一个 CTimeSpan对象 LONG GetTotalSeconds( ) const;       //检索秒表示的此日期/时间跨度值
C++中如何暂停运行
 暂停程序命令方式1:system(“pause”);  方式2:先引用库文件#include "conio.h",在主函数最后添加getch();错误1:1>xianxingbiao.obj : error LNK2019: 无法解析的外部符号"public: __thiscall CMyClass::CMyClass(void)" (??0CMyClass@@QAE@XZ),该符号
线程暂停和继续实现
开启一个子线程来显示发动机上的运行时间,如果发动机暂停运行,那么这个线程也会暂停,发动机又开动的时候,线程继续开启,数据也是连贯着的; Timer timer=new Timer();TimerTask task=new TimerTask() { @Override public void run() { }};timer.schedule(tas
C#线程实现暂停与继续
C#线程暂停与继续解决方案 原帖地址:http://blog.csdn.net/xiaohui_hubei/article/details/7494553            昨天, 老师要我们每个人交一个关于黑客方面的程序,想了半天发现端口扫描工具好像好写点,从昨天写到今天基本快完成了,给大家看下效果,不要笑话我哦哦(~~) 图1  端口扫描器         这个程序里面有一
[求助]: pyqt5 如何实现 暂停/继续按钮
1.按钮实现 connect 一个代码,但执行的中间,需要一个阻塞 有点类似于 python代码,以下的阻塞功能 con = input("回车继续&gt;&gt;") 2.在pyqt5中是否可以实现?我尝试用 tkinter 弹出窗口,作为阻塞条件, 勉强实现,但是中间会出现无响应(exe打包后运行),甚至不够简洁的界面,如何解决呢 3.求助是否有比较好的解决办法,刚刚开始学习pyqt5,谢...
C#按钮事件中有循环,用另一个按钮控制停止,暂停,继续程序执行
首先在窗体上有 lable1,//运行显示 button1,//开始 button2,//暂停和继续 button3//停止 窗体上还放Timer控件timer1 代码实现如下, using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using
Python3.X运行暂停方法
在Python3中已经有很大一部分语句与Python2不互通了,运行暂停的方法也有所不同。 1、input();     这种方法不用包含模块,因此这也是最常用的一种暂停手段。     Python2中的raw_input()和input()语句在Python3中已经被合并到input()中。 2、os.system(&quot;pause&quot;);     这种方法需要包含os模块(import o...
C# 如何实现一个线程暂停和继续
using System; using System.Text; using System.Windows.Forms; using System.Threading; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() {
Android中实现播放和停止 画面切换
点击播放按钮后的画面如下: 上图的效果是点击播放按钮后,变成停止按钮,点击停止按钮后再变成播放按钮界面布局如下:<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_
Matlab暂停语句
格式: pause pause(n) pause是程序暂时停止运行,直到按下回车键,继续执行程序。而pause(n)是中断n秒后,程序自动继续执行。 Ctrl-C(即同时按Ctrl及C二个键)可以用来中止执行中的MATLAB的工作。 出处:http://cs.nju.edu.cn/yangxc/dcc2003.files/matlab/matlab/7_3.htm
Unity实现暂停菜单
目的:在一个游戏场景中,实现游戏的暂停功能。在暂停后,可选择回到游戏/重新开始。 步骤: 一.添加控件 1. 新建空的GameObject,放在Canves下。用来放暂停功能所需的UI控件。并将其重命名为ButtonPauseMenu。 先放一个整个完成后的目录结构: 2. 添加一个image,拖到ButtonPauseMenu下。当作背景。 按个人喜好酌情调整大小位置...
[Unity][UGUI]暂停界面UGUI交互暂停Time.timeScale为0的时候Button是否能够响应
  start() { //暂停             Time.timeScale = 0f;             AudioListener.pause = true; } 暂停后对UGUI的按钮挂载脚本。使得输出下面的函数。     public void test_time0_button()     {         Debug.Log(&quot;  paused_test...
控制多线程,开启、暂停、继续、终止(实例)
控制多线程,开启、暂停、继续、终止(实例)   我们这些文盲以前一听到多线程这么几个字,以为非常的高级,难搞!!昨天翻阅了一下MSDN,发现,其实也没那么难,关键在于全面的理解,也许是用多了API了,慢慢的会看懂了一些!!!                                       我总结了几个易于理解的出来,一起共享!        我们先不讲如何使用线程过程中的参
(二)java 线程运行暂停、停止
在开始本文之前,需要了解线程的状态,分别是: //更详细的解释可以见源码 Thread.class 中的 State public enum State{ NEW,//新建状态 RUNNABLE,//运行状态 BLOCKED,//阻塞状态 WAITING,//等待状态 TIMED_WAITING,//有时间限制的...
让c++程序暂停的方法有哪些?
1.程序末尾即return 0;前,加 while(1);2.程序末尾即return 0;前,加 scanf("/n");(需加头文件)3.程序末尾即return 0;前或者需暂停处,加 system(“pause”);(需加头文件)(推荐,即你想要的“按任意键继续”)
5-Javascript中让程序暂停执行(待解决!)
/*Javascript中暂停功能的实现  Javascript本身没有暂停功能(sleep不能使用)同时 vbscript也不能使用doEvents,故编写此函数实现此功能。  javascript作为弱对象语言,一个函数也可以作为一个对象使用。  比如:  function Test(){   alert("hellow");   this.NextStep=function(){    al
按钮控制动画的暂停与开始
今天分享一篇按钮控制动画暂停开始的代码 自己研究了音乐播放器的动画暂停播放功能:先看看图片按播放,滚轮转动,按暂停滚轮则挺住,下面是代码的实现 public class SongPlayActivity extends Activity{ int image[] ;//播放,暂停改变图片 int num=1;//播放暂停计数参 ImageView play_s
通过Thread.Sleep暂停执行
Thread.sleep导致当前线程在指定期间暂停执行。这是一种有效的方法,可以让应用程序的其他线程或其他可能运行在计算机系统上的应用程序可以得到处理器的时间片。sleep方法也可以用来操作程序的延时执行(如下面的示例所示)并等待优先级更高的任务。我们有两个sleep的重载版本: 一种规定睡眠时间到毫秒,一种规定睡眠时间到纳秒。然而,这些睡眠时间并不能保证精确。因为它们受到底层操作系统提供的设施的...
VS2010暂停编译界面
注:文章主要知识点来源于https://www.felix021.com/blog/read.php?981 本人主要是按照自己的理解略微整理,感谢原博主Felix201的分享! 正文如下 刚上手VS2010的小伙伴们,可能会苦恼编译界面一闪而过,确实,这个在VC2006压根是不存在的,具体解决办法有三,如下: 在程序末加getchar();; 添加头文件#include "s
Python3使运行暂停的方法
在Python3中已经有很大一部分语句与Python2不互通了,运行暂停的方法也有所不同。 1、input();     这种方法不用包含模块,因此这也是最常用的一种暂停手段。     Python2中的raw_input()和input()语句在Python3中已经被合并到input()中。 2、os.system("pause");     这种方法需要包含os模块(import o
Unity学习之游戏暂停和界面跳转
欢迎大家来到我的博客http://unity.gopedu.com/home.php?mod=space&uid=3352&do=blog&view=me&from=space 跳转界面操作 使用Application.LoadLevel (加载关卡) 这个函数按照索引加载关卡。在Unity中使用File->Build Settings.....菜单可以看到所有 关卡的索引列表。在你
简单开始,暂停,继续的倒计时实现
关于实现“倒计时”功能的代码(包括开始、暂停、继续功能): 1、首先在布局文件中添加一个TextView和Button控件,并在onCreate方法中获得到TextView和Button的id; 2、在activity中定义一个int类型计时的初始值,和boolean类型的判断值(用于修改button按钮的显示文本的修改) 3、在activity中添加button的点击事件OnClickLi
java中让函数暂停执行的方法
//n为毫秒数try { Thread.sleep ( n ) ; } catch (InterruptedException ie){}
VBA 程序暂停10秒后向下执行
Dim time As String time = CStr(Now()) 方式一 ' If Application.Wait(Now + TimeValue("0:00:10")) Then ' MsgBox time & Chr(10) & Now() ' End If 方式二 newHour = Hour(Now()) newM
Python基础之程序暂停
当我们执行某些程序时,由于机器速度很快导致肉眼无法直接看到执行结果时程序便停止运行。这时候我们迫切需要在程序中暂停,专业术语叫做阻塞。下面列举几种常用的程序暂停方法: input() 用法:直接在欲等待处输入input()即可。 特点: 优点:不需要借助模块,执行到此处阻塞等待人工输入。 缺点:程序结束时候需要强制结束或者在控制台输入值。 time.sleep() 用法:导入time模...
如何让cmd窗口执行上一条命令后暂停会继续执行下一条命令
pause: 当程序一闪而过的时候,加上pause就会等待操作。 pause暂停之后bat不能自动继续执行 >:  重定向 使用ping127.0.0.1 -n 60 > nul即可暂停cmd命令,60s过后cmd将继续执行。 >nul的作用是:不显示执行结果的提示信息。                      >pause                     
shell命令:暂停进程执行
挂起进程并放入后台 $ ctrl+z 查看后台进程 $ jobs 使第N个任务在后台运行(N为jobs显示的进程编号,如bg、fg命令不带参数%N则默认对最后一个进程操作) $ bg %N 使第N个任务在前台运行 $ fg %N
让cmd或bat文件运行完后停在运行界面
一般来说,在你双击cmd文件或bat文件,你运行完后,屏幕就会立即关掉 解决办法有两个 1、pause 提示让你输入,只有你按键后才会关闭 2、cmd 最后一条命令,就是cmd 再重新打开cmd终端,这样,cmd就会停在打开他的那个目录,而不会关闭 今天偶然发现 3、cmd /k dir /k是做完dir命令后保留窗口   PS:
一个按钮两个功能(开始/暂停)
ps:在上一篇文章的基础上,实现功能。 软件 vs2010 语言 c# 控件 timer & 两个picturebox(手动添加图片进去) 源代码:
vba点击开始按钮,产生变化的数字,点击停止按钮停止
vba点击开始按钮 在控件中变化显示数字 点击停止不再变化 ,并显示获得的数字
pygame游戏之旅13:添加游戏暂停功能
定义暂停函数: def paused(): largeText = pygame.font.SysFont('comicsansms',115) TextSurf, TextRect = text_objects('Paused', largeText) TextRect.center = ((display_width/2),(display_height/2))
C++回顾 控制台应用程序窗口暂停
一个简单的C++程序,运行以后控制台一闪而过。。。。。。 例: #include using namespace std; int main() { cout } 只需要在main函数里添加 第一种方式 system("pause"); 第二种方式 getchar(); 第三种方式 sleep(); 第四种方式 cin.get(); 中的任意一种就OK了
关于在Java游戏中实现暂停的讨论
最近写了一个Swing版本的Snake程序,可是不太清楚怎么样来实现游戏中常见的暂停操作,所以我列出自己的一些方案,大家来讨论下什么样的方式会好些,还有就是如何更好的实现暂停这种方法。 方案1,直接利用状态变量,如果处于暂停状态,则什么也不做(空循环) [code=&quot;java&quot;]public void keyPressed(KeyEvent e) { int keyCode = e....
Android Java 线程暂停与继续
突然碰到一个问题,线程的暂停与继续,我想了想,去使用JDK给我们提供的suspend方法、interrupt方法??suspend()方法让这个线程与主线程都暂停了,谁来唤醒他们??明显这个不好用,要用的话,恐怕得另写唤醒线程了!interrupt方法,这个方法实际上只能中断当前线程!汗!         既然JDK解决不了偶的问题,偶只能自己写了!         这个时候想到了Ob
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java大神班 大数据大神班