Domanda

Sto cercando di visualizzare un JLabel che ha poche righe di testo e un'immagine come segue:

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

Per l'immagine tutto quello che ottiene è un'immagine rotto, è possibile tag img nido all'interno di un JLabel?

EDIT: Voglio aggiungere più immagini alla JLabel quindi non credo che l'uso di un ImageIcon farà qui.

Grazie

È stato utile?

Soluzione

Invece di cercare di avere immagini multiple su un singolo JLabel perché non solo hanno molti JLabels, ciascuno con un'immagine (come descritto uthark) e quindi di gruppo tutte le etichette insieme su un unico JPanel. Questo dovrebbe dare l'effetto che stai cercando con un solo ulteriore complessità minima.

Altri suggerimenti

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

Questo funziona per me. E 'semplice e dà la possibilità di mettere un qualsiasi numero di immagini che si desidera, non solo un'immagine dell'icona. Non funziona senza virgolette.

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

è possibile visualizzare l'immagine (s) nel testo di un JLabel. Hai trovato le immagini spezzate perché il percorso non è corretto . È necessario sia prefisso vostro percorso con file: o, preferibilmente, ottenere Java per farlo per voi con class.getResource("/your/path"). Ecco un esempio di lavoro, basta inserire i percorsi di risorse valide.

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

 }

Per ulteriori complesso HTML in Java, vi consiglio xhtmlrenderer .

A meno che non sei felice con JEditorPane, il gioco è fondamentalmente guardando un browser web completo all'interno di Swing.

Idealmente, si può usare JWebPane che sarebbe una vista WebKit come un componente Swing, ma non è ancora uscito. Le informazioni più recenti ho trovato è stato questo post sul blog .

Il progetto DJ consente di incorporare il browser nativo della piattaforma in Swing. Esso utilizza Internet Explorer in Windows e XULRunner su Linux. Non ha alcun supporto per Mac.

Usa un JEditorPane per visualizzare il codice HTML. È possibile modificare lo sfondo, in primo piano, font, ecc in modo che appaia come un'etichetta.

Gli approcci di cui sopra non sembrano funzionare più.

Sembra che adesso si deve utilizzare un URI effettivo nel tag img.

Le cose funzionano per me con "<img src=\"" + new File(...).toURI() + "\">".

Le immagini incorporate non sono supportate nel codice HTML. Quindi, è necessario utilizzare setIcon o fornire un'ImageIcon al costruttore JLabel; il codice HTML non può avere un tag IMG.

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

Nel tuo caso è necessario utilizzare JTextPane per visualizzare HTML. Vedere Esercitazione qui

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top