java - 线程在倒计时时卡住 UI

标签 java multithreading oop timer

我想使用线程创建一个倒计时器(这是我被告知要尝试的)。我确实制作了 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/

相关文章:

java - 使用本地依赖项 Gradle 构建 Fat jar

java - 我应该在多大程度上隔离我的单元测试方法?

c# - 这是实现异步编程模型的好方法吗?

c# - 将不同的值添加到并发字典中的列表中

C++ 计时器 - 启动和停止有效 - 重新启动无效

java - 如何重构具有许多单一职责的方法的大类?

c - 具有数百万个节点的图形数据结构(社交网络)

mac/linux 上摩托罗拉 RFid 阅读器型号 FX7400 的 java 编码

java - Jersey 解析 Java 8 日期时间

java - 缺少重要参数/依赖项时抛出什么异常?