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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top