Bom dia pessoa, mais uma vez estou precisando de uma ajuda de vcs é o seguinte tenha uma tela de cadastro de produto que possuir os campos grupo de produto e unidade de media existem um botão que abrir um JDialog contendo um Jtable e dois Botões ok q seta os valores para os campo da tela de produto e outro de cadastros quer chamar a tela de cadastro onde consigo cadastrar normalmente ate ai nenhum problema a questão é q quando tento seta esses novos valores cadastrado para os campos da tela de produto ele não vai, só acontece isso quando eu faço um novo cadastro aparte da tela de produto. Alguém sabe o pq esta acontecendo isso e qual é a solução. Há estou usando um TableModel.
Essa é a tela
http://imageshack.us/a/img337/3434/produto.gif
Aqui na empresa estou sem permissão para ver seu link, mas é o seguinte!
Vou te passar uma forma que sempre uso e nunca tive problemas!
- Faz um DAO que vai listar tudo e retorna um List.
- Cria um List e popula este com o List do DAO.
- A JTable vai ser populada através desse List
- Quando adicionar algo, limpa o List, limpa o JTable e volta popular usando o List e o JTable.
no actionperformed do botão cadastrar, após ter salvo as informações sobre o novo produto, repovoe a tabela novamente fazendo nova consulta ao banco de dados (ali dentro mesmo).
caro amigo therodrigoagostin, esta feito desse jeito mesmo e toda vez q salvor dou um reflesh na jtable vou posta os metodos aqui para vc da uma olhada blz
[code]
//Camada DAO esse metodo é utilizando para varias consultas e eu nao estou usando tablemodel
public void carregarTable(JTable jtabela, String tabela) throws SQLException {
DefaultTableModel modelo = (DefaultTableModel) jtabela.getModel();
String campos[] = new String[]{“id”, “nome”};
modelo.setNumRows(0);
String sql = "select * from "+tabela;
stmt = jdbc.ConnectionFactory.getConnection().prepareStatement(sql);
rs = stmt.executeQuery();
while (rs.next()) {
int len = campos.length;
Object[] row = new Object[len];
for (int i = 0; i < len; i++) {
row[i] = rs.getString(campos[i]);
}
modelo.addRow(row);
}
stmt.close();
rs.close();
}[/code]
ja para pegar o resultado dessa consulta estou usando esse metodo aquei
[code]
public void setaUnid(int linha) {
if (linha <= listaUnidade.size() - 1) {
System.out.println("linha telaprod "+linha);
UnidadeMedida unid = listaUnidade.get(linha);
this.txtidunidade.setText(unid.getSliga());
this.txtunidade.setText(unid.getNome());
}
}[/code]
eu acho q estou entendo pq nao esta funcionando pq esse metodo esta pegando pela List tablemodel e infelizmente essa jtable esta sendo povoada sem esta setada tablemodel
therodrigoagostin
não soube criar um tablemodel generica para se usada nessa tela por isso q joguei os dados diretos para jtable mas eu preciso pegar mais informaçoes q nao ta na jtable ai implementei um tablemodel para a tabela unidade_medida e estou usando esse metodo ai para seta o valor, como falei esta funcionando ate o momento q eu nao preciso cadastrar um novo item, caso eu cadastro ele jogar na jtable mais ela nao seta o valores por conta da List nao esta atualizada é isso mesmo, tem como apos eu salvar e da um reflesh na List da tablemodel