Inserir um DefaultTableModel em um JTable
Bom dia amigos,
estou com o seguinte problema...tenho uma classe que faz consulta num banco e monta um DefaultTableModel e nele um mando inserir os registros (addRows) e o metodo dessa classe retorna o model montado para a classe que possui um jframe e um jtable, mas nao estou conseguindo colocar esse model dentro do jtable...isso é possivel?
muito obrigado. Abraços.
Thiago Pedroso
Curtidas 0
Respostas
Alexandre Viriato
09/04/2009
[quote="tap_pedroso"]Bom dia amigos,
estou com o seguinte problema...tenho uma classe que faz consulta num banco e monta um DefaultTableModel e nele um mando inserir os registros (addRows) e o metodo dessa classe retorna o model montado para a classe que possui um jframe e um jtable, mas nao estou conseguindo colocar esse model dentro do jtable...isso é possivel?
muito obrigado. Abraços.
Não entendi muito bem o que você quer fazer, mas seria isso:
DefaultTableModel model = new DefaultTableModel(); //pegar seu model aqui JTable table = new JTable(model); //ou table.setModel(model);
GOSTEI 0
Thiago Pedroso
09/04/2009
assim não deu certo...o meu jtable fica em branco, eu ja tenho o jtable no jframe e fiz jtbItens.setModel(tabmodel); e ele ficou vazio, sumiu as colunas...o q acontece é q estou tentando trabalhar com socket e eu tenho uma aplicação server q faz uma consulta sql e coloca os dados num Model e aí eu mando esse model para a aplicação client que deveria importar esse model para dentro do jtable...entendeu?
obrigado amigo.
GOSTEI 0
Thiago Pedroso
09/04/2009
amigo, referente ao link q vc me passou existe um bloco que é assim:
[b] Cliente C = new Cliente(); [/b]
C.setCodigo(R.getString("Codigo"));
C.setNome(R.getString("Nome"));
C.setEndereco(R.getString("Enderceo"));
C.setTel_cel(R.getString("Tel_Cel"));
e a linha em negrito, no caso Cliente não é declarado em lugar algum...como é essa declaração?
GOSTEI 0
Thiago Pedroso
09/04/2009
[quote="tap_pedroso"]amigo, referente ao link q vc me passou existe um bloco que é assim:
[b] Cliente C = new Cliente(); [/b]
C.setCodigo(R.getString("Codigo"));
C.setNome(R.getString("Nome"));
C.setEndereco(R.getString("Enderceo"));
C.setTel_cel(R.getString("Tel_Cel"));
e a linha em negrito, no caso Cliente não é declarado em lugar algum...como é essa declaração?
Cliente eh uma classe onde possui seus respectivos metodos encapsuladores de acordo com os atributos da tabela Cliente do bd, Jah o [b]C(deveria ser c "minusculo")[/b] eh uma instancia de um objeto criado do tipo da classe Cliente para poder ter acesso a esses respectivos metodos encapsuladores(gets e sets da vida) da mesma.
dica: sempre qdo for postar codigos coloque-os entre as tags [b]code[/b]
GOSTEI 0
Thiago Pedroso
09/04/2009
oi, amigo, agora entendi e consegui montar aqui o vetor, fiz exatamento igual ao exemplo que me indicou...é assim mesmo que eu preciso mas o problema é que não consigo serializar ele...estou tentando transmitir por um socket esse vetor mas quando dou um writeobject ocorre o erro de Notserializable...até agora so consegui transmitir pelo socket um ArrayList, mas dessa maneira quando recebo os dados na aplicação client eu tenho q dar um loop no ArrayList e ficar dando um split, por exemplo:
e la no server eu separo os campos q retornou da consulta SQL com ";"...
dessa maneira que me mostrou com vetor ou algo semelhante é o ideal mas eu preciso transportar pelo serversockt...entendeu?
obrigado.
ArrayList lista= sckcli.solicitaConsulta();
DefaultTableModel tabmodel = (DefaultTableModel)jtbitens.getModel();
tabmodel.setNumRows(0);
for (int i=0;i<lista.size();i++){
String ln = (String) lista.get(i);
String resln[] = ln.split(";");
tabmodel.addRow(new Object[]{resln[0],resln[1],resln[2],resln[3]});
} GOSTEI 0
Thiago Pedroso
09/04/2009
olha, resolvi o problema, consegui transmitir o vetor...mas agora estou com outro rsrsrs...da uma olhada no codigo:
agora vem uma parte onde monto o vetor com os dados:
o problema está na segunda parte...o que acontece é q as posições do vetor estão sendo sobreescritas por exemplo...coloquei um breakpoint e vi que V[0] fica codbar="91", descr="teste" aí vai para outro registro que seria codbar="92" e descr="teste2"...aí quando acontece o V.add(P) que gera o V[1] o V[0] passa a ser igual ao V[1] ou seja, sempre assume os valores do ultimo registro adicionado em todas as posições...o q está acontecendo?
muito obrigado.
import java.io.Serializable;
import java.util.Vector;
public class produto implements Serializable {
private String codbar = null;
private String descr = null;
private String icms = null;
private String valor = null;
/** Creates a new instance of produto */
public String getCodBar() {
return codbar;
}
public void setCodigo(String codbar) {
this.codbar = codbar;
}
public String getdescr() {
return descr;
}
public void setdescr(String descr) {
this.descr = descr;
}
public String getIcms() {
return icms;
}
public void setIcms(String icms) {
this.icms = icms;
}
public String getValor() {
return valor;
}
public void setValor(String valor) {
this.valor = valor;
}
}
conn_server.ExecuteSQL("Select * FROM TABPRODUTOS where DESCRICAO LIKE '%"+vrpesq+"%'");
ResultSet result = conn_server.res;
produto P = new produto();
Vector V = new Vector();
try {
while(result.next()){
P.setCodigo(result.getString("CODBARRAS")+i);
P.setdescr(result.getString("DESCRICAO")+i);
P.setIcms(result.getString("ALIQICMS")+i);
P.setValor(result.getString("VRVENDA")+i);
V.add(P);
}
} catch (SQLException ex) {
ex.printStackTrace();
}
objsaida.writeObject(V);
GOSTEI 0
Thiago Pedroso
09/04/2009
Eh óbvio q isso vai acontecer, vai ter q instanciar o objeto Produto dentro do laço, e nao fora como vc estah fazendo, pois para cada registro e criado um novo objeto a cada interação, do jeito q vc estah fazendo sempre vai sobrepor o ultimo.
eh soh fazer isso:
produto P = null;//tudo ao contrario o correto seria Produto p = null;
//depois dessa linha vc instancia seu objeto
while(result.next()){
P = new produto();
GOSTEI 0
Thiago Pedroso
09/04/2009
ah ok, agora deu certo...desculpe minha ignorancia mas sou iniciante em java ainda....muito obrigado pela ajuda.
GOSTEI 0
Thiago Pedroso
09/04/2009
[quote="tap_pedroso"]ah ok, agora deu certo...desculpe minha ignorancia mas sou iniciante em java ainda....muito obrigado pela ajuda.
Não quis te ofender cara eh q eu respondi rapido e nem percebi se fui mal educado, mas eh isso ai cara vc estah melhor q muitos aqui, pelo menos vc tenta fazer....
GOSTEI 0