使用以下代码
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);
});
}
}
进度栏"无限"动画非常卑鄙。我在做什么错?
更多信息:
- OS:Debian 9.8
- 该代码似乎在其他操作系统(在Windows上尝试) 上正常工作
- 使用Oracle JDK 1.8.0_201和OpenJDK 1.8.0_181
- 连续将鼠标光标移到主Jframe上动画运行平稳
- 随着选定的外观和感觉而变化的效果:GTK 比系统默认值,但效果仍然存在
由于第四点,我认为这是一种缓慢的"刷新时间" ...这可能是可能的吗?
感谢您的帮助!
更新:进行一些研究,我发现不确定的进度栏动画可以控制当前外观中的某些参数:
ProgressBar.repaintInterval
ProgressBar.cycleTime
不幸的是,有些外观和感觉似乎忽略了第一个参数,而另一些则似乎没有。例如,MetallookAndFeel似乎忽略了它,导致了Laggish动画,重新粉刷约0.5秒,而Nimbuslookandfeel似乎使用它。
尝试添加以下行以启用视频加速度,如果在操作系统中未启用:
System.setProperty("sun.java2d.opengl", "true");