Adicionar linha no jTable e na coluna idLinha inserir numero da linha

Pessoal, boa tarde!!!

estou com uma dúvida que acho ser simples porém não estou conseguindo fazer funcionar, seguinte…

Tenho um TableModel próprio e um jTable, quero clicar no botão addLinha, criar uma linha na minha jTable e na coluna idlinha ir numerando conforme eu vou clicando no botão addLinha, como abaixo…

idlinha | usuario | telefone
1         | teste     | 123
2         | teste2   | 456

seguem abaixo os meus cógidos.

// Modelo usuario

package modelo;

public class UsuarioMod {
    
    int idlinha;
    String usuario;
    String Telefone;
    
    public UsuarioMod (){}

        public UsuarioMod (int idlinha, String usuario, String Telefone) {
            this.idlinha = idlinha;
            this.usuario = usuario;
            this.Telefone = Telefone;
        }

        public int getidlinha() {
            return idlinha;
        }

        public void setidlinha(int idlinha) {
            this.idlinha = idlinha;
        }

        public String getUsuario() {
            return usuario;
        }

        public void setUsuario(String usuario) {
            this.usuario = usuario;
        }

        public String getTelefone() {
            return Telefone;
        }

        public void setTelefone(String Telefone) {
            this.Telefone = Telefone;
        }
    }

//______________________________________________________________________

//Modelo Table Model

package modelo;

import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;

public class JTableMod extends AbstractTableModel{
    
    private List<UsuarioMod> dados = new ArrayList<>();
    private String[] colunas = {"ID Usuario","Usuario","Telefone"};
//------------------------------------------------------------------------------
    @Override   
    public int getRowCount() {
        return dados.size();
    }   //Pega as colunas
//------------------------------------------------------------------------------
    @Override   
    public int getColumnCount() { 
        return colunas.length;
    }   //Pega as linhas
 //-----------------------------------------------------------------------------
    @Override   
    public String getColumnName(int nomeColunas) { 
        return colunas[nomeColunas];
    }   //Pega os nomes das colunas
//------------------------------------------------------------------------------
    @Override   
    public Object getValueAt(int linha, int coluna) {   
        
        switch(coluna){
            case 0:
                return dados.get(linha).getidlinha();
            case 1:
                return dados.get(linha).getUsuario();
            case 2:
                return dados.get(linha).getTelefone();
        }
        return null;
    }   //Pega os Valores
//------------------------------------------------------------------------------
    @Override
    public void setValueAt(Object valor, int linha, int coluna) {   
        switch(coluna){
            case 0:
                dados.get(linha).setidlinha(Integer.parseInt((String) valor));
                break;
            case 1:
                dados.get(linha).setUsuario((String) valor);
                break;
            case 2:
                dados.get(linha).setTelefone((String) valor);
                break;
        }
        this.fireTableRowsUpdated(linha, linha);
    }   //Atualiza as linhas na view
//------------------------------------------------------------------------------
    @Override
    public boolean isCellEditable(int linha, int coluna) {
        return coluna != 0;
    }   //Controla a edição dos campos
    //--------------------------------------------------------------------------
    public void addRow(UsuarioMod tMod){  
        this.dados.add(tMod);
        this.fireTableDataChanged();
    }   //Adiciona as linhas na view
//------------------------------------------------------------------------------ 
    
    public void removeRow(int linha){   
        this.dados.remove(linha);
        this.fireTableRowsDeleted(linha, linha);
    }   //Remove as linhas na view
//------------------------------------------------------------------------------
    public void add(UsuarioMod testeMod) {
	this.dados.add(testeMod);
	fireTableDataChanged();
	}
	
    public void addAll(List<UsuarioMod> dados) {
	this.dados.addAll(dados);
	fireTableDataChanged();
	}

    public List<UsuarioMod> getDados() {
	return dados;
	}
}

//_____________________________________________________________________
agradeço desde ja a ajuda de todos…

Parece que tu já implementou algo para isso. Não funcionou?

Oi Lucas, valew pela ajuda vou tentar implementar, não eu pesquisei bastante mais ainda não tinha questionado sobre isso. Valew

pessoal infelizmente não consegui fazer funcionar, estou pesquisando a dias e não encontro nada, para resumir eu quero clicar num botão, adicionar uma linha na jTable, até ai tudo bem, após isso eu quero que conforme as linhas vão sendo adicionadas na 1º coluna aconteça um tipo de auto incremento, quando eu incluir a 1º linha apareça 1 na coluna 1, ai quando eu incluir outra linha clicando no botão, apareça outra linha com o número 2 e assim por diante, desculpe se não estou sendo muito claro, quem puder me ajudar eu agradeço, exemplo abaixo…

idlinha|nome
1 | teste
2 | teste2
3 | teste3
e etc…

Se o objetivo é apenas para apresentar na tabela, vc pode tentar assim:


  • Remova o idlinha da classe UsuarioMod. Se é só para apresentar na tabela, não precisa ter esse atributo na classe UsuarioMod.
package modelo;

public class UsuarioMod {
    
	String usuario;
	String telefone;

	public UsuarioMod (){}

	public UsuarioMod(String usuario, String telefone) {
		this.usuario = usuario;
		this.telefone = Telefone;
	}
	
	public String getUsuario() {
		return usuario;
	}

	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}

	public String getTelefone() {
		return telefone;
	}

	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}
}

  • No tableModel, adicione a definição da coluna para o idLinha.
private String[] colunas = {"ID Linha", "Usuario", "Telefone"};

  • Ainda na tableModel, altere o getValueAt para retornar o número da linha + 1, para a coluna 0 (zero), ou seja, para a primeira coluna.
@Override   
public Object getValueAt(int linha, int coluna) {   
	switch(coluna) {
	case 0:
		return (linha + 1);
	case 1:
		return dados.get(linha).getUsuario();
	case 2:
		return dados.get(linha).getTelefone();
	}
	
	return null;
}

Fazendo assim, vai funcionar.

kkkkk ,meu DEUS. lucas, numa boa amigo eu te agradeço do coração, Deus abençoe.
confesso que me senti um burro agora veio, mais eu vou estudar mais e mais porque olha, se soubesse o tempo que eu perdi com isso, valew mesmo, deu certo

1 curtida