首页 > 解决方案 > 不确定的 JProgressBar 动画滞后

问题描述

使用以下代码

package scrollbartest;

import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JProgressBar;
import javax.swing.SwingUtilities;

public class ScrollBarTest {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            JFrame f = new JFrame();
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            JProgressBar b = new JProgressBar();
            b.setIndeterminate(true);
            b.setPreferredSize(new Dimension(400, 20));
            f.add(b);
            f.pack();
            f.setVisible(true);
        });
    }
}

进度条“无限期”动画非常缓慢。我究竟做错了什么?

更多信息:

由于第四点,我认为这是一种缓慢的“刷新时间”……这可能吗?

谢谢你的帮助!

更新: 做了一些研究,我发现可以控制不确定的进度条动画在当前外观中设置一些参数:

ProgressBar.repaintInterval
ProgressBar.cycleTime

不幸的是,有些外观似乎忽略了第一个参数,而另一些则没有。例如,MetalLookAndFeel 似乎忽略了它,导致动画滞后,重绘时间约为 0.5 秒,而 NimbusLookAndFeel 似乎使用它。

标签: javaswingdebianlagjscrollbar

解决方案


如果在您的操作系统中未启用,请尝试添加以下行以启用视频加速:

System.setProperty("sun.java2d.opengl", "true");

推荐阅读