Nome das colunas não aparecem na tabela [ Resolvido ]

4 respostas
ccefetpb

Bem … segui o tutorial do GUJ entendi mais ou menos como funciona e fui botar a mão na massa …
Bem funcionou … mas não do jeito que queria … Sera que alguem pode me dizer por que os nomes das colunas não estão aparecendo na tabela que criei ?
O codigo segue abaixo :

public class Usuario {
	private String login;
	private String senha;
	private Integer idade ;
	
	
	
	public Usuario(String login, String senha, Integer idade) {
		super();
		this.login = login;
		this.senha = senha;
		this.idade = idade;
	}
	
	public String getLogin() {
		return login;
	}
	public void setLogin(String login) {
		this.login = login;
	}
	public String getSenha() {
		return senha;
	}
	public void setSenha(String senha) {
		this.senha = senha;
	}
	public Integer getIdade() {
		return idade;
	}
	public void setIdade(Integer idade) {
		this.idade = idade;
	}
	
	

}

import java.awt.BorderLayout;
import java.util.List;

import javax.swing.JPanel;
import javax.swing.JTable;

import javax.swing.table.DefaultTableModel;



public class Table extends JPanel{
	List<Usuario> usuarios ;
	private String tableString[][];
	private String titulos[] = {"login","senha","idade"};
	
	public Table(List<Usuario> usuarios) {
		this.setUsuarios(usuarios);
		tableString = new String[usuarios.size()][3];
		buildTable();
		DefaultTableModel defaultTableModel = new DefaultTableModel(tableString	, titulos);;
		JTable table = new JTable(defaultTableModel);
		table.setEnabled(false);
		this.setLayout(new BorderLayout());
		this.add(table,BorderLayout.CENTER);
	}

	public void buildTable(){
		int i = 0;
		for(Usuario usuario : usuarios) {
			tableString[i][0] = usuario.getLogin();
			tableString[i][1] = usuario.getSenha();
			tableString[i][2] = ""+usuario.getIdade();
			i++;
		}
		
	}

	public List<Usuario> getUsuarios() {
		return usuarios;
	}


	public void setUsuarios(List<Usuario> usuarios) {
		this.usuarios = usuarios;
	}
	
	

}
import java.awt.BorderLayout;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JFrame;


public class Principal {
	public static void main(String[] args) {
		List<Usuario> usuarios = new ArrayList<Usuario>();
		Usuario u1 = new Usuario("Cleyton","1234",21);
		usuarios.add(u1);
		Usuario u2 = new Usuario("Cleydson","abcd",15);
		usuarios.add(u2);
		Usuario u3 = new Usuario("Ana","asdf",35);
		usuarios.add(u3);
		Usuario u4 = new Usuario("Caetano","a234",45);
		usuarios.add(u4);
		
		Table table= new Table(usuarios);
		
		JFrame frame = new JFrame();
		
		frame.setSize(300, 300);
		frame.setLayout(new BorderLayout());
		frame.getContentPane().add(table);
		frame.setVisible(true);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
	}

}

A tabela aparece porem eu quero que ela apareca com o nome das colunas acima , como uma consulta em um sgbd.

4 Respostas

G

ccefetpb altere a seguinte linha

this.add(table,BorderLayout.CENTER);

Para

this.add(new JScrollPane(table),BorderLayout.CENTER);

Não esqueça de usar o import:

import javax.swing.JScrollPane;

Espero ter ajudado…abraços

ccefetpb

Ajudou d+.
Muito obrigado mesmo .
Fiquei o feriado todo isolado do mundo tentando resolver e nada .
Valeu ! Mas uma duvida !
É possivel alinhar o conteudo das colunas no centro ?Se vc executar o programa vai notar que as colunas estão alinhadas a direita.
Bem mesmo assim ja ganhei o dia.obg.

G

veja se ajuda. Altere seu construtor para…

public Table(List<Usuario> usuarios) {  
        this.setUsuarios(usuarios);  
        tableString = new String[usuarios.size()][3];  
        buildTable();  
        DefaultTableModel defaultTableModel = new DefaultTableModel(tableString , titulos);;  
        JTable table = new JTable(defaultTableModel);  
        table.setEnabled(false);  
        this.setLayout(new BorderLayout());  
        this.add(new JScrollPane(table),BorderLayout.CENTER);  
		
		TableColumnModel coluna = table.getColumnModel();
        
		DefaultTableCellRenderer alinhamento = new DefaultTableCellRenderer();
        alinhamento.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
        coluna.getColumn(0).setCellRenderer(alinhamento);
		
		alinhamento = new DefaultTableCellRenderer();
		alinhamento.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        coluna.getColumn(1).setCellRenderer(alinhamento);
		
		alinhamento = new DefaultTableCellRenderer();
		alinhamento.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        coluna.getColumn(2).setCellRenderer(alinhamento);
    }

com os imports

import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableColumnModel;

Abraços

ccefetpb

Muito Obg Gilson =D

Criado 18 de fevereiro de 2010
Ultima resposta 18 de fev. de 2010
Respostas 4
Participantes 2