编写一个java程序,在主线程中创建一个Frame类型窗口,在该窗口中在创建一个线程,该线程每隔两秒种给出一个字母,用户输入该字母到文本框中
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MainFrame extends JFrame {
private JTextField textField;
public MainFrame() {
setTitle("输入字母");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BoxLayout(getContentPane(), BoxLayout.PAGE_AXIS));
textField = new JTextField();
add(textField);
new Thread(new LetterTask()).start();
}
private class LetterTask implements Runnable {
private int letterIndex = 0;
private String[] letters = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
@Override
public void run() {
while (true) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
if (letterIndex >= letters.length) {
letterIndex = 0;
}
String letter = letters[letterIndex];
textField.setText(letter);
letterIndex++;
}
});
}
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
MainFrame frame = new MainFrame();
frame.setVisible(true);
}
});
}
}
该回答参考chatGPT:
在该程序中,我们创建了一个继承自JFrame的MainFrame类,在MainFrame类的构造函数中,我们创建了一个文本框并添加到窗口中,然后我们创建了一个LetterTask类实现Runnable接口,在LetterTask的run方法中,我们不断地循环并等待2秒,然后使用SwingUtilities.invokeLater方法将字母更新到文本框中。
在main函数中,我们使用SwingUtilities.invokeLater方法来创建MainFrame并显示窗口。