zoukankan      html  css  js  c++  java
  • 多线程 打字练习

             编写一个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();
       }
     }

    项目展示:


    鲜花会生锈,盐巴会腐烂
  • 相关阅读:
    别的程序员是怎么读你的简历的
    .NET平台的ORM分析工具
    有关各个版本的Visual Studio(VS)和SQL Server安装的顺序总结
    QQ空间魔力日志大全SduSRZ
    【Python】哈姆雷特字数统计
    【Python】统计
    【Python】koch雪花
    【Python】汉诺塔问题
    【Python】七个数码管年月日
    【Python】圆周率计算
  • 原文地址:https://www.cnblogs.com/hunterxing/p/9709299.html
Copyright © 2011-2022 走看看