Pergunta

Estou tentando exibir um jlabel que tenha algumas linhas de texto e uma imagem da seguinte maneira:

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

Para a imagem, tudo o que recebo é uma imagem quebrada, é possível aninhar as tags IMG dentro de um jlabel?

Editar: quero adicionar várias imagens ao Jlabel, para que não ache que o uso de um imageicon faça aqui.

Obrigado

Foi útil?

Solução

Em vez disso, tente ter várias imagens em um único Jlabel, por que não simplesmente ter muitos Jlabels, cada um com uma imagem (como UThark descreveu) e, em seguida, agrupe todos os rótulos em um único JPanel. Isso deve dar o efeito que você está procurando apenas com apenas complexidade adicional mínima.

Outras dicas

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

Isso funciona para mim. É simples e oferece possibilidade de colocar qualquer número de imagens que você deseja, não apenas um ícone de imagem. Não está funcionando sem aspas.

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

Isto é possível exibir imagens (s) no texto de um jlabel. Você está recebendo imagens quebradas porque O caminho não está correto. Você precisa prefixar seu caminho com file: ou de preferência que Java faça isso por você com class.getResource("/your/path"). Aqui está um exemplo de funcionamento, basta inserir caminhos de recursos válidos.

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

 }

Para HTML mais complexo em Java, eu recomendo xhtmlrenderer.

A menos que você esteja feliz com Jeditorpane, você está basicamente olhando para um webbrowser completo dentro do swing.

Idealmente, você usaria o JWebpane, que seria uma visualização do Webkit como um componente de giro, mas ainda não foi lançado. A informação mais recente que pude encontrar foi esta Postagem do blog.

O projeto de DJ Permite incorporar o navegador nativo da plataforma no swing. Ele usa o Internet Explorer no Windows e Xulrunner no Linux. Não tem suporte para Mac.

Use um Jeditorpane para exibir o HTML. Você pode alterar o plano de fundo, para o solo, a fonte etc. para que pareça uma etiqueta.

As abordagens acima parecem mais funcionar.

Parece que agora você tem que usar um URI real no img marcação.

As coisas funcionam para mim com "<img src=\"" + new File(...).toURI() + "\">".

Imagens incorporadas não são suportadas no HTML. Assim, você deve usar o Seticon ou fornecer um imageicon ao construtor jlabel; O HTML não pode ter uma tag IMG.

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

No seu caso, você precisa usar JTextPane Para exibir HTML. Veja o tutorial aqui

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top