2014-09-10 196 views
1

我有一个csv文件,其中包含我所有图像的文件名。我想从该文件中提取文件名并使用它们将相应的图像添加到我的GUI中。我有很多图像,所以我不能输出所有的文件路径。使用变量作为文件路径将ImageIcon添加到JPanel

它的工作原理,如果我使用

img = new ImageIcon("resources/imagename.jpg"); 

但如果我用

String fileName = "resources/" + fileNameExtractedFromCSVFile; 
img = new ImageIcon(fileName); 

它提取的文件名就好了,它只是不会用它来定位图像。我将不胜感激任何帮助。

+0

选定的文本,显示图像哎呀是的,这是一个错字。 – user3586210 2014-09-10 21:14:58

+0

如果不是从CSV中提取的,请确保您连接“.jpg”。 – 2014-09-10 21:15:22

+0

它包含在从CSV中提取的文件名中。 – user3586210 2014-09-10 21:18:36

回答

0

在使用它之前检查fileNameExtractedFromCSVFile的值。好像它没有正确填充。如果您正在使用IDE,请尝试在DEBUG模式下运行代码,并在此行上放置一个断点以查看变量的值。

+0

正如它应该的那样填充变量。 – user3586210 2014-09-10 21:18:02

+0

@ user3586210但是您没有阅读文件内容,您要求ImageIcon将CSV文件视为图像文件,如果情况如此,并且图像文件存在于资源文件夹中,我会看到它不是 – MadProgrammer 2014-09-10 21:22:29

+0

代码没有问题。图像是否可读?扩展是否正确? @ user3586210 - ImageIcon构造函数接受一个字符串文件名,所以它以他正在做的方式确定。 – Dave 2014-09-10 21:22:29

0

如果我确实理解了你的话,你需要这样的东西,请看下面的演示和代码。另外请在您的应用程序中创建图像包。

enter image description here

enter image description here

enter image description here

此方法添加到您的类来读取CSV

public void csvread() throws IOException 
    { 
     File file = new File("filenames.csv"); 
    List<String> lines = Files.readAllLines(file.toPath(), 
      StandardCharsets.UTF_8); 
    for (String line : lines) { 
     String[] array = line.split(","); 
     jTextArea1.append(array[0]+"\n"); 
    } 

    } 

按钮CSV阅读操作

私人无效jButton1ActionPerformed(EVT java.awt.event.ActionEvent中){

try { 
     csvread(); 
    } catch (IOException ex) { 
     Logger.getLogger(ImageDisplay.class.getName()).log(Level.SEVERE, null, ex); 
    } 


} 

文本区鼠标释放得到的JLabel的

private void jTextArea1MouseReleased(java.awt.event.MouseEvent evt) {           

    if (jTextArea1.getSelectedText() != null) { 

     String s = jTextArea1.getSelectedText(); 

     ImageIcon imageselect = new ImageIcon(getClass().getResource("/images/" + s)); 
     jLabel2.setIcon(imageselect); 

    } else { 
     jLabel4.setVisible(true); 
    } 

}