[RESOLVIDO]Evento MouseClicked (duplo-click) só ocorre com botão direito do mouse

4 respostas
L

Pessoal,

este código abaixo só é disparado quando executo um duplo-clique com botão direito do mouse. Gostaria que fosse com o botão esquerdo do mouse. Alguém pode ajudar?

private void resultTableMouseClicked(java.awt.event.MouseEvent evt) {
    // Duplo clique
    if (evt.getClickCount() == 2 ) {
      // Captura o ID
      TableModel tm = resultTable.getModel(); 
      int id = Integer.parseInt(tm.getValueAt(resultTable.getSelectedRow(), 0).toString());
      
      // Captura o cliente
      ControllerCustomer controle = new ControllerCustomer();
      controle.cliente = controle.getCustomerById(id);
      
      // Exibe
      JFrameCustomer fraCliente = new JFrameCustomer();
      fraCliente.setCliente(controle.cliente);
      fraCliente.setVisible(true);
      SwingUtils swu = new SwingUtils();
      swu.doCentralizarJFrame(fraCliente);      
    }
  }

4 Respostas

G

Olá leobarbosa,

Você diz só restringir somente ao botão esquerdo ?
table.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {

				if (e.getClickCount() == 2) {
					switch (e.getButton()) {
					case MouseEvent.BUTTON1:
						JOptionPane.showMessageDialog(TableDemo.this,
								"Clicou 2 vezes botao 1");
						break;
					case MouseEvent.BUTTON2:
						JOptionPane.showMessageDialog(TableDemo.this,
								"Clicou 2 vezes botao 2");
						break;
					case MouseEvent.BUTTON3:
						JOptionPane.showMessageDialog(TableDemo.this,
								"Clicou 2 vezes botao 3");
						break;
					default:
						JOptionPane.showMessageDialog(TableDemo.this,
								"Clicou 2 vezes outro botao");
						break;
					}
				}
			}
		});
L

Obrigado Gustavo,

mas o que estou querendo mesmo é descobrir qual a propriedade que não permite a edição da célula, pois aí o ‘double-click’ não é detectado com o botão esquerdo.

??

G

Bom na verdade então você tem que ver o seu TableModel para bloquear as colunas que não vão ter edição, só que assim se precisar ter edição evento do click você tem que colocar na coluna (TableModel) e não na tabela.

Segue um exemplo de bloqueio do tablemodel:

class meuTableModel extends AbstractTableModel { public boolean isCellEditable(int row, int col) { if (col < 2) { return false; } else { return true; } } }

L

Valeu,
obrigado.

Criado 18 de dezembro de 2012
Ultima resposta 19 de dez. de 2012
Respostas 4
Participantes 2