2014-09-10 201 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); 
    } 

}