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.
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
HeberPJ
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
jeveauxPJ
Oi
Heber, então a coisa é mais embixao hein… Assim eu não sei não…
T+
H
HeberPJ
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:
publicclassMeuComponenteextendsJButton{privateIconicon;publicMeuComponent(String s,Icon icon){super(s);this.icon=icon;setToolTipText(s); // Para registrar no ToolTipManager}publicJToolTipcreateToolTip() {JToolTiptip=newJToolTip(){publicvoidsetTipText(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(newDimension(icon.getIconWidth(),icon.getIconHeight()));}returntip;}}