JTable

bom dia… pessoal fiz uma classe seguindo um livro para poder mostrar dados do banco erm uma JTable…
ai fiz tudo de boa ai na JTable eo chamo a classe… e crio o select… porem na hora de mostrar os dos ma JTable so aparece o nome das colunas… por exemplo… no select esta assim : Select nome, cpf, rg from funcionario logo na JTable aparece as 3 colunas… com os nomes mais não os dados… aparentemente esta certo porque ele pega os nome das colunas no select…

o que sera que pode ser??
vlwwwwww

Pode postar o fonte aqui?

Posta seu código ai.

codigo é esse aqui

[code]package br.com.siscom.view;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.table.AbstractTableModel;
import br.com.siscom.dao.Conexao;

public class Tabela extends AbstractTableModel {
private Connection conexao;

private Statement statement;

private ResultSet resultset;

private ResultSetMetaData metadata;

private int linha;

private String query;
public Tabela(final String query) throws SQLException, ClassNotFoundException {

	conexao = Conexao.getConnection();
	statement = conexao.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
			ResultSet.CONCUR_READ_ONLY);

	setQuery(query);

}

public Class getColumnClassName(final int column) {

	try {
		final String className = metadata.getColumnClassName(column + 1);
		return Class.forName(className);

	} catch (final Exception exception) {
		exception.printStackTrace();
	}

	return Object.class;
}

public int getColumnCount() {
	try {
		return metadata.getColumnCount();

	} catch (final SQLException sqlexception) {
		sqlexception.printStackTrace();
	}
	return 0;
}

public String getColumnName(final int column) {
	try {
		return metadata.getColumnName(column + 1);

	} catch (final SQLException sqlexception) {
		sqlexception.printStackTrace();
	}
	return "";
}

protected void finalize() {

	try {
		statement.close();
		conexao.close();
	} catch (final SQLException sqlexception) {
		sqlexception.printStackTrace();
	}
}

public int intgetRowCount() {
	return linha;
}

public Object getValueAt(final int row, final int column) {
	try {
		resultset.absolute(row + 1);
		return resultset.getObject(column + 1);
	} catch (final SQLException sqlexception) {
		sqlexception.printStackTrace();
	}
	return "";
}

public void refresh() throws SQLException {

	setQuery(query);
}

public void setQuery(final String qry) throws SQLException {

	query = qry;
	resultset = statement.executeQuery(qry);
	metadata = resultset.getMetaData();
	resultset.last();
	linha = resultset.getRow();
	fireTableStructureChanged();

}

public int getRowCount() {
	// TODO Auto-generated method stub
	return 0;
}

}
[/code]

ai ai no JTable eu chamo assim

[code]private JTable JTable = null;
private Tabela tabela;

private JTable getJTable() {
String query = “Select nome, cpf, rg from funcionario”;
try {
tabela = new Tabela(query);

	} catch (ClassNotFoundException classNotfound) {
		JOptionPane.showMessageDialog(null, "Driver não encontrado",
				"Erro encontrado", JOptionPane.ERROR_MESSAGE);

	} catch (SQLException sqlex) {
		JOptionPane.showMessageDialog(null, "Erro na SQL",
				"Erro encontrado", JOptionPane.ERROR_MESSAGE);

	}
	if (JTable == null) {
		JTable = new JTable(tabela);

	}
	return JTable;
}[/code]

ai eu naum sei pq ele faz isso hehe :confused:

galeraaa desculpa ai resolvi a minha situaçãoo
:smiley:
vlww
era que eu fiz um erro no [code]# public int intgetRowCount() {
return linha; }

na verdade era no getRowCount…
vlwww

bom mais tem um porem… nesse aee quando eo chamo o o form com o JTable… gostaria de por titulos porque os titulos que sai é os que vem do select por exemplo… select nome, cpf, rg from funcionario… ai sai assim nome cpf rg gostaria de manipularo tamanho das colunas e os titulos e as fonts como faço isso??

Cria um TableModel para você controlar melhor e estilizar a sua tabela.
Exemplo:
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html

mas c eu fizer isso não vo ter que muda tudo que eu ja fiz???
naquela classe tabela???

Tá certo, não tinha notado. Mas já tentou apelidar as colunas com o nome a qual você deseja?

Tipo assim:

SELECT nome as nome_cliente, cpf as CPF, rg as RG
FROM funcionario

tentei ja mais parece que pega direto o nome que esta no banco mesmo
:confused:
a

alguem?

Faço minhas as palavras do Ratao.

Como eu já disse em outros tópicos, crie o seu próprio TableModel.
Ótimos tutoriais para isso:
http://www.informit.com/articles/article.aspx?p=332278
http://www.informit.com/articles/article.aspx?p=333472

sim ok smais da forma que eu fiz… aquela classe não é a maneira correta de criar?

Você pode fazer o que o ratao sugeriu. Ou, você pode passar um array com o nome das colunas.

Normalmente, a gente não trabalha com SQL direto. As classes de negócio são instanciadas e são elas que aparecem no model. Os nomes de algumas colunas (daquelas que não adianta tirar por reflexão) são cadastradas manualmente mesmo.