【问题标题】:Getting ImageIcon absolute path from a Jlabel从 Jlabel 获取 ImageIcon 绝对路径
【发布时间】:2017-03-16 17:53:37
【问题描述】:

通过使用:

jLabel1.getIcon().toString();

它只返回对对象“javax.swing.ImageIcon@2982ccce”的引用;

不是绝对路径,那我怎么能返回那个图标的绝对路径呢?

例如:C:/File/imageicon.jpg

【问题讨论】:

  • toString() 总是以字符串格式返回对象。在没有 toString() 的情况下尝试:jLabel1.getIcon()
  • 无法完成。图像和图标没有用于此的 API,通常可以在文件系统之外的上下文中使用。
  • 你不能,因为图标和文件是不相关的。可以通过读取文件来创建图标,但也可以通过其他几种方式(从jar资源、socket、内存中的字节数组等)逐一创建
  • @ArpitParasana 是的,我会试试的,谢谢!
  • @ControlAltDel 谢谢!

标签: java jlabel imageicon absolute-path


【解决方案1】:
    JLabel jLabel1 = new JLabel();
    jLabel1.setIcon(new ImageIcon(getClass().getResource("/lk/edu/ijse/examsimulator/img/Hand With Pen_36px.png")));
    if (jLabel1.getIcon() != null) {

        Icon iconPath = jLabel1.getIcon();
        System.out.println(iconPath.toString());
        /* print      
         * file:/E:/Quick%20access/Documents/NetBeansProjects/ExamSimulator/ExmClientAdmin/build/classes/lk/edu/ijse/examsimulator/img/Hand%20With%20Pen_36px.png
         */

        String absolutePath = iconPath.toString().replaceFirst("file:/", "");
        absolutePath = absolutePath.replaceAll("%20", " ");
        System.out.println(absolutePath);
        /* print
         *
         * E:/Quick access/Documents/NetBeansProjects/ExamSimulator/ExmClientAdmin/build/classes/lk/edu/ijse/examsimulator/img/Hand With Pen_36px.png
         *
         * it's my image absolute path */
    }

【讨论】:

  • 请编辑您的答案以包含一些关于您的代码如何回答问题的文本。也许,添加一个带有其输出的示例。另外,请考虑重新格式化您的代码。
  • OP 说toString() 结果为“javax.swing.ImageIcon@2982ccce”;你说toString() 产生一个文件路径,现在怎么样了?好吧,你们俩都是,但是您没有解释代码中的差异以及为什么您的 toString() 调用行为不同。
  • 谢谢..我有一些错误..现在我纠正它..@Yannis
  • @Tom 我对此一无所知..我是一名实习生..请尝试一下。
  • 我猜你也在使用ImageIcon。如果没有,那么您应该添加到您的问题中。如果您还使用ImageIcon,请检查您如何初始化它并尝试了解为什么您的初始化风格允许它打印所用文件的路径。然后你就会知道你的代码和 OP 之间的区别,这也应该在答案中解释。
猜你喜欢
  • 1970-01-01
  • 2022-06-10
  • 2012-08-27
  • 1970-01-01
  • 1970-01-01
  • 2011-08-11
  • 2010-09-21
  • 2023-03-22
相关资源
最近更新 更多