Criação de TableModel Padrão

2 respostas
ivan.tecnon

Boa tarde a todos,
estou desenvolvendo um trabalho para o Curso, onde utilizo de jTable, pelo que vi no Guj, devo fugir urgentemente do DefaultTableModel.
então, olhando nos tableModel,
Gostaria de uma ajuda, para criação de uma Classe Modelo_tabela, onde simplemente mando minhas linhas (ArrayList) e as Colunas (Vetor).
Istó é possivel de se fazer?

Obrigado a todos.

2 Respostas

MarkKnopfler

Procure algo sobre a classe AbstractTableModel. Só jogar no google que vem várias coisas úteis (não é como certos assuntos que vc precisa e não tem nada útil lá). Inclusive a documentação oficial da Oracle (javadoc).
Vá lá e veja os poucos métodos que vc terá que implementar.

vtr002

Eu achei uma classe uma vez na net que eu utilizo bastante, é uma Jtable que recebe quase exatamente o que quer, só converter sua lista para Object[][] ou usar simplesmente um resultset

import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.Vector;

import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;

public class TableGrid extends JTable {

	private DefaultTableModel tableModel;

	private void setTableModel(DefaultTableModel _tableModel) {
		this.tableModel = _tableModel;
	}
	private DefaultTableModel getTableModel() {
		return this.tableModel;
	}

	public TableGrid() {
		super();
		this.setAutoResizeMode(AUTO_RESIZE_ALL_COLUMNS);
		this.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
	}

	public void setDataSet(ResultSet resultSet) {
		try {

			if (resultSet != null) {
				ResultSetMetaData metaData = resultSet.getMetaData();
				int numColunas = metaData.getColumnCount();
				Vector colunas = new Vector();
				boolean adiciona = true;
				for (int column = 0; column < numColunas; column++) {
					colunas.addElement(metaData.getColumnLabel(column + 1));
				}
				Vector linhas = new Vector();
				resultSet.beforeFirst();
				while (resultSet.next()) {
					Vector novaLinha = new Vector();
					for (int i = 1; i <= metaData.getColumnCount(); i++) {
						novaLinha.addElement(resultSet.getObject(i));
					}
					linhas.addElement(novaLinha);
				}
				this.setTableModel(new DefaultTableModel(linhas, colunas));
				setModel(this.getTableModel());
			}
		} catch (SQLException sql) {
			sql.printStackTrace();
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
	/**
	 *  
	 * @param resultSet  - representa o Objeto(java.sql.ResultSet) com os dados retornados da base
	 * @param colunmName - representa o Objeto(java.util.Vector) com o nomes das colunas da tabela
	 * 
	 * 
	 */

	public void setDataSet(ResultSet resultSet, Vector colunmName) {
		try {
			if (resultSet != null && colunmName != null) {
				Vector linhas = new Vector();
				resultSet.beforeFirst();
				while (resultSet.next()) {
					Vector novaLinha = new Vector();
					for (int cont = 1;
						cont <= resultSet.getMetaData().getColumnCount();
						cont++) {
						novaLinha.addElement(resultSet.getObject(cont));
					}
					linhas.addElement(novaLinha);
				}
				this.setTableModel(new DefaultTableModel(linhas, colunmName));
				setModel(this.getTableModel());
			}
		} catch (SQLException sqlEx) {
			sqlEx.printStackTrace();
		}
	};

	public void setDataSet(Vector dados, Vector linhas) {
		this.setTableModel(new DefaultTableModel(linhas, dados));
		setModel(this.getTableModel());
	}

	/**
	 * 
	 * Método responsável por trazer todos os dados relativo a linha selecionada
	 * @param linha
	 * @param coluna
	 * @return
	 */

	public Object retornaDado(int linha) {
		if (this.tableModel != null && linha >= 0) {
			return ((Vector) this.tableModel.getDataVector().get(linha))
				.toArray();
		} else {
			return null;
		}
	}

        public Object retornaDado(int linha, int coluna) {
		return (this.getModel().getValueAt(linha, coluna));
	}

	public void setDataSet(Object[][] dados, Object[] colunasNames) {
		setModel(new DefaultTableModel(dados, colunasNames));
	}
}
Criado 30 de novembro de 2012
Ultima resposta 1 de dez. de 2012
Respostas 2
Participantes 3