Eventos nas Linhas da Tabela

Como posso fazer para executar um evento quando a linha da tabela receber o focus (tem que ser a linha e não a tabela). Pois cada vez que trocar de linha quero que execute uma ação, alguém sabe como posso fazer isso?

Obrigado.

JTable.addMouseListener(new MouseAdapter()
		{
			public void mousePressed(MouseEvent e)
			{
				if (e.getClickCount() == 2)
				{
					Comando a ser executado.				}
			}
		});

[]´s

Só para complementar :

Esse if (e.getClickCount() == 2) pega o clique duplo.

[]´s

O Problema é que não quero ficar preso no mouse, quero a possibilidade de tb executar o evento quando trocar de linha com o teclado. Então poderia usar “jtable.addFocusListener” e utilizar a função antes que o focus for setado, mas mesmo assim não resolve o meu problema pois esse evento vai ser pra tabela como um todo e não apenas as linhas ta tabela como desejo, ou seja quando mudar apenas de linha nenhum evento vai ser executado, pois o focus já vai estar na tabela.

Se tiver alguma outra sugestão.

Obrigado.

Page, a maneira mais rápida é agir quando a seleção na tabela muda, pegar a linha em questão na tabela e executar o que vc quer executar.

No tutorial How to Use Tables, acessível a partir do Javadoc, tem o código do ListSelectionListener abaixo:

table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
...
ListSelectionModel rowSM = table.getSelectionModel();
rowSM.addListSelectionListener(new ListSelectionListener() {
    public void valueChanged(ListSelectionEvent e) {
        //Ignore extra messages.
        if (e.getValueIsAdjusting()) return;
        
        ListSelectionModel lsm =
            (ListSelectionModel)e.getSource();
        if (lsm.isSelectionEmpty()) {
            ...//no rows are selected
        } else {
            int selectedRow = lsm.getMinSelectionIndex();
            ...//selectedRow is selected
        }
    }
});

A primeira linha diz que vc só pode selecionar uma linha de cada vez. Portanto, a primeira linha selecionada (getMinSelectionIndex()) vai sempre ser a única.

É sempre bom saber se o valor ainda está sendo ajustado para não pegar eventos demais.

boa sorte!!

Obrigado dukejeffrie,

Mas já tinha utilizado este método, o problema é que preciso executar um eventoa antes da linha ser selecionada e este método executa apenas depois que a linha foi selecionada, mas valeu pela força.

[]'s

Hmmm…

o problema é que como as linhas são “carimbadas”, vc não tem como adicionar um FocusListener a uma célula ou a uma linha específica.

Vc quer executar um método na linha que vai ser selecionada ou na que perdeu a seleção?

Vc pode criar um ListSelecionListener que mantenha a última linha selecionada: quando vc receber um evento novo, essa variável terá o valor antigo e vc pode executar coisas nessa linha (que acabou de perder a seleção).

Se vc tem seleção múltipla, a coisa complica bastante. Aí é mais fácil usar um Set com Integers e ir adicionando e tirando. Quem saiu do Set perdeu a seleção e vc pode invocar seu método naquelas linhas.

[]s do duke!!

O que desejava é executar uma ação quando a linha vai ser selecionada, mas como não descobri uma maneira de executar esta ação já estou mutando a aplicação para executar de outra forma, mas agradeço a todos pela atenção.

[]'s