【问题标题】:Adding an ImageIcon to a JPanel using a variable as the file path使用变量作为文件路径将 ImageIcon 添加到 JPanel
【发布时间】:2014-11-04 16:17:16
【问题描述】:

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

如果我使用它会起作用

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

但如果我使用

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

它可以很好地提取文件名,只是不会使用它来定位图像。我将不胜感激任何帮助。

【问题讨论】:

  • 哎呀,这是一个错字。
  • 如果不是从 CSV 中提取的,请确保连接“.jpg”。
  • 它包含在从 CSV 提取的文件名中。
  • 您有一个包含图像名称列表的 CSV 文件,您似乎认为将此文件的 URL 引用传递给 ImageIcon 会神奇地读取文件,知道文件中每一列的含义并读取给你的图像...在 ImageIcon(URL) 执行此操作的文档中找到我...
  • 我正在向 ImageIcon 发送从 CSV 获取的路径字符串。 (这是允许的)我不想将 CSV 文件发送到 ImageIcon...我不是一个白痴。

标签: java swing user-interface embedded-resource imageicon


【解决方案1】:

如果我没有正确理解您,您需要这样的东西,请查看下面的演示及其代码。此外,请在您的应用程序中创建图像包。

将此方法添加到您的类中以读取 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 读取操作

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

    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);
    }

}  

【讨论】:

    【解决方案2】:

    在使用前检查 fileNameExtractedFromCSVFile 的值。似乎它没有正确填充。如果您使用的是 IDE,请尝试在 DEBUG 模式下运行代码并在此行下一个断点,看看变量的值是什么。

    【讨论】:

    • 它按预期填充变量。
    • @user3586210 但是您不是在读取文件内容,而是在要求 ImageIcon 将 CSV 文件视为图像文件,而事实并非如此
    • 如果是这种情况并且图像文件存在于资源文件夹中,我认为代码没有任何问题。图像可读吗?扩展名正确吗? @user3586210 - ImageIcon 构造函数采用字符串文件名,所以他这样做的方式没问题。
    猜你喜欢
    • 2015-02-27
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多