2012-01-25 98 views
0

由于某种原因,我无法加载某些图像与我的Java程序。就在这段代码之上,我有另一个图像引用,工作正常。Java问题加载图像

for(int x = 1; x<=7; x++){ 
     if(additionals[x] != 0){ 
      rightPanel.add(new JLabel(new ImageIcon("IMAGES/image"+x+".GIF"))); 
      count++; 
     } 
    } 

图像保存一个名为IMAGES 文件夹中,被称为image1.gif,image2.gif等,如果你需要我的代码的其余部分只是问

+2

您是否100%确定您正在寻找图像的正确位置?如果你运行这一行:'System.out.println(System.getProperty(“user.dir”));'返回什么?您的IMAGES目录是否在相对于用户目录的正确位置(从上面给出的代码行输出的路径字符串)?例如,如果它返回'C:\ Users \ Foo \ Documents \ workspace \ bar',那么IMAGES应该在:'C:\ Users \ Foo \ Documents \ workspace \ bar \ IMAGES' –

+0

是的,我确信我是看在正确的文件夹,就像我说我有其他的行,参考图像从相同的文件夹,并使用相同的路径只是“图像/文件名”+ aValue +“。gif”不超过代码上的几行和eblow它没有问题 – Nate

+0

您的pastebin代码与上面发布的代码不同。哪个是对的?你是否收到任何错误讯息? –

回答

2
  1. 是它的窗口? GIF != gif否则
  2. 它是否工作,如果你删除条件(additionals[x] != 0)
  3. rightPanel足够大的所有图像?
+0

感谢您获取超级快速我不明白为什么这一行不工作我认为这与我的文件命名有关,如果我将“IMAGES/image”+ x +“.GIF”替换为另一个保存在相同图像中的图像它工作正常的文件夹。即时通讯使用净豆,如果这与它有什么关系,但目录是正确的,因为我在同一个程序中引用其他图像保存在该工作正常的文件夹中的其他行的代码 – Nate

+0

http:// pastebin。com/nRemXPJm – Nate

1

你确定这:

if (additionals[0] != 0){ 
     rightPanel.add(new JLabel(new ImageIcon("IMAGES/ram"+additionals[0]+"gb.gif"))); 
     count++; 
    } 
    for(int x = 1; x<=7; x++){ 
     if (additionals[x] != 0){ 
      rightPanel.add(new JLabel(new ImageIcon("IMAGES/image"+x+".gif"))); 
      count++; 
     } 
    } 

应该不是真的是这样?

if (additionals[0] != 0){ 
     rightPanel.add(new JLabel(new ImageIcon("IMAGES/ram"+additionals[0]+"gb.gif"))); 
     count++; 
    } 
    for(int x = 1; x<=7; x++){ 
     if (additionals[x] != 0){ 
      rightPanel.add(new JLabel(new ImageIcon("IMAGES/image"+ additionals[x]+".gif"))); 
      count++; 
     } 
    } 

这会让你的代码看起来更对称。否则,请在违规行之前使用要用于使ImageIcon确保其正确的字符串执行printlns。

例如:

for(int x = 1; x<=7; x++){ 
     if (additionals[x] != 0){ 
      String imagePath = "IMAGES/image"+x+".gif"; 
      System.out.println("imagePath = " + imagePath); 
      rightPanel.add(new JLabel(new ImageIcon(imagePath))); 
      count++; 
     } 
    } 

,然后比较与该文件名和路径输出字符串。更好的方法是在尝试使用它创建一个新的ImageIcon之前创建一个新的File并输出其完整路径。

警告:代码尚未经过测试。

+0

对于第一部分是肯定肯定它不应该是,如果你看我的代码开始处的注释在第一部分之后的加法数组,加法[1..7]是一个等价于布尔值的整数只有0或1,你在那里发布的代码只会加载一个图像,这将是image1所有的时间是如何做的,它是加法[1]等于保修,所以如果加法[1] == 1,然后加载imgae1。 gif加法[5]等于监视器(或任何),所以如果加法[5] == 1然后加载image5.gif – Nate

+0

也为第二部分我已经试过println的,并据我可以告诉他们只是他们应该如何。我可以将我的目录上传到文件共享站点,以便任何人都可以运行它,如果他们愿意的话,它可能只是我的机器,因为没有机会尝试另一个。 – Nate

+0

如何在IMAGES目录中发布所有文件的列表? –