我想添加一个gif
加载图像,该图像将显示在Java面板上。这是代码。第一个图像是显示的png
,而第二个图像是不显示的gif
。
import java.awt.*;
import javax.swing.*;
public class Welcome extends JFrame{
public static void main(String[]args) {
Welcome welcome = new Welcome();
welcome.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
welcome.setSize(600, 350);
welcome.setVisible(true);
welcome.getContentPane().setBackground(Color.white);
}
private JLabel window1;
private JLabel window2;
private ImageIcon logo;
private ImageIcon Spinner;
public Welcome() {
super ("HALTON'S PHARMACY");
setLayout(new FlowLayout());
window1 = new JLabel("");
window1 = new JLabel(logo);
window2 = new JLabel(Spinner);
window1.setIcon(new ImageIcon("halton_logo.png"));
window2.setIcon(new ImageIcon("Spinner.gif"));
add(window1);
add(window2);
validate();
}
}
答案 0 :(得分:1)
我可以想到三种可能的解释:
您使用了错误的文件名。 (我注意到您已经将"Spinner.gif"
中的文件名大写了。这是一个错误吗?)
运行命令时,文件不在所需的位置。 (我注意到您正在使用 relative 路径。这意味着应用程序在运行时需要在应用程序的当前目录中存在一个名为"Spinner.gif"
的文件。 )
GIF文件格式不正确或已损坏。
从文件系统加载应用程序(概念上)的内置映像可能是一个坏主意。最好将它们作为资源加载;例如
URL url = this.getClass().getResource("/images/spinner.gif");
ImageIcon icon = new ImageIcon(url);
然后,您只需确保所需的图像在应用程序的JAR文件中或其他任何内容中即可。
答案 1 :(得分:0)
即使在文档中没有提到(据我看来),如果您遵循ImageIcon(String filename)
构造函数,也会发现以下代码。
image = Toolkit.getDefaultToolkit().getImage(filename);
if (image == null) {
return;
}
this.filename = filename;
this.description = description;
loadImage(image);
因此,通过某种猜测,是因为找不到具有此特定名称的文件。如果显示第一个图像,则表示存在第一个图像。如果第二个图像未显示,则表示第二个图像不存在。
长话短说:检查.gif文件的路径/名称是否正确。
一个简单的System.out.println(new File("Spinner.gif").exists());
可能会完成这项工作。