多线程 打字练习

         编写一个Java应用程序,在主线程中再创建一个Frame类型的窗口,在该窗口中再创建1个线程giveWord。线程giveWord每隔2秒钟给出一个汉字,用户使用一种汉字输入法将该汉字输入到文本框中。

WordThread.java
import java.awt.*;
public class WordThread extends Thread
{  
	int  time = 6000;
	char word;
    int k=19968;
    Label com; 
    WordThread(Label com)
    {  this.com=com;
    }    
    public void run()
    {  
       k=19968;
       while(true)
        {
          word=(char)k;
          com.setText(""+word);
          try{  //【代码1】//调用sleep方法使得线程中断6000豪秒
        	  //sleep(6000);
        	  //更改为线程中断time毫秒
        	  sleep(time);
             }
          catch(InterruptedException e){}
           k++;
          if(k>=29968) k=19968;
        }
    } 
    public void setTime(int n) {
    	time = n;
    }
}
ThreadFrame.java
import java.awt.*;
import java.awt.event.*;

public class ThreadFrame extends Frame implements ActionListener {
	Label wordLabel;
	Button button;
	TextField inputText, scoreText;
	WordThread giveWord;// 【代码2】// 用WordThread声明一个giveWord对象
	int score = 0;

	ThreadFrame() {
		wordLabel = new Label(" ", Label.CENTER);
		wordLabel.setFont(new Font("", Font.BOLD, 72));
		button = new Button("开始");
		inputText = new TextField(3);
		scoreText = new TextField(5);
		scoreText.setEditable(false);
		// 【代码3】//创建giveWord,将wordLabel传递给WordThread构造方法的参数
		giveWord = new WordThread(wordLabel);
		button.addActionListener(this);
		inputText.addActionListener(this);
		add(button, BorderLayout.NORTH);
		add(wordLabel, BorderLayout.CENTER);
		Panel southP = new Panel();
		southP.add(new Label("输入标签所显示的汉字后回车:"));
		southP.add(inputText);
		southP.add(scoreText);
		add(southP, BorderLayout.SOUTH);
		setBounds(100, 100, 350, 180);
		setVisible(true);
		validate();
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
	}

	public void actionPerformed(ActionEvent e)
   {
      if(e.getSource()==button)
      {  if(!(giveWord.isAlive()))     //giveWord调用方法isAlive()
         {   
    	  giveWord=new WordThread(wordLabel);
         }
         try
         {    //【代码5】//giveWord调用方法start()
        	 giveWord.start();
         }
         catch(Exception exe){}
      }
      else if(e.getSource()==inputText)
      {  if(inputText.getText().equals(wordLabel.getText()))
          {  
    	  score++;
          }
         scoreText.setText("得分:"+score);
         inputText.setText(null);
      }
   }
}
ThreadWordMainClass.java
public class ThreadWordMainClass
{  
  public static void main(String args[])
   { 
	new ThreadFrame();
   }
 }

项目展示:


鲜花会生锈,盐巴会腐烂
原文地址:https://www.cnblogs.com/hunterxing/p/9709299.html