[RESOLVIDO] Dúvidas com ObjectTableModel

5 respostas
pgioseffi

Prezados,

Alguém poderia me dizer como modificar o tamanho de cada coluna no ObjectTableModel? Atualmente, ele divide uniformemente cada tamanho.

Outra dúvida, como fazer para que as colunas fiquem fixas. Atualmente, se eu clicar no cabeçalho e jogar para o lado, as colunas trocam de lugar.

5 Respostas

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);
		}
    }
Criado 16 de maio de 2011
Ultima resposta 3 de fev. de 2012
Respostas 5
Participantes 4