java - 带线程的进度条 (Java Swing)

标签 java swing thread-sleep

这是一个小例子:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        int x = 0;
        while (jProgressBar1.getValue() < 100) {
            try {
                Thread.sleep(50);
                x++;
                jProgressBar1.setValue(x);
                jProgressBar1.repaint();
            } catch (InterruptedException ex) {
                Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
            }
            System.out.println(jProgressBar1.getValue());
        }
    }

System.out.println(jProgressBar1.getValue()); 将数字返回到 IDE 输出,但 jProgressBar1 不绘制该值。这段代码有什么问题?请帮忙。

最佳答案

切勿在 Swing 线程中使用 Thread.sleep()。请改用 javax.swing.Timer。

示例:

private void jButton1ActionPerformed(ActionEvent evt) {                                         
    final Timer t = new Timer(50, new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            jProgressBar1.setValue(jProgressBar1.getValue() + 1);
            if (jProgressBar1.getValue() == 100) {
              ((Timer) e.getSource()).stop();
            }
        }
    });
    t.start();
}

关于java - 带线程的进度条 (Java Swing),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25646236/

相关文章:

java - Swing 将 JTabbedPane 更改为 JPanel

java - 需要一个 JCheckBox 位于 JLabel 之前,但标签位于复选框底部稍上方

java - 用 java 编写解释器时的 switch 或 if 语句

java - 关于java中的抽象类和接口(interface)的几个问题?

java - 错误 HTTP 状态 404。请求的资源不可用。 [网 bean ]

java - 服务调用多个dao方法

java - 如何使用 JDateChooser 获取/计算总月数

java - 暂停所有正在运行的线程一段时间

java - 暂停一个简单的计时器

java - 如何在 while 循环内中断并继续 try-catch?