JTable

5 respostas
R

Galera alguem me da uma ajuda eu queria por uma JTable no meu projeto com conexao sql e td mais, li alguns posts na net mais n entendi nada alguem poderia me ajudar.?

Achei isso.

Container cp;
	JTable tabela;
	String[] colunas = new String []{"Marca", "Carro", "Cor"};
	String[][] dados = new String [][] {
		 {"Volksvagem","Fusca", "Vermelho"},
		 {"Volksvagem","Brasília", "Amarela"},
		 {"Fiat","Uno", "Preto"},
		 {"Chevrolet","Chevet", "Azul"}};

    	cp = getContentPane();
    	cp.setLayout(new FlowLayout);

		tabela = new JTable(dados, colunas); // Monta a tabela com 3 colunas e seus dados 

		tabela.setGridColor(Color.blue);	// Muda a cor dos contornos da tabela
		
	   // tabela.setAutoResizeMode(tabela.AUTO_RESIZE_OFF); // Faz com que as colunas não se adaptem ao tamanho da tabela, comente esta linha que vc entenderá melhor
		
		//	tabela.setRowSelectionAllowed(false); // Não deixa selecionar as linhas
		//	tabela.setCellSelectionEnabled(false); // Não deixa selecionar as colunas

		//	tabela.setEnabled(false); // Não deixa selecionar nem editar

		tabela.setSelectionForeground(Color.ORANGE);		//Cor da letra da celula selecionada
		tabela.setSelectionBackground(Color.LIGHT_GRAY);	//Cor do fundo da celula selecionada

		cp.add(new JScrollPane(tabela), "Center");

Só que queria saber como passo para absolute layout para posicionar em minha tela.

5 Respostas

J

Dá uma olhada aqui:

http://www.guj.com.br/articles/147

Tem um exemplo no youtube também, mas é um pouco mais complexo pois envolve getters and setters, mas com muito estudo dá pra pegar.

Em suma, você deve ter em mente os seguintes passos:

  1. Declarar um DefaultTableModel
DefaultTableModel dtmprotocolo = new DefaultTableModel(null,new String[]{"Data", "Ação", "Destino/Origem", "Recibo", "Observações", "Usuário"});// os titulos entre aspas são os títulos das colunas incrementadas
  1. Adicionar uma linha vazia

String[] linha = new String[]{null, null, null, null, null};//os nulls correspondem aos titulos dados às colunas dtmprotocolo.addRow(linha);

  1. Adicionar os dados à linha
dtmprotocolo.setValueAt("dado", 0);// repare que a linha inicia em '0', e deve ser incrementada a cada linha

=> antes você deve ir em propriedade e configurar o model do Jtable com o DefaultTableModel (dtmprotocolo no exemplo dado) que você declarou.

Se tiver ficado muito confuso, posta ai.É só um começo.

Jacob

R

Entendi nadinha pode postar um modelo pronto?

fernandopaiva

Na verdade o JTable naum se conecta ao banco, ele soh exibe informacoes do banco…Por exemplo, o SELECT.
Como eu uso NetBeans, nao adiciono as colunas via codigo, pois o NetBeans cuida disso pra mim.
mas aqui ta o exemplo pra add as colunas por codigos: http://www.exampledepot.com/egs/javax.swing.table/AppendCol.html

veja.

///aqui as definicoes do grid(JTable)
public void defineGridPaises(){
        gridPaises.getColumnModel().getColumn(0).setPreferredWidth(100);
        gridPaises.getColumnModel().getColumn(1).setPreferredWidth(500);        
        DefaultTableCellRenderer rendererDireita = new DefaultTableCellRenderer();
        rendererDireita.setHorizontalAlignment(SwingConstants.RIGHT);
        gridPaises.getColumnModel().getColumn(0).setCellRenderer(rendererDireita);        
        ((DefaultTableCellRenderer)gridPaises.getTableHeader().getDefaultRenderer()).setHorizontalAlignment(SwingConstants.LEFT);
        gridPaises.getTableHeader().setFont(new Font("Lucida Grande", Font.BOLD,11));  
    }


//aqui o DAO q faz a consulta SQL e retorna um List dos resultados
public List<Pais01> consultaPais() throws SQLException{
        List<Pais01> lista = new ArrayList<Pais01>();
        PreparedStatement stm = this.con.prepareStatement("SELECT * FROM pais01 ORDER BY PaisNom");
        ResultSet rs = stm.executeQuery();
        while(rs.next()){
            Pais01 pais = new Pais01();
            pais.setPaisCod(rs.getLong("PaisCod"));
            pais.setPaisNom(rs.getString("PaisNom"));
            pais.setPaisTipReg(rs.getString("PaisTipReg"));
            
            lista.add(pais);
        }
        rs.close();
        stm.close();        
        return lista;
    }


//aqui eu coloco as informacoes vindas de um DAO q faz um SELECT no banco na JTable.
public void consultaTodosPaises() throws SQLException{
         DefaultTableModel tabela = (DefaultTableModel)gridPaises.getModel();
         tabela.setNumRows(0);
         Pais01DAO pDAO = new Pais01DAO();
         List<Pais01> lista = pDAO.consultaPais();
         for(Pais01 p : lista){
            tabela.addRow(new Object[]{  
                new FormataCodigos().retornaCodigoFormatado(p.getPaisCod()),
                p.getPaisNom(),                
            });             
         }
    }

Eh isso, boa sorte.

R

Não parece complicado vou tentar aqui qualquer coisa eu volto a resp.

R

Nao estou entendendo, poderia me postar um código completo funfando? pq separado eu nunca sei como fazer, se não for muito incomodo eu agradeço.

Criado 22 de outubro de 2011
Ultima resposta 23 de out. de 2011
Respostas 5
Participantes 3