JLabel HTML 中的相对路径
我试图让 JLabel 显示一个使用相对路径引用图像的 html。 但我无法让 JLabel 找到图像。当我使用绝对路径时它工作得很好。
我尝试从命令行或从 Eclipse 运行该程序,并添加对话框以显示当前工作目录在哪里,但没有用。 因此,我得出的结论是,不会在当前目录中搜索该图像 - 这让我明白了这一点。在哪里寻找图像?
这是一个测试代码,显示我在做什么:
import javax.swing.*;
public class HTMLLabel extends JFrame {
public HTMLLabel() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JOptionPane.showMessageDialog( this,
System.getProperty("user.dir"));
String html = "<html>\n" +
" <body>\n" +
" <div style=\"text-align: center;\">\n" +
" <img src=\"file://s.png\">\n"+
" </div>\n"+
" </body>\n"+
"</html>";
JLabel label = new JLabel(html);
add(label);
pack();
setVisible(true);
}
public static void main(String[] args) {
new HTMLLabel();
}
}
I am trying to make JLabel show an html which is referencing an image using a relative path.
But I cannot make JLabel locate the image. It works fine when I am using absolute path.
I have tried running the program from the command line or from eclipse and add dialog to show me where is the current working directory but for avail.
I have therefor came to the conclusion that the image is not searched in the current directory - which brings me to the point. where is the image looked for?
here is a test code that show what I am doing:
import javax.swing.*;
public class HTMLLabel extends JFrame {
public HTMLLabel() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JOptionPane.showMessageDialog( this,
System.getProperty("user.dir"));
String html = "<html>\n" +
" <body>\n" +
" <div style=\"text-align: center;\">\n" +
" <img src=\"file://s.png\">\n"+
" </div>\n"+
" </body>\n"+
"</html>";
JLabel label = new JLabel(html);
add(label);
pack();
setVisible(true);
}
public static void main(String[] args) {
new HTMLLabel();
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用此函数为 JLabel 准备 html 文本,以显示与类包相关的图像。
该函数替换“src”属性的内容,使其与提供程序类相关。
示例:
无论如何,要获得真正的 html 支持,请使用 JEditorPane。
Use this function to prepare the html text for the JLabel to display images relative to the package of a class.
The function replace the content of the "src" attribute to make it relative to the provider class.
Example:
Anyway for a real html support use JEditorPane.
我看到两种变体:
我不知道为什么,但对我来说,
假设 s.png 位于当前工作目录中,这是可行的。
另一种似乎更适合我的变体是:
I see two variants:
I don't know why but for me this works
assuming that s.png is in current working directory.
Another variant that seems more appropriate for me is:
你为什么要这样做?只需使用这个
JLabel(Icon image)
构造函数或者如果您坚持使用 html 变体。
顺便说一句,文件协议使用 3 个斜杠(
file://s.png
无效),file:///s.png
表示C:\s .png
。如果图像位于您可以使用的起始目录中。但我对第二个解决方案不做任何保证。
Why are you even doing it like this? Just use this
JLabel(Icon image)
constructorOr if you insist on the html variant.
btw The file protocol uses 3 slashes (
file://s.png
is invalid) andfile:///s.png
would meanC:\s.png
. If the image resides in the starting directory you could use.But I make no guarantees about the 2nd solution.
我刚刚替换了你的
,解决了问题
注意:我将 s.png 文件放在 src/java 文件夹中
i just replaced your
and that solved the problem
NOTE: i placed the s.png file in the src/java folder