package com.radio.weather.view;
import javax.swing.*;
import com.radio.weather.model.*;
import java.util.*;
import java.awt.event.*;
import java.awt.*;
public class WeatherFrame extends JFrame implements ActionListener{
//定义所需要的组件
JPanel jp1,jp2;
JButton jb1,jb2;
JTextArea jta;
JTextField jtf;
JScrollPane jsp;
String sendInfo;
Date date;
static Thread t=null;
public static void main(String[] args) {
// TODO 自动生成的方法存根
new WeatherFrame();
}
public WeatherFrame()
{
//初始化组件
jp1=new JPanel();
jp1.setLayout(new BorderLayout());
jp2=new JPanel();
jp2.setLayout(new FlowLayout());
jb1=new JButton("停止");
jb2=new JButton("发送");
jb2.addActionListener(this);
jta=new JTextArea();
jtf=new JTextField(20);
jsp=new JScrollPane(jta);
//初始化jp2
jp2.add(jb1);
jp2.add(jtf);
jp2.add(jb2);
//初始化jp1
jp1.add(jsp);
jp1.add(jp2,"South");
this.add(jp1);
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setSize(400,300);
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO 自动生成的方法存根
if(arg0.getSource()==jb2&&(!(jtf.getText().length()==0)))
{
Date date=new Date();
String time=String.format("%tT", date);
String month=String.format("%tF", date);
this.sendInfo=month+" "+time+": "+jtf.getText()+"\r\n";
jta.append(sendInfo);
jtf.setText("");
//定义发送信息的线程
this.t=new SendMessage(sendInfo);
this.t.start();
}
}
}
为什么我的线程t设为static后,每次点击jb2即发送按钮后原线程覆盖不了,还会继续继续运行,同时会新建一个线程。如何把原来的线程给停止掉。
这是控制台的信息:
2013-12-20 20:53:13: 第一次点击发送按钮
2013-12-20 20:53:13: 第一次点击发送按钮
2013-12-20 20:53:13: 第一次点击发送按钮
2013-12-20 20:53:20: 第二次点击发送按钮
2013-12-20 20:53:13: 第一次点击发送按钮
2013-12-20 20:53:20: 第二次点击发送按钮