{ String success=\
for(int k=0;k if(success.equals(word)) { messaageLabel.setText(\恭喜你,你成功了\ for(int k=0;k { label[k].removeKeyListener(this); label[k].removeFocusListener(label[k]); label[k].setBackground(Color.green); } inputWord.requestFocus(); } } } WordMainClass.java public class WordMainClass { public static void main(String args[]) { new SpellingWordFrame(); } } 上机实践8 多线程 实验1 汉字打字练习 1.答案: 【代码1】: sleep(6000); 【代码2】: WordThread giveWord; 【代码3】: giveWord=new WordThread(wordLabel); 【代码4】: giveWord.isAlive() 【代码5】: giveWord.start(); 2.模板代码 WordThread.java import java.awt.*; public class WordThread extends Thread { char word; int k=19968; 46 Label com; WordThread(Label com) { this.com=com; } public void run() { k=19968; while(true) { word=(char)k; com.setText(\ try{ 【代码1】//调用sleep方法使得线程中断6000豪秒 } catch(InterruptedException e){} k++; if(k>=29968) k=19968; } } } ThreadFrame.java import java.awt.*; import java.awt.event.*; public class ThreadFrame extends Frame implements ActionListener { Label wordLabel; Button button; TextField inputText,scoreText; 【代码2】//用WordThread声明一个giveWord对象 int score=0; ThreadFrame() { wordLabel=new Label(\ wordLabel.setFont(new Font(\ button=new Button(\开始\ inputText=new TextField(3); scoreText=new TextField(5); scoreText.setEditable(false); 【代码3】//创建giveWord,将wordLabel传递给WordThread构造方法的参数 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); 47 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(!(【代码4】)) //giveWord调用方法isAlive() { giveWord=new WordThread(wordLabel); } try { 【代码5】//giveWord调用方法start() } catch(Exception exe){} } else if(e.getSource()==inputText) { if(inputText.getText().equals(wordLabel.getText())) { score++; } scoreText.setText(\得分:\ inputText.setText(null); } } } WordThread.java public class ThreadWordMainClass { public static void main(String args[]) { new ThreadFrame(); } 实验2 旋转的行星 1.答案: 【代码1】: Thread moon; 48 【代码2】: thread=new Thread(this); 【代码3】: Thread.sleep(10); 【代码4】: Thread rotate; 【代码5】: rotate.start(); 2.模板代码 Mycanvas.java import java.awt.*; public class Mycanvas extends Canvas { int r; Color c; public void setColor(Color c) { this.c=c; } public void setR(int r) { this.r=r; } public void paint(Graphics g) { g.setColor(c); g.fillOval(0,0,2*r,2*r); } public int getR() { return r; } } Planet.java import java.awt.*; public class Planet extends Panel implements Runnable { 【代码1】 //用Thread类声明一个moon对象 Mycanvas yellowBall; double pointX[]=new double[360], pointY[]=new double[360]; //用来表示画布左上角端点坐标的数组 int w=100,h=100; int radius=30; Planet() { setSize(w,h); setLayout(null); yellowBall=new Mycanvas(); yellowBall.setColor(Color.yellow); add(yellowBall); yellowBall.setSize(12,12); yellowBall.setR(12/2); pointX[0]=0; 49 pointY[0]=-radius; double angle=1*Math.PI/180; //刻度为1度 for(int i=0;i<359;i++) //计算出数组中各个元素的值 { pointX[i+1]=pointX[i]*Math.cos(angle)-Math.sin(angle)*pointY[i]; pointY[i+1]=pointY[i]*Math.cos(angle)+pointX[i]*Math.sin(angle); } for(int i=0;i<360;i++) { pointX[i]=pointX[i]+w/2; //坐标平移 pointY[i]=pointY[i]+h/2; } yellowBall.setLocation((int)pointX[0]-yellowBall.getR(), (int)pointY[0]-yellowBall.getR()); 【代码2】 //创建 moon线程,当前面板做为该线程的目标对象 } public void start() { try{ moon .start(); } catch(Exception exe){} } public void paint(Graphics g) { g.setColor(Color.blue); g.fillOval(w/2-9,h/2-9,18,18); } public void run() { int i=0; while(true) { i=(i+1)60; yellowBall.setLocation((int)pointX[i]-yellowBall.getR(), (int)pointY[i]-yellowBall.getR()); try{ 【代码3】 // Thread类调用类方法sleep使得线程中断10豪秒 } catch(InterruptedException e){} } } } HaveThreadFrame.java import java.awt.*; import java.awt.event.*; public class HaveThreadFrame extends Frame implements Runnable { 【代码4】 //用Thread类声明一个rotate对象 Planet earth; double pointX[]=new double[360], pointY[]=new double[360]; int width,height; 50