Alterar conteúdo jTable

Tenho dados salvos em uma jTable através de um arquivo txt, criei um botão alterar e quero que quando eu selecione a linha da jTable e clique em “alterar” ele pegue os dados da linha selecionada e insira os dados da linha nos seus respectivos jTextField para que eu possa editar e clicar no botão “gravar” para substituis o antigo. Não sei como pegar os dados da linha selecionada da jTable e joga-los nos seus respectivos campos jTextField.

Você não pega os dados do arquivo txt e já os coloca na jtable. Provavelmente você possui um table model por trás disso.
Então, se você usa DefaultTableModel, esquece isso já e muda para o teu próprio abstract table model.
Aí sim, você consegue criar um método para permitir edição de dados.

2 curtidas

Para recuperar os dados basta dar um getValueAt, e manipular o valor, porém vale ressaltar que se está usando DefaultTableModel você vai ter que tratar muitas coisas desnecessárias que não precisaria fazer utilizando uma AbstractTableModel.

Exemplo de recuperação de valor praticada com DefaultTableModel:

String algumaString;

algumaString = suaJtable.getValueAt(suaJtable.getSelectedRow(), numeroDaColunaDesejada).toString();
1 curtida

Estou ainda no botão “editar”, não sei como continuar…
Meu código JFrameCadastroClientes:

package Apresentação;

import Modelos.Pessoas;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

public class JFrameCadastroClientes extends javax.swing.JFrame {

public JFrameCadastroClientes() {
    initComponents();
    this.carregar();
}

private void excluir() throws IOException {

    int resposta = JOptionPane.showConfirmDialog(null, "Deseja realmente excluir?", "Confirmar", JOptionPane.YES_NO_OPTION);

    if (resposta == JOptionPane.YES_OPTION) {

        if (jTableCadastroClientes.getModel().getRowCount() == 0) {
            JOptionPane.showMessageDialog(null, "Não existem mais registros para serem excluídos");
            return;
        } else {
            ((DefaultTableModel) jTableCadastroClientes.getModel()).removeRow(jTableCadastroClientes.getSelectedRow());

        }

        new File("Pessoas.txt").delete();
        DefaultTableModel dadosClientes = (DefaultTableModel) jTableCadastroClientes.getModel();

        for (int index = 0; index < dadosClientes.getRowCount(); index++) {

            Pessoas pessoas = new Pessoas();
            pessoas.setNome(dadosClientes.getValueAt(index, 0).toString());
            pessoas.setSexo(dadosClientes.getValueAt(index, 1).toString());
            pessoas.setIdade(dadosClientes.getValueAt(index, 2).toString());
            pessoas.Salvar();

        }

    } else if (resposta == JOptionPane.NO_OPTION) {
        return;
    }

    carregar();
}

public void carregar() {

    Pessoas pessoas = new Pessoas();

    DefaultTableModel val = (DefaultTableModel) jTableCadastroClientes.getModel();
    while (val.getRowCount() > 0) {
        val.removeRow(0);
    }
    List<Pessoas> cadastros = pessoas.carregar();
    cadastros.stream().forEach((pessoa) -> {
        val.addRow(new String[]{pessoa.getNome(), pessoa.getSexo(), pessoa.getIdade()});
    });

}

private void gravar() {
    Pessoas pessoas = new Pessoas();
    pessoas.setNome(jTextFieldNome.getText().trim());
    pessoas.setSexo(jTextFieldSexo.getText().trim());
    pessoas.setIdade(jTextFieldIdade.getText().trim());
    if ("".equals(jTextFieldNome.getText().trim())) {

        JOptionPane.showMessageDialog(null, "Digite o nome");
        jTextFieldNome.requestFocus();

    } else if ("".equals(jTextFieldSexo.getText().trim())) {

        JOptionPane.showMessageDialog(null, "Digite o Sexo");
        jTextFieldSexo.requestFocus();

    } else if ("".equals(jTextFieldIdade.getText().trim())) {

        JOptionPane.showMessageDialog(null, "Digite a Idade");
        jTextFieldIdade.requestFocus();

    } else {
        JOptionPane.showMessageDialog(null, pessoas.Salvar());
        this.carregar();
        jTextFieldNome.setText("");
        jTextFieldSexo.setText("");
        jTextFieldIdade.setText("");

        jTextFieldNome.requestFocus();
    }
}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    jTextFieldIdade = new javax.swing.JTextField();
    jButtonExcluir = new javax.swing.JButton();
    jButtonGravar = new javax.swing.JButton();
    jTextFieldPessoas = new javax.swing.JTextField();
    jButtonPesquisar = new javax.swing.JButton();
    jScrollPaneCadastroPessoas = new javax.swing.JScrollPane();
    jTableCadastroClientes = new javax.swing.JTable();
    jLabelNome = new javax.swing.JLabel();
    jLabelSexo = new javax.swing.JLabel();
    jLabelIdade = new javax.swing.JLabel();
    jTextFieldNome = new javax.swing.JTextField();
    jTextFieldSexo = new javax.swing.JTextField();
    jButtonEditar = new javax.swing.JButton();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    jTextFieldIdade.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N

    jButtonExcluir.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
    jButtonExcluir.setText("Excluir");
    jButtonExcluir.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButtonExcluirActionPerformed(evt);
        }
    });

    jButtonGravar.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
    jButtonGravar.setText("Gravar");
    jButtonGravar.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButtonGravarActionPerformed(evt);
        }
    });

    jTextFieldPessoas.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N

    jButtonPesquisar.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
    jButtonPesquisar.setText("Pesquisar");
    jButtonPesquisar.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButtonPesquisarActionPerformed(evt);
        }
    });

    jTableCadastroClientes.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
    jTableCadastroClientes.setModel(new javax.swing.table.DefaultTableModel(
        new Object [][] {

        },
        new String [] {
            "Nome", "Sexo", "Idade"
        }
    ) {
        Class[] types = new Class [] {
            java.lang.String.class, java.lang.String.class, java.lang.String.class
        };

        public Class getColumnClass(int columnIndex) {
            return types [columnIndex];
        }
    });
    jScrollPaneCadastroPessoas.setViewportView(jTableCadastroClientes);

    jLabelNome.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
    jLabelNome.setText("Nome : ");

    jLabelSexo.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
    jLabelSexo.setText("Sexo : ");

    jLabelIdade.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
    jLabelIdade.setText("Idade : ");

    jTextFieldNome.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N

    jTextFieldSexo.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N

    jButtonEditar.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
    jButtonEditar.setText("Editar");
    jButtonEditar.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButtonEditarActionPerformed(evt);
        }
    });

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addGap(12, 12, 12)
                        .addComponent(jLabelIdade, javax.swing.GroupLayout.PREFERRED_SIZE, 54, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(557, 557, 557))
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addComponent(jButtonEditar, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jButtonExcluir, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 79, Short.MAX_VALUE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jButtonGravar)))
                .addGroup(layout.createSequentialGroup()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                        .addComponent(jTextFieldPessoas, javax.swing.GroupLayout.PREFERRED_SIZE, 506, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGroup(layout.createSequentialGroup()
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                .addComponent(jLabelNome, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addComponent(jLabelSexo, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(jTextFieldNome)
                                .addGroup(layout.createSequentialGroup()
                                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                        .addComponent(jTextFieldIdade, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addComponent(jTextFieldSexo, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE))
                                    .addGap(0, 0, Short.MAX_VALUE)))))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(jButtonPesquisar)))
            .addGap(0, 23, Short.MAX_VALUE))
        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
            .addGap(0, 0, Short.MAX_VALUE)
            .addComponent(jScrollPaneCadastroPessoas, javax.swing.GroupLayout.PREFERRED_SIZE, 430, javax.swing.GroupLayout.PREFERRED_SIZE))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(jTextFieldPessoas, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jButtonPesquisar))
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(jLabelNome)
                .addComponent(jTextFieldNome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jLabelSexo)
                        .addComponent(jTextFieldSexo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jLabelIdade)
                        .addComponent(jTextFieldIdade, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jButtonExcluir)
                        .addComponent(jButtonGravar))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(jButtonEditar)
                    .addContainerGap(130, Short.MAX_VALUE))
                .addComponent(jScrollPaneCadastroPessoas, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)))
    );

    pack();
}// </editor-fold>                        

private void jButtonExcluirActionPerformed(java.awt.event.ActionEvent evt) {                                               

    try {
        this.excluir();
    } catch (IOException ex) {
        Logger.getLogger(JFrameCadastroClientes.class.getName()).log(Level.SEVERE, null, ex);
    }

}                                              

private void jButtonGravarActionPerformed(java.awt.event.ActionEvent evt) {                                              

    this.gravar();

}                                             

private void jButtonPesquisarActionPerformed(java.awt.event.ActionEvent evt) {                                                 

}                                                

private void jButtonEditarActionPerformed(java.awt.event.ActionEvent evt) {                                              
    int linhaSelecionada = jTableCadastroClientes.getSelectedRow();

    if (linhaSelecionada >= 0) {

        jTextFieldNome.setText(jTableCadastroClientes.getValueAt(linhaSelecionada, 0).toString());
        jTextFieldSexo.setText(jTableCadastroClientes.getValueAt(linhaSelecionada, 1).toString());
        jTextFieldIdade.setText(jTableCadastroClientes.getValueAt(linhaSelecionada, 2).toString());
        
        ((DefaultTableModel) jTableCadastroClientes.getModel()).removeRow(jTableCadastroClientes.getSelectedRow());
        new File("Pessoas.txt").delete();

    }

}                                             

public static void main(String args[]) {
    
    try {
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }
    } catch (ClassNotFoundException ex) {
        java.util.logging.Logger.getLogger(JFrameCadastroClientes.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(JFrameCadastroClientes.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(JFrameCadastroClientes.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(JFrameCadastroClientes.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }

    java.awt.EventQueue.invokeLater(() -> {
        new JFrameCadastroClientes().setVisible(true);
    });
    
    
}

// Variables declaration - do not modify                     
private javax.swing.JButton jButtonEditar;
private javax.swing.JButton jButtonExcluir;
private javax.swing.JButton jButtonGravar;
private javax.swing.JButton jButtonPesquisar;
private javax.swing.JLabel jLabelIdade;
private javax.swing.JLabel jLabelNome;
private javax.swing.JLabel jLabelSexo;
private javax.swing.JScrollPane jScrollPaneCadastroPessoas;
private javax.swing.JTable jTableCadastroClientes;
private javax.swing.JTextField jTextFieldIdade;
private javax.swing.JTextField jTextFieldNome;
private javax.swing.JTextField jTextFieldPessoas;
private javax.swing.JTextField jTextFieldSexo;
// End of variables declaration                   

}

Meu código Class Pessoas.java:

package Modelos;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Pessoas {

private String nome;
private String sexo;
private String idade;

public String getNome() {
    return nome;
}

public void setNome(String nome) {
    this.nome = nome;
}

public String getSexo() {
    return sexo;
}

public void setSexo(String sexo) {
    this.sexo = sexo;
}

public String getIdade() {
    return idade;
}

public void setIdade(String idade) {
    this.idade = idade;
}

public List<Pessoas> carregar() {
    List<Pessoas> lista = new ArrayList<>();
    File file = new File("Pessoas.txt");
    if (file.exists()) {

        try {
            FileReader fileReader = new FileReader("Pessoas.txt");
            BufferedReader bw = new BufferedReader(fileReader);
            String linha;
            while ((linha = bw.readLine()) != null) {
                Pessoas pessoa = new Pessoas();
                String[] dados = linha.split(";");
                pessoa.setNome(dados[0]);
                pessoa.setSexo(dados[1]);
                pessoa.setIdade(dados[2]);

                lista.add(pessoa);
            }
            bw.close();

        } catch (Exception error) {
            Logger.getLogger(Pessoas.class.getName()).log(Level.SEVERE, null, error);
        }
    }
    return lista;

}

public String Salvar() {

    try {
        FileWriter fw = new FileWriter("Pessoas.txt", true);
        PrintWriter pw = new PrintWriter(fw);
        String pessoa = this.nome + ";" + this.sexo + ";" + this.idade;
        pw.println(pessoa);
        pw.flush();
        pw.close();
        fw.close();

    } catch (IOException ex) {
        Logger.getLogger(Pessoas.class.getName()).log(Level.SEVERE, null, ex);
    }

    return "Cadastrado";

}

private void bw(String string) {
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

private void br(String string) {
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

}