Como listar dados utilizando ActionPerformed e JTable dentro de uma Frame?

8 respostas
A

Boa noite galera, to com um dúvida aqui, como eu faço para listar dados utilizando JTable dentro de uma frame???
os dados que quero listar são --> " Nome" , “Idade” , e “Telefone”… dentro da classe ClienteNegocio que criei existe o método listarContatos(), entao eu quero utilizar esse para listar dentro do JTable…Postem códigos ai com soluçãos, por que estou dentro de um projeto como programador e meu tempo ta meio curto!!!

8 Respostas

VagnerChines

Antes de mais vale a pena dares uma lida nisso

http://www.guj.com.br/posts/list/146982.java#792621

:smiley:

FelipeGalli

Não sei se entendi teu problema,

Você quer preencher uma Jtable ?

Se for isso se for isso, vou passar um exemplo de um Jtable preenchido com um Model e uma Jtable dentro de um Jframe usando Netbeans!!!

Primeiro tenho esse Model de Jtable Cria essa classe!!
import java.sql.ResultSet;

import java.util.ArrayList;

import javax.swing.JOptionPane;

import javax.swing.table.AbstractTableModel;

import javax.swing.table.TableModel;

import com.mysql.jdbc.ResultSetMetaData;

import java.sql.PreparedStatement;



public class GeneralTableModel {


//Metodo retorna um TableModel,

    public TableModel getTableModel(PreparedStatement select, String[] columnames) {



        final String[] names = columnames;





        try {



            ResultSet rs = select.executeQuery();



            ResultSetMetaData rsmeta = (ResultSetMetaData) rs.getMetaData();

            ncolumns = rsmeta.getColumnCount();



            list = new ArrayList<Object>();



            while (rs.next()) {



                for (int i = 1; i <= ncolumns; i++) {

                    list.add(rs.getObject(i));

                }



            }



        } catch (Exception e) {

            JOptionPane.showMessageDialog(null, "Erro Desconhecido:" + e.getMessage());



            e.printStackTrace();

        }



        final Object[][] data = new Object[list.size() / ncolumns][ncolumns];



        for (int j = 0; j < list.size(); j = j + ncolumns) {

            for (int i = 0; i < ncolumns; i++) {

                if (list.get(j + i) == null) {

                    data[j / ncolumns][i] = "-";

                } else {

                    data[j / ncolumns][i] = list.get(j + i);

                }

            }

        }



        dataModel = new AbstractTableModel() {



            public int getColumnCount() {

                return names.length;

            }



            public int getRowCount() {

                return data.length;

            }



            public Object getValueAt(int row, int col) {

                return data[row][col];

            }



            @Override

            public String getColumnName(int column) {

                return names[column];

            }



            @Override

            public Class getColumnClass(int col) {



                return getValueAt(0, col).getClass();



            }



            public boolean isCellEditable(int row, int col) {

                return false;

            }



            public void setValueAt(Object aValue, int row, int column) {

                data[row][column] = aValue;

            }

        };





        return dataModel;

    }

    private TableModel dataModel;

    private ArrayList<Object> list;

    private int ncolumns;

}

Depois de criado o jtable dentro do meu código personalisado da Jtable tem esse código

jXTable1 = new org.jdesktop.swingx.JXTable();
try {
  
Connection con = (Connection) ConnectionFactory.getConnection();
java.sql.PreparedStatement stm = con.prepareStatement("SELECT `rg`,`nome`,`cargo_funcionario`, `cc_cod`,`data_adm` FROM `funcionario`");
String[] col_names = {"RG","Nome","Cargo","CC","Data Adm"};
jXTable1.setModel(new zf.inventario.Factory.GeneralTableModel().getTableModel(stm,col_names)
    );
}catch(Exception e){
    e.printStackTrace();
}
jXTable1.addMouseListener(new java.awt.event.MouseAdapter() {
    public void mouseClicked(java.awt.event.MouseEvent evt) {
        jXTable1MouseClicked(evt);
    }
    public void mouseReleased(java.awt.event.MouseEvent evt) {
        jXTable1MouseReleased(evt);
    }
});

jScrollPane2.setViewportView(jXTable1);

Só trocar os select aí para o seu banco ..... qualquer dúvida...

A

Legal…Mas só tem como criar JTable para listar meus dados do Banco de Dados na mão pura???
To usando o NetBeans tbm, junto com seu visual Editor, como eu faço para criar utilizando ele??? Utiliando o vizual Editor??

M

Crie seu próprio TableModel.

Essa é a solução. Não se acostume a usar editor drag’n drop para tudo (até porque esse não é o princípio de Java - esses editores surgiram para ajudar, não para fazer tudo). Se é isso que você quer, vá para Delphi.

FelipeGalli

Como assim na mão pura rs…

você só tem que copiar o codigo que te passei e mudar o select pro teu banco rsrs

A

essa sua linha de código aqui tbm serve para o Postgres??

por que nao estou usando o Mysql…

FelipeGalli

Esqueci de avisar que estou usando mysql, não sei se funciona, ACREDITO que não , este bd deve ter o teu proprio driver!!

M

Existe a classe “genérica” que funciona em qualquer banco. Ela é a java.sql.ResultSetMetaData.

Criado 3 de março de 2010
Ultima resposta 3 de mar. de 2010
Respostas 8
Participantes 4