如何在Java中显示无循环的'gif'

时间:2019-02-02 18:10:30

标签: java swing awt gif repaint

我有一个类,我在其中加载天气数据显示,并希望在加载显示时显示加载动画。

这是初始代码:

"has_more":true

这是一种方法,我正在使用一种天气显示来显示:

   DrawFrame(JSONArray weather, String button) {

    this.weather = weather;

    drawPanel = new JPanel() {

        @Override
        protected void paintComponent(Graphics g) {

            super.paintComponent(g);
            switch (button) {
                case MainFrame.hourly1ButtonValue:
                    hourly1 = (Graphics2D) g;
                    drawHourly1();
                    break;
                case MainFrame.hourly12ButtonValue:
                    hourly12 = (Graphics2D) g;
                    drawHourly12();
                    break;
                case MainFrame.index5ButtonValue:
                    stargazing = (Graphics2D) g;
                    drawStargazing();
                    break;
            }
        }
    };

    KeyListener kl=new KeyAdapter()
    {
        public void keyPressed(KeyEvent evt)
        {
            //If someone click Esc key, this program will exit
            if(evt.getKeyCode()==KeyEvent.VK_ESCAPE)
            {
                System.exit(0);
            }
        }
    };

    JFrame frame = new JFrame("Wetteranzeige");
    //frame.setUndecorated(true);
    frame.add(drawPanel);
    frame.setPreferredSize(new Dimension(dimension.width, dimension.height));
    //frame.addKeyListener(kl);
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);

}

它产生类似这样的东西: 1

当我添加gif时,它会无限循环,而不是一次, 所以我想我可以通过设置每一帧来手动绘制gif(在我的情况下,更改图标的位置),但是我无法根据这里的绘制结构来确定使用计时器正确地重新绘制...

我无法使它像下面的示例那样工作: https://docs.oracle.com/javase/tutorial/uiswing/painting/step3.html

那么有人对我有解决方案吗? 您的帮助将不胜感激!

0 个答案:

没有答案