注册 登录
编程论坛 JAVA论坛

线程的停止和继续

星星的光芒 发布于 2015-11-06 11:14, 1014 次点击
//线程:package com.soft.test;


import javax.swing.JTextArea;

public class CirStopThread implements Runnable{
   
    private JTextArea jTextArea;
    private boolean flag=true;
    public boolean isFlag(){
        return flag;
    }
    public void setFlag(boolean flag){
        this.flag=flag;
    }
    public  CirStopThread(JTextArea area) {
        this.jTextArea=area;
    }
    @Override
    public void run() {
        String str[]={"Mary","Rose","Jack"};
        int len=str.length;
        while(flag)
          {for(int i=0;i>=0;i++){
            int n=i%len;
            jTextArea.append(str[n]+"\r\n");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        }
        
        
    }

}
//测试:package com.soft.test;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class StopFrame extends JFrame implements ActionListener{
    private JPanel jPanel;
    private JScrollPane scrollPane;
    private JTextArea area;
    private JButton button;
    private CirStopThread cirStopThread;
      public StopFrame(){
          init();
          setTitle("线程停止");
          setSize(600,500);
         
          cirStopThread=new CirStopThread(area);
          Thread thread=new Thread(cirStopThread);
          thread.start();
          setLocationRelativeTo(null);
          setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
          setVisible(true);
      }
      public void init(){
          jPanel=new JPanel(new FlowLayout(FlowLayout.CENTER));
          button=new JButton("停止");
          button.addActionListener(this);
          area=new JTextArea(10,25);
          scrollPane=new JScrollPane(area);
          jPanel.add(scrollPane);
          jPanel.add(button);
          add(jPanel,BorderLayout.CENTER);
      }
      public static void main(String[] args) {
        new StopFrame();
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==button){
            cirStopThread.setFlag(false);
            button.setText("开始");
        
        }
        
    }
}
按了按钮不停,是什么原因啊
5 回复
#2
诸葛欧阳2015-11-06 11:49
button.addActionListener(this);
没有添加事件监听器,参数应该构建一个listener
#3
星星的光芒2015-11-06 12:57
回复 2楼 诸葛欧阳
不是有 @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==button){
            cirStopThread.setFlag(false);
            button.setText("开始");
        
        }
        
    }
这个吗
#4
诸葛欧阳2015-11-06 18:09
回复 3楼 星星的光芒
但是你没有用啊
#5
星星的光芒2015-11-06 21:15
回复 3楼 星星的光芒
不是用了吗
1