请完成下列Java程序;创建一个进度条,可以控制其开始和暂停。要求进度条与线程关联,由线程控制,点击Start按钮开始进度条的滚动,点击Stop按钮,暂停,继续点击Start按钮则继续进行。 注意:请勿改动main()主方法和其他已有语句内容,仅在下

admin2009-01-15  21

问题 请完成下列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图形用户界面编程以及多线程编程相结合。解题关键是掌握进度条JProgressBar类的基本用法及其与多线程相结合的编程方法,会继承Thread类写自己的线程类,完成需要的功能,线程的开始与暂停被封装在ThreadProg类中。本题中,第1个空,根据点击Start按钮事件调用startProgress()方法启动线程;第2个空,根据点击Stop按钮事件调用stopProgress()方法暂停线程。
转载请注明原文地址:https://kaotiyun.com/show/JUnp777K
0

最新回复(0)