ActionListener em jlabel ou célula jtable
-
21-09-2019 - |
Pergunta
Eu tenho um jtable com JLabel[][]
como dados. Agora, quero detectar um clique duas vezes no jlabel ou em uma célula de tabela (mas apenas em uma das colunas). Como posso adicionar uma ação/mouselistener na célula de tabela Jlabel, respectivamente?
Solução
Que tal:
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
JTable target = (JTable)e.getSource();
int row = target.getSelectedRow();
int column = target.getSelectedColumn();
// do some action if appropriate column
}
}
});
Outras dicas
Basicamente, a mesma sugestão que já aceita, exceto:
a) Você deve lidar com o mouse pressionado, não com uma mouse. Um evento com mouseclick só é disparado quando um evento de mouse pressionado e mouserelete é gerado no mesmo local de pixels. Você se o usuário mover o mouse mesmo 1 pixels enquanto clicar duas vezes, não obterá o clique duplo esperado.
b) Além disso, você pode considerar o uso dos métodos ColumnatPoint () e RowAtPoint () para obter a célula clicada. Embora provavelmente não faça a diferença nesse caso, isso importará se você tentar usar um MouseListener para cliques de mouse direito, pois a seleção não é alterada. Portanto, se você adquirir o hábito de usar esse método, não terá problemas no futuro.