Id JTable [RESOLVIDO]

2 respostas Resolvido
java
CH97

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);

}

2 Respostas

staroski
Solucao aceita

O seu ep.get(0) sempre pega o elemento na posição 0 que é a primeira posição.
Você pode pegar o getSelectedIndex() para obter a posição da linha selecionada do seu objeto JTable, só presta atenção pois quando não há nada selecionado, ele retorna -1.

CH97
Valeu ai <a class="mention" href="/u/staroski">@staroski</a> iluminou bem as ideias kkkk

Era isso mesmo

int row = tblEmp.getSelectedRow();

vaid = ep.get(row).getEp_id();

System.out.println(vaid);

Agora  vou implementar controles para passar valores nulos.

Valeu
Criado 31 de maio de 2019
Ultima resposta 31 de mai. de 2019
Respostas 2
Participantes 2