博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多线程 打字练习
阅读量:6888 次
发布时间:2019-06-27

本文共 2507 字,大约阅读时间需要 8 分钟。

         编写一个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

你可能感兴趣的文章
Elasticsearch注意事项
查看>>
【数据结构】找出N个数据中最大的前k个数据(利用堆排序)
查看>>
centos7安装使用samba服务器免密码登录简单配置
查看>>
mysql中if-elesif-endif使用
查看>>
drbd状态信息详细说明
查看>>
apache详解
查看>>
闲聊 -软路由的安装
查看>>
PHP中利用COOKIE与SESSION联合实现SESSION跨域
查看>>
error:Microsoft Visual C++ 9.0 is required. Get it
查看>>
Mininal Desktop安装CentOS 6.4后编译安装Mplayer
查看>>
好马不回头策略
查看>>
函数声明后面的const用法
查看>>
CUDA中自动初始化显卡设备宏
查看>>
application
查看>>
spring中加载xml配置文件的方式 .
查看>>
ruby参考
查看>>
斐波那契数列c语言实现
查看>>
emacs使修改的配置文件立即生效方法
查看>>
查询表中没有的字段信息
查看>>
stm32 使用 printf 串口输出 配置
查看>>