Como ter o tooltiptext em todas as células de uma JTable? [RESOLVIDO]

8 respostas
vini.roggia

Boa tarde,

Estou com seguinte problema:

Tenho uma JTable que pega valores de um banco de dados, este JTable tem N linha e 9 colunas.
Uso NetBeans 6.5 e vi algo como Renderer, acredito que possa ajudar na minha dúvida, mas não sei NADA sobre renderizadores e tals.

Gostaria de saber como fazer aparecer tooltiptext em todas as células da JTable, cada tooltip pegando o valor da sua célula, e como
fazer tooltiptext por exemplo de todas as linhas de certas colunas.
Pois como citado acima tenho uma JTable de N linhas e 9 colunas e tem duas colunas que tem valores muito grandes(Strings grandes)
não cabendo assim na tela(no tamanho de largura que especifiquei para a coluna).

Como poderia resolver este problema? Por acaso existe alguma forma “Fácil” através do NetBeans?

8 Respostas

M

com o render voce poderá fazer isto… ele retorna um componente, e neste voce colocaria o tooltip de acordo como voce queria…

dentro do método getTableCellRendererComponent, terá os parametros de linhas e colunas, e por eles voce podera definir onde aparecera ou não os tooltips…

vlw

vini.roggia

Você poderia me ajudar com este tal de RENDERER ou saberia onde posso aprender sobre este?

M

eu sempre crio uma classe extendida de um jTable, dai dentro dela eu crio uma classe interna extendida do DefaultTableCellRenderer, dai voce tera que implementar dentro dela o metodo getTableCellRendererComponent, que será o método que voce adicionara os toolTips no componente, dai para adicionar o renderer na tabela voce pode fazer assim dentro do contrutor da tabela:

getColumnModel().getColumn( numeroDaColunaDesejada ).setCellRenderer( new RendererCriado() );
M

Exemplo, voce poderia criar o renderer dentro da sua tabela assim:

class RendererOfTable extends DefaultTableCellRenderer
    {
        @Override
        public Component getTableCellRendererComponent( JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column )
        {
            JTextField tf = new JTextField( value.toString() );
            tf.setOpaque( true );
            tf.setForeground( Color.BLACK );
            
            tf.setToolTipText( value.toString() );
            
            return tf;
        }
    }
vini.roggia

O problema é que a JTable é criada pelo NetBeans, onde que eu colocaria então este código?

M

Voce poderia criar aquela classe do renderer, dai adicionar na tabela assim:

jTableCriado.getColumnModel().getColumn( numeroDaColunaDesejada ).setCellRenderer(  new RendererCriado()  );

isto dentro do contrutor da classe que voce esta usando o jTable…

entendeu?

vini.roggia

Vou testar miguel, logo que eu tiver uma resposta de aviso se entendi certo.

Obrigadão mesmo.

vini.roggia

Funciounou perfeitamente :wink:

Criado 12 de junho de 2009
Ultima resposta 18 de jun. de 2009
Respostas 8
Participantes 2