bom dia,
eu entendi o que sugeriu mas continuo afirmando que não adinta, estou fazendo isso mas não dá resultado esperado.
A solução é a mesma que a gente conversou meu amigo… Você tem que criar um método como:
[quote]“EncontrarNoBanco” ou algo assim,
que antes de você abrir o forumulario ele vai pesquisar em qual registro que você está e vai enviar esses dados para o forumulario carregar essas informações (construtor)…[/quote]
eu abro o formulário passando um bean, esse bean é o tipo de dado que preenche o jtable, com esse bean tiro as infromações que preciso para buscar o restante das infromações no banco e preencher o formulário.
eu estou extendendo AbstractTableModel para o meu modelo.
veja:
Modelo
class TabelaModelo extends AbstractTableModel{
private String[] colunas = {"EMPRESA","NOME","TELEFONE1","RÁDIO", "ESTADO","MUNICÍPIO"};
private List<BeanTabelaModelo> dados;
private DaoTabelaModelo daoTabelaModelo = new DaoTabelaModelo();
public TabelaModelo(){
try {
setDados(daoTabelaModelo.listarParaTabela());
} catch (SQLException ex) {
ErroAgenda.exibirMensagemErro("não é possível listar na tabela:\n"+ex);
}
}
public List<BeanTabelaModelo> getDados() {
return dados;
}
private void setDados(List<BeanTabelaModelo> dados) {
this.dados = dados;
}
public int getRowCount() {
return dados.size();
}
public int getColumnCount() {
return colunas.length;
}
public Object getValueAt(int rowIndex, int columnIndex) {
// SQL usado para popular a lista
//select empresa.id, empresa.nomefantasia, contato.nome, telefone.telefonefixo1, telefone.radio, endereco.estado, endereco.municipio from empresa, contato, telefone, endereco where empresa.id_contato=contato.id and empresa.id_telefone=telefone.id and empresa.id_endereco=endereco.id
BeanTabelaModelo linha = dados.get(rowIndex);
if(columnIndex == 0) return linha.getNomeFantasia();
if(columnIndex == 1) return linha.getNomeContato();
if(columnIndex == 2) return linha.getTelefone1();
if(columnIndex == 3) return linha.getRadio();
if(columnIndex == 4) return linha.getEstado();
if(columnIndex == 5) return linha.getMunicipio();
if(columnIndex == 6) return linha.getId_empresa();
return "";
}
@Override
public String getColumnName(int column) {
return colunas[column];
}
BeanTabelaModelo getLinhaTabelaModelo(int row){
return (BeanTabelaModelo)dados.get(row);
}
}
…
na tela principal onde tem o Jtable, eu chamo a tela de formulário assim:
private void tabelaMouseClicked(java.awt.event.MouseEvent evt) {
if(evt.getClickCount() == 2){
BeanTabelaModelo btm = (BeanTabelaModelo) tabelaModelo.getDados().get(tabela.getSelectedRow()); // esse bean é a classe q criei p facilitar preencher a tabela, nela tem as PKs para buscar o restate dos dados no banco
TelaCadastro telaCadastro = new TelaCadastro(btm);
telaCadastro.setTitle("Alterar Contato");
telaCadastro.setVisible(rootPaneCheckingEnabled);
}
}
...
o método que aciona o cadastro ou a edição dos dados no formulário
obs: os beans já estão preenchidos lá no construtor.
private void btnGravarActionPerformed(java.awt.event.ActionEvent evt) { // quando aciono o botão q vai cadastrar ou editar os campos
long id_contato , id_empresa, id_endereco, id_telefone; // guarda apra mim as PKs de cada entidade do banco
DaoContato daoContato = new DaoContato();
DaoEndereco daoEndereco = new DaoEndereco();
DaoTelefone daoTelefone = new DaoTelefone();
DaoEmpresa daoEmpresa = new DaoEmpresa();
TabelaModelo tabelaModelo = new TabelaModelo();
String msg = "";
if(validarCampos() == true){ // se os capos estiverem com o conteúdo além do permitido não entra na condição(if)
salvarCampos(); // pega o conteúdo de cada campo e salva nos beans
if(empresa.getId() == -1){ // se id fro igual a -1 é um cadastro.
id_contato = daoContato.cadastrar(contato);
id_endereco = daoEndereco.cadastrar(endereco);
id_telefone = daoTelefone.cadastrar(telefone);
empresa.setIdContato(id_contato);
empresa.setIdEndereco(id_endereco);
empresa.setIdTelefone(id_telefone);
daoEmpresa.cadastrar(empresa);
tabelaModelo.fireTableRowsInserted(tabelaModelo.getRowCount()-1,tabelaModelo.getRowCount()-1); // isso é uma tentativa, ainda n consegui atualizar automaticamente a jtable
msg = "Cadastrado!";
} else {
daoContato.alterar(contato);
daoEndereco.alterar(endereco);
daoTelefone.alterar(telefone);
daoEmpresa.alterar(empresa);
tabelaModelo.fireTableRowsUpdated(0,tabelaModelo.getRowCount()-1);
msg = "Alterado!";
}
JOptionPane.showMessageDialog(null, msg);
}
else {
JOptionPane.showMessageDialog(null, "Não é possível cadastrar ou atualizar com todos os campos vazios");
}
this.dispose();
}
consigo cadastrar sem atualizar automaticamente a JTable e sempre que tento atualizar os dados trava a aplicação sem ao menos mostrar algum erro no console do Netbeans ou qualquer outro lugar, tenho q cancelar no runtime da IDE.
será que consegue me ajudar?
até “tentei” usar o debug, consego indetificar algumas coisas mas n consegui mesmo identificar.
não uso frameWork por ser uma aplicação pequena… sim está dando trabalho eu sei, muito mais do que eu esperava mas é para aprendizado, logo depois dessa, o uso do framework vai ser obrigatório, até pq estarei masi confiante e a aplicaçaõ seguinte será maior.
obrigado.