ToolTip com Imagem

4 respostas
H

Alguém sabe como fazer com que o ToolTipManager mostre imagens no ToolTip ao invés de mostrar somente texto.

Por exemplo:

Eu tenho um JLabel, eu quero que ao deixar o mouse sobre o JLabel seja mostrado um ToolTip com uma imagem e não com um texto (que é a única coisa que eu sei colocar).

Fazer um ToolTip com uma Imagem dentro é simples, mas fazer com que o ToolTipManager mostre esse TooTip é very difícil. :cry:

4 Respostas

J

Oi

Heber, tu faz isso usando HTML dentro do ToolTIp, isso mesmo, HTML…

No teu SDK, no diretório EXAMPLES, tem o SwingSet2… nele tem um trecho de código que ensina como se faz isso.

T+

H

Só tem um pequeno problema,
pra mim poder usar via <html> eu teria que saber onde a imagem está em armazenada, mas minha imagem é criada em tempo de execução, ela não existe em disco.

J

Oi

Heber, então a coisa é mais embixao hein… Assim eu não sei não…

T+

H

Galera consegui resolver!!!
Apesar de ter um pouco de Gambiarra.

Todo JComponent possui o método createToolTip() e toda vez que o ToolTipManager vai mostrar o JToolTip ele chama esse método e faz um JToolTip#setTipText(String), então qual seria a solução???

Foram necessários dois passos para resolver esse problema

1. Sobrescrever o método JComponent#createToolTip(), no meu caso um JButton

2. Sobrescrever o método JToolTip#setTipText(String).

O código ficaria assim:

public class MeuComponente extends JButton&#123;

  private Icon icon;

  public MeuComponent&#40;String s,Icon icon&#41;&#123;
      super&#40;s&#41;;
      this.icon = icon;
      setToolTipText&#40;s&#41;; // Para registrar no ToolTipManager
  &#125;

  public JToolTip createToolTip&#40;&#41; &#123;
    JToolTip tip = new JToolTip&#40;&#41;&#123;
        public void setTipText&#40;String text&#41;&#123;
                if&#40;icon == null&#41;&#123;
                    super.setTipText&#40;text&#41;;
            &#125;
        &#125;
    &#125;;
    tip.setComponent&#40;this&#41;;
    if&#40;icon != null&#41;&#123;
        tip.setLayout&#40;new BorderLayout&#40;&#41;&#41;;
        tip.add&#40;new JLabel&#40;icon&#41;,BorderLayout.CENTER&#41;;
        tip.setPreferredSize&#40;
                new Dimension&#40;
                        icon.getIconWidth&#40;&#41;,
                        icon.getIconHeight&#40;&#41;&#41;&#41;;
    &#125;
    return tip;
  &#125;
&#125;

Bem por hoje é só !!!

Criado 5 de julho de 2004
Ultima resposta 23 de jul. de 2004
Respostas 4
Participantes 2