Tenho uma JTable em que eu não mostro o ID da linha, então assim que eu ativasse o evento MouseClicked ela deveria me retorna o id da linha me questão da tabela. Contudo, sempre que eu clico nela ela somente me retorna o ID da primeira linha. Segue códigos.
Classe - EpPrin
public class EpPrin {
private int ep_id;
private String ep_num;
private String ep_data;
private double ep_valorLibe;
private int ep_nPar;
private String ep_dataVen;
private String ep_dest;
private CEFClientes ep_id_cli;
private CEFBancos ep_id_banco;
private double re_saldo;
public double getRe_saldo() {
return re_saldo;
}
public void setRe_saldo(double re_saldo) {
this.re_saldo = re_saldo;
}
public CEFClientes getEp_id_cli() {
return ep_id_cli;
}
public void setEp_id_cli(CEFClientes ep_id_cli) {
this.ep_id_cli = ep_id_cli;
}
public CEFBancos getEp_id_banco() {
return ep_id_banco;
}
public void setEp_id_banco(CEFBancos ep_id_banco) {
this.ep_id_banco = ep_id_banco;
}
public int getEp_id() {
return ep_id;
}
public void setEp_id(int ep_id) {
this.ep_id = ep_id;
}
public String getEp_num() {
return ep_num;
}
public void setEp_num(String ep_num) {
this.ep_num = ep_num;
}
public String getEp_data() {
return ep_data;
}
public void setEp_data(String ep_data) {
this.ep_data = ep_data;
}
public double getEp_valorLibe() {
return ep_valorLibe;
}
public void setEp_valorLibe(double ep_valorLibe) {
this.ep_valorLibe = ep_valorLibe;
}
public int getEp_nPar() {
return ep_nPar;
}
public void setEp_nPar(int ep_nPar) {
this.ep_nPar = ep_nPar;
}
public String getEp_dataVen() {
return ep_dataVen;
}
public void setEp_dataVen(String ep_dataVen) {
this.ep_dataVen = ep_dataVen;
}
public String getEp_dest() {
return ep_dest;
}
public void setEp_dest(String ep_dest) {
this.ep_dest = ep_dest;
}
public int size() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
public Object get(int i) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
CLASSE DAO - EpPrinDAO
public ArrayList ResumoEmp(int idCli, int idBc)throws Exception{
ArrayList resumo = new ArrayList <> ();
String sql = " select p.ep_numero,p.ep_dtLibe,p.ep_valorLibe,r.re_saldo,p.ep_id,r.re_id,r.re_id_epId,p.ep_id_cli,p.ep_id_banco,c.id_prot,bc.b_id\n" +
" from ResumoEmp r\n" +
" inner join EmprestimoPrincipal p on r.re_id_epId = p.ep_id\n" +
" inner join Clientes c on p.ep_id_cli = c.id_prot"+
" inner join Bancos bc on p.ep_id_banco = bc.b_id where c.id_prot = ? and bc.b_id = ? ";
try{
pst = conexao.prepareStatement(sql);
pst.setInt(1, idCli);
pst.setInt(2, idBc);
rs = pst.executeQuery();
while(rs.next()){
EpPrin ep = new EpPrin();
EpResumo epr = new EpResumo();
ep.setEp_num(rs.getString(1));
ep.setEp_data(rs.getString(2));
ep.setEp_valorLibe(rs.getDouble(3));
ep.setRe_saldo(rs.getDouble(4));
ep.setEp_id(rs.getInt(5));
epr.setRe_id_Emp(ep);
resumo.add(ep);
}
return resumo;
}catch(SQLException e){
JOptionPane.showMessageDialog(null,“Erro ao buscar Cliente”+e);
}finally{
try{
conexao.close();
}catch(SQLException e){
JOptionPane.showMessageDialog(null,"Erro ao fechar a conexão Messagem: "+e.getMessage());
}
}
return resumo;
}
Classe Model - EmpResModel
public class EmpResModel extends AbstractTableModel{
private List prin;
public EmpResModel(Listprin){
this.prin = new ArrayList(prin);
}
@Override
public int getRowCount() {
return prin.size();
}
@Override
public int getColumnCount() {
return 4;
}
@Override
public String getColumnName(int numCol){
switch(numCol){
case 0:
return "Nº";
case 1:
return "Data Liberação";
case 2:
return "Valor Liberado";
case 3:
return "Saldo Atual";
default:
return null;
}
}
<a class="mention" href="/u/override">@Override</a>
public Object getValueAt(int rowIndex, int columnIndex) {
EpPrin ep = prin.get(rowIndex);
switch(columnIndex){
case 0:
return ep.getEp_num();
case 1:
return ep.getEp_data();
case 2:
return ep.getEp_valorLibe();
case 3:
return ep.getRe_saldo();
default:
return null;
}
}
}
JFRAME - TelaEpResumo
//aqui eu ativo esse método através do botão pesquisar
private void pesquisar(){
NumberFormat numero = NumberFormat.getNumberInstance();
numero.setMinimumFractionDigits(2);
DefaultTableCellRenderer cellRendererCustom = new RenderCustomize(numero);
DefaultTableCellRenderer cellRender = new DefaultTableCellRenderer();
cellRender.setHorizontalAlignment(SwingConstants.CENTER);
CEFBancos bc = (CEFBancos)cbbanco.getSelectedItem();
CEFClientes cl = (CEFClientes)cbCli.getSelectedItem();
try {
ep = new EpPrinDAO().ResumoEmp(cl.getIdPro(), bc.getId_banco());
} catch (Exception ex) {
Logger.getLogger(TelaEpResumo.class.getName()).log(Level.SEVERE, null, ex);
}
EmpResModel ummodel = new EmpResModel(ep);
tblEmp.setModel(ummodel);
JTableHeader header = tblEmp.getTableHeader();
header.setFont(getFont().deriveFont(Font.BOLD));
DefaultTableCellRenderer centralizado = (DefaultTableCellRenderer) header.getDefaultRenderer();
centralizado.setHorizontalAlignment(SwingConstants.CENTER);
tblEmp.getColumnModel().getColumn(0).setCellRenderer(cellRender);
tblEmp.getColumnModel().getColumn(1).setCellRenderer(cellRender);
tblEmp.getColumnModel().getColumn(2).setCellRenderer(cellRendererCustom);
tblEmp.getColumnModel().getColumn(3).setCellRenderer(cellRendererCustom);
}
//aqui utilizo o metodo MouseClicked para pegar o ID
int vaid;
private void tblEmpMouseClicked(java.awt.event.MouseEvent evt) {
vaid = ep.get(0).getEp_id();
System.out.println(vaid);
}