JLabel可以有img标签吗?

Aly*_*Aly 5 html java image jlabel

我正在尝试显示一个JLabel,它有几行文本和图像,如下所示:

String html = "<html> hello </br> <img src = \"/absolute/path/here\" height = \"30\"  width =\"40\"/> </html>";
JLabel l = new JLabel(html);
Run Code Online (Sandbox Code Playgroud)

对于图像,我得到的是一个破碎的图像,是否可以将嵌入img标签嵌入JLabel?

编辑:我想将多个图像添加到JLabel,所以我不认为使用ImageIcon会在这里做.

谢谢

bri*_*n_d 5

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

可以在JLabel中的文本显示图像(S)。由于路径不正确,您会收到损坏的图像。您需要为您的路径加上前缀,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);
   }

 }
Run Code Online (Sandbox Code Playgroud)

对于 Java 中更复杂的 HTML,我推荐xhtmlrenderer


dar*_*esm 5

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

这适合我.它很简单,可以放置你想要的任意数量的图像,而不仅仅是一个图像图标.没有引号就行不通.


Kri*_*ris 1

与其尝试在单个 JLabel 上拥有多个图像,为什么不简单地拥有多个 JLabel,每个 JLabel 都有一个图像(如 uthark 所描述的),然后将所有标签组合到一个 JPanel 上。这应该会给您带来您正在寻找的效果,并且只需要最小的额外复杂性。