在GUI中使用Thread的子类创建线程,编写一个Java应用程序,在主线程中再创建一个Frame类型的窗口,在该窗口中再创建一个线程giveWord。线程giveWord每隔2秒钟给出一个汉字,用户使用一种汉字输入法将该汉字输入到文本框中。
时间: 2023-06-10 19:04:17 浏览: 65
好的,我明白你的问题了。
以下是Java程序示例,实现了在GUI中使用Thread的子类创建线程,创建一个Frame类型的窗口和一个线程giveWord:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ThreadDemo extends JFrame {
private JLabel lblWord;
private JTextField txtInput;
private GiveWordThread giveWord;
public ThreadDemo() {
super("Thread Demo");
// 创建窗口中的GUI组件
lblWord = new JLabel("");
txtInput = new JTextField(10);
JButton btnClear = new JButton("Clear");
// 添加GUI组件到窗口
JPanel panel1 = new JPanel();
panel1.add(lblWord);
JPanel panel2 = new JPanel();
panel2.add(new JLabel("请输入汉字:"));
panel2.add(txtInput);
panel2.add(btnClear);
Container contentPane = getContentPane();
contentPane.add(panel1, BorderLayout.NORTH);
contentPane.add(panel2, BorderLayout.CENTER);
// 添加按钮事件处理
btnClear.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
txtInput.setText("");
}
});
// 创建并启动giveWord线程
giveWord = new GiveWordThread();
giveWord.start();
}
class GiveWordThread extends Thread {
String[] words = {"我", "爱", "中", "国"};
int index = 0;
public void run() {
while (true) {
try {
// 间隔2秒钟输出一个汉字
Thread.sleep(2000);
} catch (InterruptedException e) {}
// 更新GUI上的汉字
lblWord.setText(words[index]);
// 更新下一个要输出的汉字的索引
index = (index + 1) % words.length;
}
}
}
public static void main(String[] args) {
// 主线程中创建窗口
ThreadDemo frame = new ThreadDemo();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}
你可以运行这个程序,按要求输入汉字到文本框中进行测试。