Ajuda! Como exibir consultas no JTable?

4 respostas
DANIEL35
Depois de muito quebrar a cabeça consegui fazer essa tabela. Agora resta saber como capturar os dados do meu banco, e exibir nas linhas e colunas que fiz. Por favor, alguém me ajude!!! Estou o dia todo nesse problema...
import java.awt.*; 
import javax.swing.*; 
import javax.swing.table.DefaultTableCellRenderer; 


public class TelaConsulta extends JFrame{

	Container tela = this.getContentPane();
	JTable tabela;
	JScrollPane scroll;
	
	String colunas[] ={"NOME ","ENDEREÇO ","TELEFONE"};
	String linhas[][] = {
		{" "," "," "},
		{" "," "," "},
		{" "," "," "}, 
		{" "," "," "}, 
		{" "," "," "}, 
		{" "," "," "}, 
		{" "," "," "}, 
		{" "," "," "}, 
		{" "," "," "}, 
		{" "," "," "}, 
		{" "," "," "}, 
		{" "," "," "}, 
		{" "," "," "}, 
		{" "," "," "}, 
		{" "," "," "}, 
		{" "," "," "}, 
		{" "," "," "}, 
		{" "," "," "}, 
		{" "," "," "}, 
		{" "," "," "}
	};
	 
public static void main (String[] args){
	new TelaConsulta();
}

public TelaConsulta(){	
	setTitle("Consultas de alunos"); 	
	
    tabela = new JTable(linhas,colunas);
    tela.setBackground(new Color(148,206,232));
    tabela.getTableHeader().setBackground(new Color(0,255,64));  
    new DefaultTableCellRenderer(){ 

public Component getTableCellRendererComponent(
	JTable table, Object value,boolean isSelected,
	boolean hasFocus,int linha,int coluna){ 
	super.getTableCellRendererComponent(table,value,
	isSelected,hasFocus,linha,coluna);
	return this; 
	}
};
//Criar o painel de Scroll com a Tabela 

    scroll = new JScrollPane(tabela);
    scroll.setBounds(25,100,540,340); 
    this.setLayout(null);
    tela.add(scroll); 

	setVisible(true); 
	setSize(600, 500); 
	setLocationRelativeTo(null);
    } 

}

4 Respostas

ViniGodoy

Não é assim que se faz tabelas. Você precisa fazer seu próprio TableModel.

Para fazer o que você quer, precisa de 3 passos:

  1. Crie uma classe para representar seus dados do banco. Pelo tipo dos seus dados, deve ser algo como Contato ou Cliente.
  2. Faça uma classe Dao para carregar os dados do banco, e retornar um List da sua classe.
  3. Aí sim, crie um TableModel que exibirá sua List.
DANIEL35

Mas não teria como aproveitar essa classe que fiz? Não sei nem o que é essa classe DAO que você fala. Só preciso apresentar as consultas, que no console eu consigo fazer aparecer corretamente. Qual maneira mais básica de ser feito isso? Obrigado.

ViniGodoy

O DAO é simplesmente uma classe que faz a comunicação entre sua aplicação e o banco. Ele é o cara que lê os dados que estão nas tabelas, carrega nas classes de negócio, e repassa o resultado para a aplicação.

Até é possível xunxar o código para fazer parecido com o que você faz no console. Mas acredite, quando você precisar manipular as linhas da tabela (excluir do meio, obter os dados da linha selecionada, etc) vai ser muito mais complicado.

A maioria dos iniciantes em Swing cai na bobeira de utilizar o DefaultTableModel, justamente pq ele dá um resultado visível rápido. Entretanto, para o uso real e manutenção do sistema, ele se torna um inferno, e o tempo aparentemente ganho é inteiro perdido.

DANIEL35

Obrigado. Tenho muito a aprender. O meu aprendizado na linguagem começou verdadeiramente este semestre.

Criado 27 de junho de 2010
Ultima resposta 28 de jun. de 2010
Respostas 4
Participantes 2