2013-04-22 108 views
1

我正在使用JFreeChart,其中我通过实现XYToolTipGenerator接口来自定义图表的工具提示。 由于generateToolTip()方法应该返回一个字符串,这里是我做的,以显示工具提示图片:Java工具提示带有JAR文件中的图像

@Override 
public String generateToolTip(XYDataset dataset, int series, int item) { 
    (...) 
    return "<html><body><img src=\"file:resources/img/image.png\"></body></html>"; 
} 

虽然直接从我的IDE(Eclipse中)在执行时,这个完美的作品,它显然失败当从打包的JAR文件执行时(image.png也在JAR文件中)。

任何暗示如何解决这个问题将不胜感激(理想情况下,无需从JAR文件中提取image.png)。

非常感谢, 托马斯

回答

3

尝试使用资源网址:

URL url = getClass().getResource("/img/image.png"); 
String tt = "<html><body><img src='" + url + "'></body></html>"; 

编辑:简单的例子,从可执行的JAR运行,显示工具提示:

@Override 
public String generateToolTip(XYDataset arg0, int arg1, int arg2) { 
    return String.format(
      "<html><body><img src='%s'> some data </body></html>", 
      getClass().getResource("/images/duke.gif")); 
} 

enter image description here

+0

不幸的是,这不起作用(显示工具提示时图像未找到)。由于操作系统(Windows)显示的工具提示,我的猜测是,我将不得不提供JAR文件以外的图片......除非有人有一个明智的解决方法? Thx – Tom 2013-04-22 19:59:39

+0

@Tom它应该工作。确保'getResource()'中的路径是正确的。图像位于哪里?请参阅[使用getResource加载图像](http://docs.oracle.com/javase/tutorial/uiswing/components/icon.html#getresource)教程。 – tenorsax 2013-04-22 20:02:35

+0

@Tom我可能在我的示例中省略了'resources'文件夹。根据需要调整路径。 – tenorsax 2013-04-22 20:14:28