может надписи есть теги img


Я пытаюсь отобразить 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 5

7 ответов:

Вместо того, чтобы пытаться иметь несколько изображений на одной JLabel, почему бы просто не иметь много Jlabel, каждый с одним изображением (как описал утарк), а затем сгруппировать все метки вместе на одной JPanel. Это должно дать вам эффект, который вы ищете, только с минимальной дополнительной сложностью.

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

Это работает для меня. Это просто и дает возможность поместить любое количество изображений, которые вы хотите, а не только один значок изображения. Это не работает без кавычек.

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);
   }

 }

Для более сложного HTML в java я рекомендую xhtmlrenderer.

Если вы не довольны JEditorPane, вы в основном смотрите на полный webbrowser внутри Swing.

В идеале вы бы использовали JWebPane, который был бы представлением WebKit в качестве компонента Swing, но он еще не вышел. Самой последней информацией, которую я смог найти, была эта запись в блоге .

Проект DJ позволяет встроить родной браузер платформы в Swing. Он использует Internet Explorer на Windows и XULRunner на Linux. Он не имеет никакой поддержки для Mac.

Используйте JEditorPane для отображения HTML. Вы можете изменить фон, forground, шрифт и т. д., чтобы он выглядел как метка.

Вышеприведенные подходы, похоже, больше не работают.

Похоже, что теперь вы должны использовать фактический URI в теге img.

Вещи работают для меня с "<img src=\"" + new File(...).toURI() + "\">".

Встроенные изображения не поддерживаются в HTML. Таким образом, вы должны использовать setIcon или предоставить ImageIcon конструктору JLabel; HTML не может иметь тег IMG.

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

В вашем случае вам нужно использовать JTextPane для отображения HTML. Смотрите учебник здесь