Marky.Vasconcelos
Essa é uma parte que o TableModel não é responsavel.
Voce precisa pegar o TableColumnModel e setar o PreferredWidth nas colunas que voce quer mudar o tamanho.
Sobre travar as colunas eu já não sei.
pgioseffi
Prezado Marky.Vasconcelos,
Fiz o seguinte:
final TableColumnModel colunas = this.tabelaEmail.getColumnModel();
final TableColumn coluna = colunas.getColumn(0);
coluna.setResizable(false);
coluna.setPreferredWidth(15);
final TableColumn colunaEmail = colunas.getColumn(1);
colunaEmail.setResizable(false);
colunaEmail.setPreferredWidth(567);
E mesmo assim não funcionou, a distribuição da largura das colunas continuou uniforme… Alguma outra dica?
ViniGodoy
Mesa também nessa propriedade:
http://download.oracle.com/javase/6/docs/api/javax/swing/JTable.html#setAutoResizeMode(int)
E também pegue a coluna através do columnModel:
E altere suas propriedades somente após já ter definido o model.
pgioseffi
Na verdade, o código acima funcionou. Por algum motivo o plugin do Google não mostra corretamente a tela, mas em execução tudo certo.
Para travar as colunas usei o seguinte:
this.tabelaEmail.getTableHeader().setReorderingAllowed(false);
Rocklee6544
Vo começa a trabalhar no próprio IObjectTableModel
Já comecei
funciono legal;
package br.com.websart.teste;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public abstract class IObjectTableModel<E> {
List<E> elemento;
List<String> linha;
public List<String> getLinha() {
return linha;
}
String coluna[];
Map<Integer,E> mapaObjeto;
public IObjectTableModel(E objeto){
linha=new ArrayList<String>();
Map<Integer,String> mapaParamentros=criaMapaParametros(objeto);
converteMapaEmLinhas(mapaParamentros);
}
public List<E> getElemento() {
return elemento;
}
public void setElemento(List<E> elemento) {
this.elemento = elemento;
}
public abstract Map<Integer,String> criaMapaParametros(E objeto);
public void converteMapaEmLinhas(Map<Integer,String> mapaParamentros){
for (Map.Entry<Integer, String> entrada : mapaParamentros.entrySet()) {
String valor= entrada.getValue();
linha.add(valor);
}
}
}
Essa classe já pode ser usada para implementar o JTable normal
package br.com.websart.teste;
import java.util.HashMap;
import java.util.Map;
import br.com.webstart.modelo.Pessoa;
public class IObjectPessoa extends IObjectTableModel<Pessoa> {
public IObjectPessoa(Pessoa objeto) {
super(objeto);
}
@Override
public Map<Integer, String> criaMapaParametros(Pessoa objeto) {
Map<Integer,String> mapa=new HashMap<Integer, String>();
mapa.put(0,objeto.getNome());
mapa.put(1,objeto.getIdade());
return mapa;
}
public void imprimeLinhas(){
for (String valor : getLinha()) {
System.out.println(valor);
}
}