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.
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