class BtnListener implements ActionListener{ int who; public BtnListener(int who){ this.who=who; }
public void actionPerformed(ActionEvent e){ switch(who){ case 0: btn1.setEnabled(false); isStoped=false; new DisplayThread(0).start(); break; case 1: btn2.setEnabled(false); isStoped=false; new DisplayThread(1).start(); break; } }
}
class DisplayThread extends Thread{ int who; public DisplayThread(int who){ this.who=who; } public void run(){ JTextField txt; if(who==0){ txt=txt1; }else{ txt=txt2; } while(!isStoped){ resetNum(); incNum(); txt.setText(String.valueOf(num)); try{ sleep(50); }catch(Exception x){ } } } }
import java.awt.*;
import java.awt.event.*;public class NumDisplay extends JFrame{
JTextField txt1;
JTextField txt2;
JButton btn1;
JButton btn2;
JButton btn3;
JPanel panel1;
JPanel panel2;
public int num;
boolean isStarted;
boolean isStoped;
boolean btn1Clicked;
boolean btn2Clicked;
public NumDisplay(){
super("Number display in thread");
txt1=new JTextField(10);
txt2=new JTextField(10);
panel1=new JPanel();
panel2=new JPanel();
btn1=new JButton("Click Me");
btn1.addActionListener(
new BtnListener(0)
);
btn2=new JButton("Click me");
btn2.addActionListener(
new BtnListener(1)
);
panel1.add(txt1);
panel1.add(btn1);
panel2.add(txt2);
panel2.add(btn2);
btn3=new JButton("Stop");
btn3.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
isStoped=true;
btn1.setEnabled(true);
btn2.setEnabled(true);
}
}
);
this.getContentPane().add(panel1,BorderLayout.NORTH);
this.getContentPane().add(panel2,BorderLayout.CENTER);
this.getContentPane().add(btn3,BorderLayout.SOUTH);
setVisible(true);
pack();
}
public static void main(String[] args){
NumDisplay n=new NumDisplay();
}
synchronized void incNum(){
num++;
}
synchronized void resetNum(){
if(num==1000){
num=0;
}
}
class BtnListener implements ActionListener{
int who;
public BtnListener(int who){
this.who=who;
}
public void actionPerformed(ActionEvent e){
switch(who){
case 0:
btn1.setEnabled(false);
isStoped=false;
new DisplayThread(0).start();
break;
case 1:
btn2.setEnabled(false);
isStoped=false;
new DisplayThread(1).start();
break;
}
}
}
class DisplayThread extends Thread{
int who;
public DisplayThread(int who){
this.who=who;
}
public void run(){
JTextField txt;
if(who==0){
txt=txt1;
}else{
txt=txt2;
}
while(!isStoped){
resetNum();
incNum();
txt.setText(String.valueOf(num));
try{
sleep(50);
}catch(Exception x){
}
}
}
}
}