大家好,所以我在我的动画节目上取得了进步,但我遇到了一个问题,我的alien.png没有出现在jframe中。我将alien.png放在与此动画demo.java相同的文件夹中,所以我不确定为什么它找不到alien.png。任何帮助将不胜感激
<% @subject.Association.each do |horse| %>
<tr>
<td>
<%= horse['Name'].to_s %>
<%= horse['Size'] %>
</td>
</tr>
<% end %>
答案 0 :(得分:1)
让我们看一下代码行:
package animationdemo; // this one!
import java.awt.Graphics;
// ..
public class AnimationDemo extends JFrame {
Image alien;
public AnimationDemo() {
alien = Toolkit.getDefaultToolkit().getImage("alien.png"); // & this one!
最后一行有效地尝试从“当前目录”加载File
。
但图片可能无法再作为File
访问。应用程序资源在部署之前将成为嵌入式资源,因此立即开始访问它们是明智之举。必须通过URL而不是文件访问embedded-resource。有关如何形成网址,请参阅info. page for embedded resource。
注意第一个高亮线,找到资源的最佳路径可能是:
..getResource("/animationdemo/alien.png")
另请注意,getResource
方法区分大小写,因此..
..getResource("/animationdemo/alien.PNG")
..找不到小写版本,反之亦然。
顺便说一下,我通过对上面的来源做了一些小改动来检查我的“缺失图像”理论:
alien = new BufferedImage(40, 40, BufferedImage.TYPE_INT_RGB);
//Toolkit.getDefaultToolkit().getImage("alien.png");
鉴于我看到了一个动画黑色方块,它支持的主要问题是图像未找到。代码仍然有一些其他方面应该调整,但它基本上是朝着正确的方向。