问答题

请完成下列Java程序;创建一个进度条,可以控制其开始和暂停。要求进度条与线程关联,由线程控制,点击Start按钮开始进度条的滚动,点击Stop按钮,暂停,继续点击Start按钮则继续进行。 注意:请勿改动main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。 程序运行结果如下:
import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; public class ex22_2 extends JPanel{ ThreadProg thProgress; JProgressBar jpb;//声明一个进程条对象 static JFrame if; public ex22_2() { setLayout(new BorderLayout()); jpb=new JProgressBar(); add(jpb,"Center"); JPanel btnPanel = new JPanel(); JButton btnStart = new JButton("Start"); btnPanel.add(btnStart); btnStart.addActionListener(new ActionListener() public void actionPerformed(ActionEvent ae) { _______________; } }); JButton btnStop = new JButton("Stop"); 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); } public static void main(String args[]){ jf = new JFrame("ex22_2"); ex22_2 obj22_2 = new ex22_2(); jf.getContentPane().add("Center",obj22_2); jf.setSize(250,80); jf.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent we) { System.exit(O); } }); jf.setVisible(true); } } class ThreadProg extends Thread { private JProgressBar jpb; private boolean bStop = false; private boolean bAlive = false; public 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; } }

【参考答案】

startProgress() stopProgress()[解析] 本题主要考查swing图形用户界面编程以及多线程编......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)
热门 试题

问答题
下面是一个Applet程序,其功能是在窗口中绘制3个半径递增的圆,并用RGB三原色对这3个圆填充。要求建立一个绘制圆的类,实现根据指定颜色进行填充的功能,在主程序中通过调用这个类的方法实现圆的绘制。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。注意:不改动程序的结构,不得增行或删行。程序运行结果如下:import java.applet.*;import java.awt.*;import java.awt.*; *<applet code= ex22_3.class width=800 height=400 >< applet>* class CanvasCircle extends Canvas{private Color cCircle;public CanvasCircle(Color c){cCircle = c;} public void paint(Graphics g){int dimCricle, xCircle, yCircle;Dimension sizeCurrent = getSize();if (sizeCurrent.width > sizeCurrent.height){dimCricle = sizeCurrent.width;}else{dimCricle = sizeCurrent.height;}g.setColor(cCircle);xCircle = (sizeCurrent.height - dimCricle) 2;yCircle = (sizeCurrent.width - dimCricle) 2;g.fillOval(xCircle, yCircle, dimCricle, dimCricle);} } public class ex22_3 extends Applet{public void init(){GridBagLayout gbl = new GridBagLayout();GridBagConstraints gbc = new GridBagConstraints();CanvasCircle circleNew;setLayout(gbl);gbc.weightx = 1.0;gbc.weighty = 1.0;gbc.fill = GridBagConstraints.BOTH;circleNew = new CanvasCircle(Color.red);gbl.setConstraints(circleNew, gbc);add(circleNew);gbc.weightx = 1.5;gbc.weighty = 1.5;circleNew = new CanvasCircle(Color.green);gbl.setConstraints(circleNew, gbc);add(circleNew);gbc.weightx = 2.0;gbc.weighty = 2.0;circleNew = new CanvasCircle(Color.blue);gbl.setConstraints(circleNew, gbc);add(circleNew);}}ex22_3.h tml<HTML><HEAD><TITLE>ex22_3< TITLE>< HEAD><BODY><applet code= ex22_3.class width=800 height=400 >< applet>< BODY>< HTML>