Como adicionar evento mouse click jtable

Olá amigios

necessito de uma ajuda para adicionar um evento do mouse clicked na minha jtable no meu frame de cadastro .

tenho uma classe que cria uma tabela personalizada:

frame de cadastro abaixo:

public ClassInicializaTable tabela = new ClassInicializaTable();

        tabela.addMouseListener(new MouseAdapter() {
            @Override
             public void mouseClicked(MouseEvent e) {
                  JOptionPane.showMessageDialog(null,"Passou aqui !");
             }            
        });

agora no meu frame de cadastro estou tentando adicionar o evento do click do mouse e não está funcionando…

Alguém pode ajudar?

Silvio Guedes

[code]import java.awt.BorderLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;

public class Class1 extends JFrame {

JTable table;

public Class1() {
    this.setLayout(new BorderLayout());
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);

    Object[][] rowsData = new Object[2][2];

    rowsData[0][0] = "josé";
    rowsData[0][1] = "ruela";

    rowsData[1][0] = "maria";
    rowsData[1][1] = "bunita";

    Object[] columns = new Object[2];
    columns[0] = " NOME";
    columns[1] = " SOBRENOME";

    table = new JTable(rowsData, columns);

    table.addMouseListener(new MouseListener() {
                public void mouseClicked(MouseEvent e) {
                    System.out.println("opa");
                }

                public void mousePressed(MouseEvent e) {
                }

                public void mouseReleased(MouseEvent e) {
                }

                public void mouseEntered(MouseEvent e) {
                }

                public void mouseExited(MouseEvent e) {
                }
            });

    JScrollPane scrollPane = new JScrollPane(table);
    table.setFillsViewportHeight(true);


    this.add(scrollPane, BorderLayout.CENTER);

    this.setVisible(true);
    this.pack();

}

public static void main(String[] args) {
    new Class1();
}

}
[/code]

1 curtida

[quote=thiago.correa][code]
table = new JTable(rowsData, columns);

    table.addMouseListener(new MouseListener() {
                public void mouseClicked(MouseEvent e) {
                    System.out.println("opa");
                }

                public void mousePressed(MouseEvent e) {
                }

                public void mouseReleased(MouseEvent e) {
                }

                public void mouseEntered(MouseEvent e) {
                }

                public void mouseExited(MouseEvent e) {
                }
            });

[/code][/quote]

O código dele faz a mesma coisa. Mas usa a classe Adapter invés de ficar com tantos métodos vazios.

@silviogs
ClassInicializaTable é a JTable mesmo?

Olá amigos

lá vai o código completo:

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.sql.ResultSet;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author silvio
 */

public class ClassInicializaTable {
    static  java.sql.Statement stmt;
    static String mnome, macao;
    static Object id;
    public int linhatabela;
    static ResultSet rs;
    public String [] Colunas;
    public int [] TamanhoCol;
    public JTable jTable1 = new JTable();
    public JScrollPane scroller = new JScrollPane(jTable1);
    public DefaultTableModel aModel = new DefaultTableModel();;
    
public void ClassInicializaTable () {
}
    
public void montaTabela(String[] nomeColunas, int [] tamanhoColunas,int [] posicaoTabela) throws Exception {
   String[] tableColumnsName = nomeColunas;        

   DefaultTableModel aModel = new DefaultTableModel(nomeColunas, 0) {

      @Override
      public Class getColumnClass(int column) {
         Class returnValue;
         if ((column >= 0) && (column < getColumnCount())) {
            if (getValueAt(0, column) != null) {
               returnValue = getValueAt(0, column).getClass();
            } else {
              returnValue = Object.class;
            }
         } else {
            returnValue = Object.class;
         }
         return returnValue;
      }

      @Override
      public boolean isCellEditable(int row, int col) {
         return false;
      }
  };
        
 aModel.setColumnIdentifiers(nomeColunas);      
 Colunas = nomeColunas;
 TamanhoCol = tamanhoColunas;
 jTable1.setModel(aModel);  
 scroller.setBounds(posicaoTabela[0], posicaoTabela[1], posicaoTabela[2], posicaoTabela[3]);

}

public void preencheTabela( boolean pesquisa, ResultSet rs,String[] nomeColunas, int [] tamanhoColunas,int [] posicaoTabela, String [] nomeCampos) throws Exception {
    
   String[] tableColumnsName = nomeColunas;        

   DefaultTableModel aModel = new DefaultTableModel(nomeColunas, 0) {

      @Override
      public Class getColumnClass(int column) {
         Class returnValue;
         if ((column >= 0) && (column < getColumnCount())) {
            if (getValueAt(0, column) != null) {
               returnValue = getValueAt(0, column).getClass();
            } else {
              returnValue = Object.class;
            }
         } else {
            returnValue = Object.class;
         }
         return returnValue;
      }

      @Override
      public boolean isCellEditable(int row, int col) {
         return false;
      }

   };



   aModel.setColumnIdentifiers(nomeColunas);      
   Colunas = nomeColunas;
   TamanhoCol = tamanhoColunas;
   jTable1.setModel(aModel);  
   scroller.setBounds(posicaoTabela[0], posicaoTabela[1], posicaoTabela[2], posicaoTabela[3]);

   jTable1.addMouseListener(new MouseAdapter() {
            @Override
   public void mouseClicked(MouseEvent e) {

   }
   });


   if (pesquisa) {    
      int colNo = Colunas.length;
      while(rs.next()){
         Object[] objects = new Object[colNo];
         for(int i = 0; i < colNo; i++) {
            objects[i] = rs.getObject(nomeCampos[i]);
         }   
         aModel.addRow(objects);
      }
      for (int i = 0 ; i < Colunas.length; i ++){
          jTable1.getColumnModel().getColumn(i).setPreferredWidth(tamanhoColunas[i]);
      }
      jTable1.setModel(aModel);   
      jTable1.setFillsViewportHeight(true);
      jTable1.getTableHeader().setReorderingAllowed(false);
   }
}

    void addMouseListener(MouseAdapter mouseAdapter) {
        ;
    }

    void addMouseListener(MouseListener mouseListener) {
     ;
    }


}

código no frame:

        String [] colunasTab = {"Nº Item","Tombamento","Descrição","Data","Setor"};
        int [] tamanhoCol = {5,30,300,10,100,100};
        //int [] posicaoTab = {50,450,600,150};
        int [] posicaoTab = {50,(int) (getHeight - (getHeight * pos+.04 )), poslargura, posaltura};
        String [] nomeCampos = { "item","tombamento","descricao","data","setor"};

        colunasTabela = colunasTab;
        tamanhoColunas = tamanhoCol;
        posicaoTabela = posicaoTab;
        nomeDosCampos = nomeCampos;
        stmt = bd.ConexaoBancoDados.conexao().createStatement();
        String query = "select item, tombamento, descricao, data, setor from patrimonio order by 1";
        ResultSet rs = stmt.executeQuery(query);
        try {
            tabela.preencheTabela(true,rs,colunasTabela, tamanhoColunas, posicaoTabela,nomeDosCampos);
            jPanel2.add(tabela.scroller);
            jPanel2.add(tabela.scroller).setVisible(true);

         } catch (Exception ex) {
             Logger.getLogger(FramePatrimonio.class.getName()).log(Level.SEVERE, null, ex);
        }
        pos1=pos+.04;
        int [] posicao = {30,(int) (getHeight - (getHeight * pos1)),poslargura+40, posaltura+70};
        posicaoPanel = posicao;
        tituloPanel.ClassPanelTitulo("Tabela", posicaoPanel,"1");
        jPanel2.add(tituloPanel.titledBorders);
        stmt.close();
        macao = "A";

//-->> estou tentando aqui adicionar um evento da jtable no meu frame e não na classe que cria a jtable

        tabela.addMouseListener(new MouseListener() {
             public void mouseClicked(MouseEvent e) {
                 System.out.println("opa");
             }

             public void mousePressed(MouseEvent e) {
             }

             public void mouseReleased(MouseEvent e) {
             }

             public void mouseEntered(MouseEvent e) {
             }

             public void mouseExited(MouseEvent e) {
             }
         });

muito obrigado

Silvio Guedes

Voce precisa adicionar esses eventos na tabela.