Добавьте изображение .gif в качестве значка в окно вывода. - PullRequest
0 голосов
/ 25 декабря 2018

Я хочу добавить значок загрузки анимированного GIF-файла в окно вывода моего приложения на платформе NetBeans, которое я разрабатываю.Мне удалось добавить файл значка 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 голосов
/ 06 января 2019

Вам нужно добавить кнопку как ImageObserver из Image, загруженного вами с ImageUtilities.loadImage().Он позаботится об анимации за вас.

Доступ к самой кнопке может быть скрыт классом IOProvider, но если вам удастся справиться с ней, просто позвоните image.setImageObserver(button), и выувидеть анимацию.

0 голосов
/ 01 января 2019

Вы можете попробовать код ниже, он загружает 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();
    }
}

}

добавлен тот же код с проектом jave в github, вы можете получить полный код оттуда.

загрузка изображения gif в java с анимацией

Кроме того, вам необходимо использовать приведенную ниже зависимость Apache Commons для примера кода

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