我想使用线程创建一个倒计时器(这是我被告知要尝试的)。我确实制作了 UI,但一旦添加线程,它就会卡住。我尝试过使用 Thread.yield() 但没有成功。我尝试执行在另一个问题中看到的 invokeLater()
技巧,但它一直让我无法convert void to Thread
。
每一秒经过后,UI 都会更新 JTextField。
field = new JTextArea();
Button = new JButton();
Button.addActionListener
(
new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
for (int i = Integer.parseInt(field.getText()); i >= 0; i--)
{
try
{
Thread.sleep(1000);
}
field.setText(Integer.toString(i));
}
}
}
);
最佳答案
您根本没有使用线程。试试这个:
field = new JTextArea();
Button = new JButton();
Button.addActionListener
(
new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
new Thread() {public void run() {
for (int i = Integer.parseInt(field.getText()); i >= 0; i--)
{
try
{
Thread.sleep(1000);
}
field.setText(Integer.toString(i));
}
}}.start();
}
}
);
关于java - 线程在倒计时时卡住 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40472108/