我想在正在开发的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()});
答案 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>