编写一个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(); } }
项目展示: