Neste artigo, veremos
como personalizar os "hints" mostrados por nossos componentes Java,
tipicamente os botões (JButton). Para se adicionar uma dica (ou
"hint") a um botão no Java, sabemos que devemos usar o método
setToolTipText() da classe JButton.
O que alguns
programadores não sabem é que esse hint pode ser bastante personalizável,
utilizando para isto a classe javax.swing.ToolTipManager em combinação com uma
String que seja um trecho de HTML comum. Veremos a seguir como funciona.
Para ajustar o tempo
que o hint demorará para surgir ao pararmos o cursor do mouse sobre um botão,
usamos o seguinte formato de código:
...
// Demora 1/2 segundo
para surgir
ToolTipManager.sharedInstance().setInitialDelay(500);
...
No código acima, o
hint aparecerá logo que passe 0,5 segundos. O parâmetro do método é o tempo
desejado em milissegundos, daí o uso de 500.
Para fazer o hint
demorar a desaparecer, usamos o seguinte código:
...
// Demora 8 segundos
para desaparecer
ToolTipManager.sharedInstance().setDismissDelay(8000);
...
Neste caso, o
parâmetro é 8000, ou seja, 8000 milissegundos, o que dá 8 segundos. Simples,
não?
Agora vamos ao
melhor. É possível passar como parâmetro para o setToolTipText() qualquer
String, e se essa String representar um código HTML, ela assim será formatada.
Isso nos permite usar fontes diferentes, quebras de linha, etc, tudo na mesma
dica que surge. Vamos ver um exemplo para melhorar:
...
// Inicia o HTML do
hint
String hint =
"<HTML><FONT FACE=\"Tahoma\"
SIZE=\"-2\">";
...
String desc = ... //
Obter de algum lugar, como uma base de dados
String timeStr = ...
// Obter de algum lugar, como uma base de dados
...
hint +=
"<B>" + timeStr + "</B><BR>" + desc +
"<BR>";
...
// Fecha o HTML do
hint
hint +=
"</FONT></HTML>";
...
// Configura o hint
dayButtons[j].setToolTipText(hint);
// dayButtons[j] é um objeto JButton
...
Pronto!! Nós
iniciamos a String hint com o início de um código HTML e definimos o tipo de
fonte e tamanho a serem usados. Depois, no nosso exemplo, obtemos 2 variáveis,
uma para a hora e outra para uma descrição. Então vamos adicionando à variável
hint trechos de HTML, como em hint += "<B>" + timeStr +
"</B><BR>" + desc + "<BR>"; assim a hora
aparecerá em negrito (uso das tags <B></B>), haverá uma quebra de
linha (tag <BR>) e finalmente a descrição. Podemos fazer isso várias
vezes, como dentro de um laço for, por exemplo. Ao final, fechamos o HTML
usando hint += "</FONT></HTML>"; o último passo é
simplesmente usar toda essa String para parâmetro do método setToolTipText. O
hint ficará como o mostrado na figura lá de cima, por ex (esta GUI é um calendário de tarefas
que criei):
Agora, bons códigos a
todos!