Frage

Ich versuche, ein JLabel anzuzeigen, die ein paar Zeilen Text hat und ein Bild wie folgt:

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

Für das Bild sehe ich nur ein gebrochenes Bild, ist es möglich, zu nisten img-Tags in einem JLabel?

EDIT: Ich möchte mehrere Bilder auf die JLabel hinzufügen, so glaube ich nicht die Verwendung eines ImageIcon hier tun wird.

Danke

War es hilfreich?

Lösung

Rather dann versuchen, mehrere Bilder auf einem einzigen JLabel zu haben, warum nicht einfach viele JLabels haben, die jeweils mit einem Bild (wie Uthark beschrieben) und dann alle Gruppe der Etiketten auf einem einzigen JPanel. Das sollte Ihnen die Wirkung, die Sie suchen mit nur minimaler zusätzlicher Komplexität.

Andere Tipps

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

Das funktioniert für mich. Es ist einfach und gibt Möglichkeit, beliebig viele Bilder setzen Sie, nicht nur ein Bild-Symbol soll. Es funktioniert nicht ohne Anführungszeichen.

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

Es möglich Anzeigebild (s) in einem Text des JLabel. Sie werden immer gebrochen Bilder weil der Pfad nicht korrekt ist . Sie müssen entweder Präfix den Weg mit file: oder vorzugsweise erhalten java es mit class.getResource("/your/path") für Sie zu tun. Hier ist ein funktionierendes Beispiel nur Einsatz gültiger Ressourcenpfade.

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

 }

Für komplexere HTML in Java, empfehle ich xhtmlrenderer .

Wenn Sie nicht gerade glücklich mit JEditorPane, du bist im Grunde an einem vollen Web-Browser innerhalb of Swing suchen.

Im Idealfall würden Sie JWebPane verwenden, die eine WebKit Ansicht als Swing-Komponente sein würde, aber es ist noch nicht aus. Die neuesten Informationen, die ich finden konnte, war dies Blog-Post .

Das DJ-Projekt der Plattform nativen Browser in Swing das Einbetten ermöglicht. Es nutzt den Internet Explorer unter Windows und XULRunner auf Linux. Es spielt keine Unterstützung für Mac hat.

Verwenden Sie ein JEditorPane die HTML angezeigt werden soll. Sie können den Hintergrund, Vordergrund, Schriftart usw., so dass es wie ein Etikett aussieht.

Die obigen Ansätze scheinen nicht mehr zu arbeiten.

Es scheint, dass Sie jetzt eine tatsächliche URI im img-Tag verwenden.

Things Arbeit für mich mit "<img src=\"" + new File(...).toURI() + "\">".

Eingebettete Bilder werden nicht in der HTML unterstützt. So müssen Sie SetIcon oder liefern ein ImageIcon zum JLabel Konstruktor verwenden; die HTML kann keine IMG-Tag haben.

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

In Ihrem Fall müssen Sie JTextPane HTML angezeigt werden soll. Siehe Tutorial hier

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top