может надписи есть теги 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 ответов:
Вместо того, чтобы пытаться иметь несколько изображений на одной 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. Смотрите учебник здесь