import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MoreThreadQiu extends Thread implements ActionListener{
public MoreThreadQiu(){super();}
public MoreThreadQiu(String s){super(s);}
MoreThreadQiu t1,t2;
JFrame win = new JFrame("多线程实例");
Container contentPane = win.getContentPane();
JLabel labRed = new JLabel("当前红色小球的个数:");
JLabel labBlue = new JLabel("当前蓝色小球的个数:");
JTextField txtRed = new JTextField(8);
JTextField txtBlue = new JTextField(8);
JButton qidong = new JButton("启动线程");
int countRed = 0,countBlue = 0;
String str;
public void go(){
qidong.addActionListener(this);
contentPane.setLayout(null);
labRed.setBounds(10,20,160,30);
labBlue.setBounds(10,50,160,60);
txtRed.setBounds(170,20,120,30);
txtBlue.setBounds(170,70,120,30);
qidong.setBounds(110,120,100,40);
contentPane.add(labRed);
contentPane.add(labBlue);
contentPane.add(txtRed);
contentPane.add(txtBlue);
contentPane.add(qidong);
win.setSize(320,200);
win.setVisible(true);
}
public void run(){
while(true){
System.out.println("红色:"+txtRed.getText());
System.out.println("蓝色:"+txtBlue.getText());
txtRed.setText(countRed+"个");
txtBlue.setText(countBlue+"个");
try{sleep((int)(Math.random()*2000));}
catch(Exception e){}
str = currentThread().getName();
if(str.equals("red")){countRed++;}
if(str.equals("blue")){countBlue++;}
}
}
public void actionPerformed(ActionEvent arg0) {
t1 = new MoreThreadQiu("red");
t2 = new MoreThreadQiu("blue");
t1.start();
t2.start();
}
public static void main(String arg[]){
MoreThreadQiu be = new MoreThreadQiu();
be.go();
}
}
特简单,线程就是要进行草某两个变量的累加,然后把累加的结果显示到窗口的两个文本框中,但是就是显示不上去。加了测试语句会,发现线程确实是在运行,而且以在DOS下显示。请高手指教。不是线程本身的问题,而是向窗口中的文本框加数据时出问题了。
import java.awt.event.*;
import javax.swing.*;
public class MoreThreadQiu extends Thread implements ActionListener{
public MoreThreadQiu(){super();}
public MoreThreadQiu(String s){super(s);}
MoreThreadQiu t1,t2;
JFrame win = new JFrame("多线程实例");
Container contentPane = win.getContentPane();
JLabel labRed = new JLabel("当前红色小球的个数:");
JLabel labBlue = new JLabel("当前蓝色小球的个数:");
JTextField txtRed = new JTextField(8);
JTextField txtBlue = new JTextField(8);
JButton qidong = new JButton("启动线程");
int countRed = 0,countBlue = 0;
String str;
public void go(){
qidong.addActionListener(this);
contentPane.setLayout(null);
labRed.setBounds(10,20,160,30);
labBlue.setBounds(10,50,160,60);
txtRed.setBounds(170,20,120,30);
txtBlue.setBounds(170,70,120,30);
qidong.setBounds(110,120,100,40);
contentPane.add(labRed);
contentPane.add(labBlue);
contentPane.add(txtRed);
contentPane.add(txtBlue);
contentPane.add(qidong);
win.setSize(320,200);
win.setVisible(true);
}
public void run(){
while(true){
System.out.println("红色:"+txtRed.getText());
System.out.println("蓝色:"+txtBlue.getText());
txtRed.setText(countRed+"个");
txtBlue.setText(countBlue+"个");
try{sleep((int)(Math.random()*2000));}
catch(Exception e){}
str = currentThread().getName();
if(str.equals("red")){countRed++;}
if(str.equals("blue")){countBlue++;}
}
}
public void actionPerformed(ActionEvent arg0) {
t1 = new MoreThreadQiu("red");
t2 = new MoreThreadQiu("blue");
t1.start();
t2.start();
}
public static void main(String arg[]){
MoreThreadQiu be = new MoreThreadQiu();
be.go();
}
}
特简单,线程就是要进行草某两个变量的累加,然后把累加的结果显示到窗口的两个文本框中,但是就是显示不上去。加了测试语句会,发现线程确实是在运行,而且以在DOS下显示。请高手指教。不是线程本身的问题,而是向窗口中的文本框加数据时出问题了。
txtRed.setText(countRed+"个");
txtBlue.setText(countBlue+"个");
});