黑马程序员技术交流社区

标题: 猜数小程序中的休眠问题 [打印本页]

作者: 施大勇    时间: 2013-9-23 16:33
标题: 猜数小程序中的休眠问题
本帖最后由 施大勇 于 2013-9-28 15:28 编辑
  1. package lesson4;

  2. import java.awt.BorderLayout;
  3. import java.awt.Container;
  4. import java.awt.EventQueue;
  5. import java.awt.event.ActionEvent;
  6. import java.awt.event.ActionListener;

  7. import javax.swing.JButton;
  8. import javax.swing.JFrame;
  9. import javax.swing.JPanel;
  10. import javax.swing.JTextField;

  11. public class ActionDemo extends JFrame {

  12.         /**
  13.          * 动作事件的处理,可以作为一个猜数的小应用。
  14.          */
  15.         public static void main(String[] args) {
  16.                 EventQueue.invokeLater(new Runnable() {

  17.                         @Override
  18.                         public void run() {
  19.                                 ActionDemo frame = new ActionDemo();
  20.                                 frame.setVisible(true);
  21.                         }
  22.                 });
  23.         }
  24.         
  25.         private JTextField numText;
  26.         public ActionDemo() {
  27.                 super();
  28.                 setBounds(100, 100, 500, 400);
  29.                 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  30.                 Container container = getContentPane();
  31.                 container.setLayout(new BorderLayout());

  32.                 JPanel topPanel = new JPanel();
  33.                 numText = new JTextField(5);
  34.                 topPanel.add(numText);

  35.                 JPanel buttomPanel = new JPanel();
  36.                 JButton button_1 = new JButton("开始");
  37.                 JButton button_2 = new JButton("结束");
  38.                 buttomPanel.add(button_1);
  39.                 buttomPanel.add(button_2);

  40.                 container.add(topPanel);
  41.                 container.add(buttomPanel, BorderLayout.SOUTH);

  42.                 button_1.addActionListener(new ActionListener() {

  43.                         @Override
  44.                         public void actionPerformed(ActionEvent e) {
  45.                                 do_button_1_ActionPerformed();
  46.                         }
  47.                 });
  48.                 button_2.addActionListener(new ActionListener() {

  49.                         @Override
  50.                         public void actionPerformed(ActionEvent e) {
  51.                                 do_button_2_ActionPerformed();
  52.                         }
  53.                 });

  54.         }
  55.         private RandomThread random=new RandomThread();
  56.         class RandomThread extends Thread{
  57.                 boolean isStart=true;
  58.                 public void run(){
  59.                         while(isStart){
  60.                                 //保证随机数字不停的变化,休眠是必不可少的,这里不明白休眠起的作用,求解?????????
  61.                                 //大家可以将休眠去掉,之后数字只显示一次,就不在变化了。
  62.                                 try {
  63.                                         Thread.sleep(1);
  64.                                 } catch (InterruptedException e) {
  65.                                         e.printStackTrace();
  66.                                 }
  67.                                 final int num = (int) (Math.random() * 10); // 生成随机数
  68.                                 EventQueue.invokeLater(new Runnable() {
  69.                                         public void run() {
  70.                                                 numText.setText(num + "");
  71.                                         }
  72.                                 });
  73.                         }
  74.                 }
  75.                 public void stopStarat(){
  76.                         this.isStart=false;
  77.                 }
  78.         }

  79.         protected void do_button_2_ActionPerformed() {
  80.                 if(random!=null){
  81.                         random.stopStarat();
  82.                 }
  83.         }

  84.         protected void do_button_1_ActionPerformed() {
  85.                 if(random!=null)
  86.                         random.stopStarat();
  87.                 random=new RandomThread();
  88.                 random.start();
  89.                         
  90.         }
  91. }
复制代码

作者: 黄文伯    时间: 2013-9-23 18:29
亲,如问题已解决请将分类的“未解决”改为“已解决”。 以后的问题贴也要及时更改分类哦~
作者: 黄文伯    时间: 2013-9-23 18:31
建议将代码放在代码块中方便大家阅读!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2