我有 1个单独的java应用。仅包含 1 JMenu , 48个JMenuItem 。 每个JMenuItems我设置图标与动画GIF 。
创建它没有问题。 运行它时我也没有问题。 但问题出现了,当我运行它,然后查看JMenuItem。 我的 GIF(s)动画似乎正在消耗PC进程非常高! 而ANimation似乎跳得太快了!这不是通常的动画帧率,很难。
所以当我运行java应用程序,然后尝试 JMenuItem 时, CPU进程 越来越高了......!
看看this Preview:当我的Java应用程序运行时。 解决这个问题的最佳方法是什么?
答案 0 :(得分:3)
你从这个SSCCE得到什么结果?我的系统在启动时达到40,然后跳到平均20-30左右。动画GIF的渲染有点不稳定。
import java.awt.*;
import javax.swing.*;
class Gif48 {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
String url = "http://1point1c.org/gif/thum/plnttm.gif";
int w = 12;
int h = 4;
JPanel p = new JPanel(new GridLayout(h,w,2,2));
String pre = "<html><body><img src='";
String post = "'>";
for (int ii=0; ii<w*h; ii++) {
JLabel l = new JLabel(
pre + url + post );
l.setBackground(Color.BLACK);
l.setOpaque(true);
p.add(l);
}
JOptionPane.showMessageDialog(null, p);
}
});
}
}
解决这个问题的最佳方法是什么?
不要在GUI的控件中使用动画GIF。
答案 1 :(得分:1)
我找到了解决方案的人! GIF动画有很多帧。在每个帧中,他们有自己的时间。当我重新打开一个GIF动画文件时,我可以清楚地看到0时帧速率是问题所在。现在我应该将它改为略高于0.1帧率,这就解决了所有问题。