ToolTip para cada linha da JTable ? [RESOLVIDO]

2 respostas
PadrE

Eae galera…

Eh o seguinte… ja vi que não tem um tooltip para a linha de uma jtable… queria saber se alguem ja fez isso e poderia me apontar o caminho nas pedras…
A ideia aki eh que o usuário tenha uma breve descrição do registro assim q passar o mouse por cima da linha. Dessa forma ele saberá onde clicar antes de abrir o item.
Tentei fazer isso colocando campos chave na tabela… mas um dos campos eh uma descrição, ou seja, um texto longo q nao da para por na celula… por isso a ideia de exibi-lo ao passar o mouse.

Vou tentar aki algo como exibir um Frame, no rodape e tals… mas o problema eh pegar o evento do mouse sobre as linhas… eh possivel ?

Vlw !!!

2 Respostas

T

http://www.devx.com/tips/Tip/14532

PadrE

Show de bola.. era isso mesmo...
Como o site tem uns caracteres malucos no mei do texto, e deu um pequeno trabalho limpar.. ai vai o código do artigo:

import java.awt.Component;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTable;


public class JTableToolTipText extends JFrame {

	public static void main(String[] args) {
		JTableToolTipText frame = new JTableToolTipText();
		frame.setSize(400,200);
		frame.setVisible(true);
	}
	
	public JTableToolTipText() {
		super("Tips in a JTable");
		
		Object[] columnNames = {"Name","Tax Id", "Message"};
		Object[][] rowData = {
				{"Mary Lamb","122333434","Here is a message."},
				{"Roger Smith","777444333","Here is a longer message"},
				{"Bill Johnson","747353421","Here is an even longer message."}		
		};

		JTable table = new JTable(rowData, columnNames) {
			public String getToolTipText(java.awt.event.MouseEvent evt) {
				if ( ! ((Component)evt.getSource()).isVisible() )
					return null;
				int r = rowAtPoint(evt.getPoint());
				int c = columnAtPoint(evt.getPoint());
				if (r >= 0 && c == 2)
					return (String) getModel().getValueAt(r, c);
				return null;
			}
		};

		((JPanel)getContentPane()).add(table);
	}
}
Criado 16 de março de 2009
Ultima resposta 18 de mar. de 2009
Respostas 2
Participantes 2