JLabel可以有img标签吗?

时间:2010-03-20 19:52:22

标签: java html image jlabel

我正在尝试显示一个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会在这里做。

由于

7 个答案:

答案 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)

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

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

在您的情况下,您需要使用JTextPane来显示HTML。请参阅教程here