2010-03-20 137 views
3

我想显示一个JLabel具有文本的几行和相关图片如下:可以JLabel的具有IMG标签

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

不是它的问题很多,但我相信你的意思''
什么 – 2011-01-04 21:12:16

回答

1

然后尝试在单个JLabel上有多个图像,为什么不只是有许多JLabel,每个JLabel都有一个图像(如uthark所述),然后将所有标签在单个JPanel上组合在一起。这应该会给你带来的影响只需要极小的额外复杂性。

+0

您可以使用嵌入HTML JLabel中有多个*图片*。你不能有多个*图标*设置。 – 2011-01-04 18:31:26

0

HTML中不支持嵌入图像。因此,您必须使用setIcon或将ImageIcon提供给JLabel构造函数; HTML不能有IMG标签。

JLabel imageLabel = 
    new JLabel(labelText, 
      new ImageIcon("path/to/image.gif"), 
      JLabel.CENTER); 

你的情况,你需要使用JTextPane显示HTML。参见教程here

+0

如果我想有多个图像,标签上有不同的线路? – Aly 2010-03-20 19:56:38

1

使用JEditorPane显示HTML。您可以更改背景,背景,字体等,使其看起来像一个标签。

2

除非您对JEditorPane感到满意,否则您基本上是在Swing内部查看完整的webbrowser。

理想情况下,您将使用JWebPane,它将作为Swing组件的WebKit视图,但尚未出现。我能找到的最新信息是blog post

The DJ project允许在Swing中嵌入平台的本地浏览器。它使用Windows上的Internet Explorer和Linux上的XULRunner。它不支持Mac。

3

For the image all I get is a broken image, is it possible to nest img tags inside a JLabel

能够显示在JLabel的文本图像(一个或多个)。由于的路径不正确,所以您正在破损图像。你需要用file:或者用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

4
File f = new File("C:\image.jpg"); 
jLabel1.setText("<html><img src=\"file:"+file.toString()+"\">"); 

这对我有用。它很简单,可以放置任意数量的图像,而不仅仅是一个图像图标。这不是没有引号的工作。