na couna Nome eu quero adicionar o vetor valores isso é popolar varias linhas da coluna Nome…esse valores vem de um select do banco onde eu guardo cada registro em um indice do vetor
esse codigo eu estou usando na pos inicializaçao no netbeans
packageutil;importjava.util.Vector;importjavax.swing.table.DefaultTableModel;importbean.Ocorrencia;publicclassModelTableOcoextendsDefaultTableModel{privateVectordados=null;publicModelTableOco(Vectordados){this.dados=dados;// recebe os dados do SQL através de um vetor}@OverridepublicintgetColumnCount(){return2;//quantidade de colunas do jTable}publicintgetRowCount(){if(this.dados==null){return0;}else{returnthis.dados.size();}}publicObjectgetValueAt(introw,intcolumn){Ocorrenciaoc=(Ocorrencia)this.dados.elementAt(row);//convertendo os dados em objeto (Bean)Objectretorno=null;if(column==0){retorno=oc.getOcoData();// valor para a coluna 1}elseif(column==1){retorno=oc.getOcoDescr();// valor para a coluna 2}returnretorno;}publicStringgetColumnName(intcolumn){StringcolumnName="";if(column==0){columnName="Data:";//descrição da coluna 1}elseif(column==1){columnName="Ocorrencia:";//descrição da coluna 2}returncolumnName;}publicbooleanisCellEditable(introw,intcol){returnfalse;}}
Fácil… aí você joga este modelo na JTable como havia fazendo:
ModelTableOcomodel=null;model=newModelTableOco(vt);//chama a classe com o vetor vindo do bancojTable1.setModel(model);// seta o modeljTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);//ajusta automaticamente o tamalho das colunasjTable1.getColumnModel().getColumn(1).setPreferredWidth(1000);// ajusta o tamanho de determinada coluna
Tá na mão, mastigadinho… comentei a linha para que outros possam usufruir, apresnder e aprimorar!
Qualquer coisa posta novamente!
Abraço
Marco Aurélio
ViniGodoy
Não use Vector. Ele foi descontinuado na versão 1.2 do Java. No lugar use o ArrayList, preferencialmente tipando ele através dos Generics, para evitar casts. Aqui tem exemplos de como usa-lo e mais explicações do porque o Vector deve ser evitado: http://www.guj.com.br/posts/list/74068.java#389435
Não use o DefaultTableModel. Quem usa, vai imediatamente para o inferno. Ele é pouco flexível, gera duplicidade dos dados. O ideal é fazer diretamente um filho de AbstractTableModel, o que sai muito parecido com o que o Fanama já fez.
Faça seu próprio model. Gera um código mais simples, mais limpo, mais fácil de manter e reutilizável. Poupa diversos problemas, evita a duplicação desnecessária de dados.
Vou estudar os posts, da maneira que postei está funcionando em minha aplicação, mas vou procurar usar o que sugeriu!
Obrigado!
Marco Aurélio
furacao123
vlw pela ajuda eu estava dando uma tentada aqui e ja ia fazer uma "coxambra"
fazer um contador e ir adicionando linhas em branco na minha JTable pra depois jogar os valores nelas
public void NumeroLinhasTabela() {
int i = 0;
while (i < valoresBanco.length - 1) {
((DefaultTableModel) tbHorarios.getModel()).addRow(new Vector());
i++;
}
}
pelo menos usei a criatividade
M
marcobiscaro2112
ViniGodoy:
1. Não use Vector. Ele foi descontinuado na versão 1.2 do Java. No lugar use o ArrayList, preferencialmente tipando ele através dos Generics, para evitar casts. Aqui tem exemplos de como usa-lo e mais explicações do porque o Vector deve ser evitado: http://www.guj.com.br/posts/list/74068.java#389435
Não use o DefaultTableModel. Quem usa, vai imediatamente para o inferno. Ele é pouco flexível, gera duplicidade dos dados. O ideal é fazer diretamente um filho de AbstractTableModel, o que sai muito parecido com o que o Fanama já fez.
Faça seu próprio model. Gera um código mais simples, mais limpo, mais fácil de manter e reutilizável. Poupa diversos problemas, evita a duplicação desnecessária de dados.
No item número 3, você diz que não é recomendado pela Sun. Você teria alguma referência de material para explicar porque a Sun desaconselha o uso de Vector?
Obrigado.
ViniGodoy
As principais contra-indicações são:
Métodos duplicados (add e addElement, por exemplo) e mais longos na interface: especialmente se vc não segue a regra de “codificar pela interface”;
Força você a pagar por uma sincronização que pode ser desnecessária (isso geralmente está presentes em artigos sobre thread-safety, como os do Goetz). O ArrayList contém wrappers de sincronização, que podem ser usados só nos locais onde isso é realmente necessário;
O Vector dobra de tamanho quando falta espaço para um único elemento, enquanto o ArrayList apenas aumenta rm 50% o seu tamanho (em apenas casos muito específicos esse comportamento padrão é uma vantagem).
Se você vir o tutorial “Trail: The Collections Framework”, verá que o Vector e HashTable são citado como “old classes”. Ele também cita que o List corrige seis diferentes problemas do Vector.
Referências contra o Vector podem ser encontradas nos livros Core Java (procure por “we recommend”) e Effective Java.