Question

Je suis en train d'afficher un JLabel qui a quelques lignes de texte et une image comme suit:

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

Pour l'image est tout ce que je reçois une image brisée, est-il possible d'imbriquer les balises img l'intérieur d'un JLabel?

EDIT: Je veux ajouter plusieurs images à la JLabel donc je ne pense pas que l'utilisation d'un ImageIcon fera ici.

Merci

Était-ce utile?

La solution

Plutôt essayez d'avoir plusieurs images sur un seul JLabel pourquoi pas simplement beaucoup JLabels, chacun avec une image (comme décrit Uthark), puis groupe toutes les étiquettes ensemble sur un seul JPanel. Cela devrait vous donner l'effet que vous recherchez avec seulement une complexité supplémentaire minimale.

Autres conseils

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

Cela fonctionne pour moi. Il est simple et donne la possibilité de mettre un certain nombre d'images que vous voulez, pas seulement une icône d'image. Il ne fonctionne pas sans guillemets.

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

est possible d'afficher l'image (s) dans le texte d'un JLabel. Vous obtenez des images brouillées parce que le chemin est incorrect . Vous avez besoin de préfixer votre chemin avec file: ou obtenir de préférence java pour le faire pour vous avec class.getResource("/your/path"). Voici un exemple de travail, il suffit d'insérer des chemins de ressources valides.

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

 }

Pour HTML plus complexe java, je vous recommande xhtmlrenderer .

Sauf si vous êtes satisfait de JEditorPane, vous êtes à la recherche essentiellement à un navigateur Web complet à l'intérieur du Swing.

Idéalement, vous utiliseriez JWebPane qui serait une vue WebKit en tant que composant Swing, mais il est pas encore. Les informations les plus récentes que je pouvais trouver était cette blog .

Le projet DJ permet l'intégration navigateur natif de la plate-forme Swing. Il utilise Internet Explorer sous Windows et Linux sur XULRunner. Il n'a pas de support pour Mac.

Utilisez un JEditorPane pour afficher le code HTML. Vous pouvez changer l'arrière-plan, au premier plan, la police etc donc il ressemble à une étiquette.

Les approches ci-dessus ne semblent pas travailler plus.

Il semble que vous avez maintenant d'utiliser un URI réelle dans la balise img.

Les choses fonctionnent pour moi avec "<img src=\"" + new File(...).toURI() + "\">".

Les images incorporées ne sont pas pris en charge dans le code HTML. Ainsi, vous devez utiliser setIcon ou fournir un ImageIcon au constructeur JLabel; le code HTML ne peut pas avoir une balise IMG.

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

Dans votre cas, vous devez utiliser JTextPane pour afficher HTML. Voir tutoriel

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top