[Dúvida] Tooltips em linhas da JTable! [RESOLVIDO]

3 respostas
Nicolas_Fernandes

Olá, galerinha do GUJ!
Tudo bem?

Estou com uma dúvida aqui:
Eu tenho uma JTable na tela. No entanto, há linhas que não cabem e, por isso, ficam com as reticências no final da frase (por exemplo, ‘O ratou roeu a ro…’, quando a frase completa é ‘O rato roeu a roupa do Rei de Roma.’).
Enfim, eu gostaria que, quando o usuário passar o mouse sobre uma linha na JTable que esteja da maneira explicitada acima, apareça uma Tooltip com o texto completo daquela linha.

Eu criei um MouseListener para a Table:

MouseListener mouse = new MouseListener()
{
    public void mouseClicked(MouseEvent e) 
    {
        TableArquivo.setToolTipText(ArquivoTableModel.getLinha(
            TableArquivo.getSelectedRow()).getLegenda());
    }

    public void mousePressed(MouseEvent e) {}
    public void mouseReleased(MouseEvent e) {}
    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}
}

TableArquivo.addMouseListener( mouse );

Atualmente tá assim, mas ele só aparece quando eu clico. Se coloco o código no evento mouseEntenred, não funciona, pois eu preciso da linha que o usuário tá com o mouse em cima.
Alguma ideia?

Valeu, galera! :]

3 Respostas

Eric_Yuzo

Faça isso pelo renderer. Aqui tem uma ideia: http://www.guj.com.br/java/91291-tooltiptext-em-cada-celula-do-jtable-facil-.

Nicolas_Fernandes

Valeu, Eric!
Só tava faltando isso para completar meu Renderer!

Abração!

thiagoarreguy

Uma outra postagem no forum indicado na primeira postagem, funciona perfeitamente…

Alguem sabe qual é melhor ? Diferenca de performace ?

Esta opção é bem mais facil de implementar, pelo menos para inciantes em java =)

JTable table - new JTable();
table.addMouseMotionListener(new MouseMotionAdapter(){
   public void mouseMoved(MouseEvent e){
        Point p = e.getPoint(); 
        int row = table.rowAtPoint(p);
        int column = table.columnAtPoint(p);
        table.setToolTipText(String.valueOf(table.getValue(row,column)));
    }//end MouseMoved
}; // end MouseMotionAdapter
Criado 14 de janeiro de 2011
Ultima resposta 5 de jan. de 2012
Respostas 3
Participantes 3