我正在尝试显示一个JLabel,它有几行文字和一个图像,如下所示:
String html = "<html> hello </br> <img src = \"/absolute/path/here\" height = \"30\" width =\"40\"/> </html>";
JLabel l = new JLabel(html);
对于我得到的图像是一个破碎的图像,是否可以将嵌入img标签嵌入JLabel?
编辑: 我想在JLabel中添加多个图像,所以我不认为使用ImageIcon会在这里做。
由于
答案 0 :(得分:5)
File f = new File("C:\image.jpg");
jLabel1.setText("<html><img src=\"file:"+f.toString()+"\">");
这对我有用。它很简单,可以放置你想要的任意数量的图像,而不仅仅是一个图像图标。没有引号就行不了。
答案 1 :(得分:4)
For the image all I get is a broken image, is it possible to nest img tags inside a JLabel
可以在JLabel的文本中显示图像。您正在收到损坏的图像,因为路径不正确。您需要在路径前添加file:
,或者最好让java为您class.getResource("/your/path")
执行此操作。这是一个工作示例,只需插入有效的资源路径。
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class MultipleImagesExample
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
frame.setLayout(new BorderLayout());
JLabel label = new JLabel(
"<html>"
+ "<img src=\""
+ MultipleImagesExample.class.getResource("/resource/path/to/image1")
+ "\">"
+ "<img src=\""
+ MultipleImagesExample.class.getResource("/resource/path/to/image2")
+ "\">"
+ "The text</html>");
frame.add(label, BorderLayout.CENTER);
frame.setBounds(100, 100, 200, 100);
frame.setVisible(true);
}
}
对于java中更复杂的HTML,我建议使用xhtmlrenderer。
答案 2 :(得分:2)
除非你对JEditorPane感到满意,否则你基本上都在寻找Swing内部的完整网页浏览器。
理想情况下,您可以使用JWebPane作为Swing组件的WebKit视图,但它还没有。我能找到的最新信息是blog post。
The DJ project允许在Swing中嵌入平台的本机浏览器。它使用Windows上的Internet Explorer和Linux上的XULRunner。它没有任何Mac支持。
答案 3 :(得分:1)
使用JEditorPane显示HTML。您可以更改背景,前景,字体等,使其看起来像标签。
答案 4 :(得分:1)
而不是尝试在单个JLabel上拥有多个图像,为什么不简单地拥有许多JLabel,每个JLabel都有一个图像(如uthark描述的那样),然后将所有标签组合在一个JPanel上。这应该会给你带来你想要的效果,只需要很小的额外复杂性。
答案 5 :(得分:1)
上述方法似乎不再适用。
您现在似乎必须在img
代码中使用实际的URI。
"<img src=\"" + new File(...).toURI() + "\">"
对我有用。
答案 6 :(得分:0)