ToolTip com Imagem

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:

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+

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.

Oi

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

T+

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:

[code]public class MeuComponente extends JButton{

private Icon icon;

public MeuComponent(String s,Icon icon){
super(s);
this.icon = icon;
setToolTipText(s); // Para registrar no ToolTipManager
}

public JToolTip createToolTip() {
JToolTip tip = new JToolTip(){
public void setTipText(String text){
if(icon == null){
super.setTipText(text);
}
}
};
tip.setComponent(this);
if(icon != null){
tip.setLayout(new BorderLayout());
tip.add(new JLabel(icon),BorderLayout.CENTER);
tip.setPreferredSize(
new Dimension(
icon.getIconWidth(),
icon.getIconHeight()));
}
return tip;
}
}[/code]

Bem por hoje é só !!!