将.gif图像作为图标添加到输出窗口

时间:2018-12-25 09:30:31

标签: java icons output animated-gif netbeans-platform

我想在正在开发的NetBeans平台应用程序的输出窗口中添加一个加载动画的gif图标。我设法添加了一个png图标文件。但是在这种情况下,添加的gif图标没有动画。它保持不变。

private class Loading extends AbstractAction {

        public Loading() {
            //putValue(SMALL_ICON, ImageUtilities.loadImageIcon("org/netbeans/modules/plsql/execution/loading.gif", true));

            putValue(SMALL_ICON, ImageUtilities.loadImage("org/netbeans/modules/plsql/execution/loading.gif",true));
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            System.out.println("Action performed");
        }

    }

这就是我用作输出窗口的地方。

final InputOutput io = IOProvider.getDefault().getIO("Deploy Dependents", new Action[]{new Loading()});

To the image that is circled here

2 个答案:

答案 0 :(得分:1)

您需要将按钮添加为加载了inline的{​​{1}}的{​​{1}}。它将为您处理动画。

ImageObserver类可能隐藏了对按钮本身的访问,但是如果您设法在其上获得了句柄,只需调用Image,您就会看到动画正在运行。

答案 1 :(得分:0)

您可以尝试下面的代码,它正在加载带有动画的gif图像。

我认为您只需要这段代码:

    ClassLoader classLoader = getClass().getClassLoader();
    File file = new File(classLoader.getResource("gif.gif").getFile());
    Image image = Toolkit.getDefaultToolkit().createImage(org.apache.commons.io.IOUtils.toByteArray(new FileInputStream(file)));
    ImageIcon icon = new ImageIcon(image);

下面添加了完整的代码示例:

import java.awt.Image;
import java.awt.Toolkit;
import java.io.File;
import java.io.FileInputStream;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;

public class AnimationTest extends JFrame {

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            AnimationTest test = new AnimationTest();
            test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            test.setVisible(true);
        }
    });
}

public AnimationTest() {
    super();
    try {
        JLabel label = new JLabel();
        ClassLoader classLoader = getClass().getClassLoader();
        File file = new File(classLoader.getResource("gif.gif").getFile());
        Image image = 
       Toolkit.getDefaultToolkit().createImage(org.apache.commons.io.IOUtils.
        toByteArray(new FileInputStream(file)));
        ImageIcon icon = new ImageIcon(image);
        label.setIcon(icon);
        icon.setImageObserver(label);
        add(label);
        pack();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

在github上添加了与jave项目相同的代码,您可以从那里获取完整的代码。

loading gif image to java with animation

此外,您需要使用以下apache commons依赖项作为示例代码

    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.6</version>
    </dependency>