Java 多线程实现汉字随机显示程序:WordThread 和 ThreadFrame 类

这是一个简单的 Java 多线程程序,使用 WordThread 类和 ThreadFrame 类来实现随机显示汉字并进行用户输入验证。

WordThread 类:

import java.awt.Label;

public class WordThread extends Thread {
    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(String.valueOf(word));
            try {
                sleep(6000);
            } catch (InterruptedException e) {}
            k++;
            if (k >= 29968) k = 19968;
        }
    }
}

ThreadFrame 类:

import java.awt.*;
import java.awt.event.*;

public class ThreadFrame extends Frame implements ActionListener {
    Label wordLabel;
    Button button;
    TextField inputText, scoreText;
    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);
        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 = new WordThread(wordLabel);
                giveWord.start();
            }
        } else if (e.getSource() == inputText) {
            if (inputText.getText().equals(wordLabel.getText())) {
                score++;
            }
            scoreText.setText('得分:' + score);
            inputText.setText('');
        }
    }

    public static void main(String[] args) {
        new ThreadFrame();
    }
}

程序说明:

  1. WordThread 类中的 run() 方法负责不断地随机生成一个汉字,并更新 Label 上的显示内容。
  2. ThreadFrame 类创建了一个 WordThread 对象,并通过按钮启动该线程,使汉字开始随机显示。
  3. 当用户在文本框中输入正确的汉字并回车后,程序会统计得分并清空文本框。

程序中主要修正的错误:

  1. WordThread 类中 com.setText() 方法应改为 com.setText(String.valueOf(word)) 以正确设置标签上的汉字。
  2. ThreadFrame 类中 actionPerformed() 方法的得分统计和输入框清空逻辑错误。

注意:

  • 程序使用 Unicode 编码范围 19968-29967 来随机生成汉字。
  • sleep() 方法用于控制汉字显示的间隔时间。
  • 此程序仅供学习参考,您可能需要根据您的具体需求进行修改。
Java 多线程实现汉字随机显示程序:WordThread 和 ThreadFrame 类

原文地址: https://www.cveoy.top/t/topic/zXc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录