请完成下列Java程序:创建一个进度条,可以控制其开始和暂停。要求进度条与线程关联,由线程控制,点击开始按钮开始进度条的滚动,点击停止按钮,暂停,继续点击开始按钮则继续进行。注意:请勿改动main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。import javax.swing.*;import javax.swing.event.*;import java.awt.*;import java.awt.event.*;public class ex15_2 extends JPanel {ThreadProg thProgress;JProgressBar jPb;//声明一个进程条对象static JFrame. jf;public ex15_2(){setLayout(new BorderLayout());jPb=new JProgressBar();add(jpb,"Center");JPanel btnPanel=new JPanel();JButton btnStart=new JButton("开始");btnPanel.add(btnStart);btnStart.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent ae){__________;}});JButton btnStop=new JButton("停止");btnPanel.add(btnStop);btnStop.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent ae){__________;}});add(btnPanel,BorderLayout.SOUTH);}public void startProgress(){if(thProgress==null||!thProgress.isAlive()){thProgress=new ThreadProg(jpb);thProgress.start();}}public void stopProgress(){thProgress.setStop(true);}pubUc static VOid main(String args[]){jf=new JPrame("ex15_2");ex15_2 obj15_2=new ex15_2();jf.getContentPane().add("Center",obj15_2);jf.setSize(250,80);jf.addWindowListener(new WindowAdapter(){pubhc void windowClosing(WindowEvent we){System.exit(0);}});jf.setVisible(true);}}class ThreadProg extends Thread{private JProgressBar jpb;private boolean bStop=false;private boolean bAlive=false;pubhc ThreadProg(JProgressBar jpb){this.jpb=jpb;}public VOid setStop(boolean b){bStop=b;}public void run(){int min=0;int max=60;jpb.setMinimum(min);jpb.setMaximum(max);jpb.setValue(min);for(int x=min;x<=max;x++){if(bStop){break;}else{jpb.setValue(x);try{Thread.sleep(150);} catch(InterruptedException e){}}}bAlive=false;}}

请完成下列Java程序:创建一个进度条,可以控制其开始和暂停。要求进度条与线程关联,由线程控制,点击开始按钮开始进度条的滚动,点击停止按钮,暂停,继续点击开始按钮则继续进行。

注意:请勿改动main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。

import javax.swing.*;

import javax.swing.event.*;

import java.awt.*;

import java.awt.event.*;

public class ex15_2 extends JPanel {

ThreadProg thProgress;

JProgressBar jPb;//声明一个进程条对象

static JFrame. jf;

public ex15_2(){

setLayout(new BorderLayout());

jPb=new JProgressBar();

add(jpb,"Center");

JPanel btnPanel=new JPanel();

JButton btnStart=new JButton("开始");

btnPanel.add(btnStart);

btnStart.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent ae){

__________;

}

});

JButton btnStop=new JButton("停止");

btnPanel.add(btnStop);

btnStop.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent ae){

__________;

}

});

add(btnPanel,BorderLayout.SOUTH);

}

public void startProgress(){

if(thProgress==null||!thProgress.isAlive()){

thProgress=new ThreadProg(jpb);

thProgress.start();

}

}

public void stopProgress(){

thProgress.setStop(true);

}

pubUc static VOid main(String args[]){

jf=new JPrame("ex15_2");

ex15_2 obj15_2=new ex15_2();

jf.getContentPane().add("Center",obj15_2);

jf.setSize(250,80);

jf.addWindowListener(new WindowAdapter(){

pubhc void windowClosing(WindowEvent we){

System.exit(0);

}

});

jf.setVisible(true);

}

}

class ThreadProg extends Thread{

private JProgressBar jpb;

private boolean bStop=false;

private boolean bAlive=false;

pubhc ThreadProg(JProgressBar jpb){

this.jpb=jpb;

}

public VOid setStop(boolean b){

bStop=b;

}

public void run(){

int min=0;

int max=60;

jpb.setMinimum(min);

jpb.setMaximum(max);

jpb.setValue(min);

for(int x=min;x<=max;x++){

if(bStop){

break;

}else{

jpb.setValue(x);

try{

Thread.sleep(150);

} catch(InterruptedException e){

}

}

}

bAlive=false;

}

}


相关考题:

下列说法中错误的一项是( )。A.Java 中的每一个线程都属于某个线程组B.线程只能在其创建时设置所属的线程组C.线程创建之后,可以从一个线程组转移到另一个线程组D.新建的线程默认情况下属于其父线程所属的线程组

下列说法中错误的一项是A.Java中的每一个线程都属于某个线程组B.线程只能在其创建时设置所属的线程组C.线程创建之后,可以从一个线程组转移到另一个线程组D.新建的线程默认情况下属于其父线程所属的线程组

Java中,可以通过建立java. lang.【 】类或其子类的实例创建和控制线程。

下列有关线程的描述中错误的是( )。A.Java中的每一个线程都属于某个线程组B.线程只能在其创建时设置所属的线程组C.线程创建之后,可以从一个线程组转移到另一个线程组D.新建的线程默认情况下属于某父线程所属的线程组

下列关于线程组的说法中,错误的是( )。A.一个线程只能在创建时设置其线程组B.线程组使一组线程可以作为一个对象进行统一处理和维护C.在应用程序中线程可以独立存在,不一定要属于某个线程组D.线程组由java.lang包中的ThreadGroup类来实现

下列说法中,错误的一项是______。A.线程有其产生、存在和消亡的过程B.一个进程可以创建多个线程C.Java需要利用外部的线程支持库来实现多线程D.在Java语言中支持多线程

关于Java语言的内存回收机制,下列选项中正确的一项是______。A.Java程序允许用户使用指针来释放内存B.Java程序要求用户必须手工创建一个线程来释放内存C.内存回收线程负责释放无用内存D.内存回收线程不能释放内存对象

下列说法中,错误的一项是______。A.一个线程组中可以包含若干线程B.一个Java应用程序启动时,Java运行系统为该程序创建一个名为main的线程C.一个线程组中不可以再包含线程组D.一个Java应用程序的最顶层线程组是main

下列关于Java线程的说法哪些是正确的?()A.每一个Java线程可以看成由代码、一个真实的CPU以及数据3部分组成B.创建线程的两种方法,从Thread类中继承的创建方式可以防止出现多父类问题C.Thread类属于java.util程序包D.以上说法无一正确