JTable no netbeans

7 respostas
gbazilio

Como crio uma JTable no netbeans e coloco os dados de uma tabela do banco de dados nela??

Ñ consigo fazer isso lá!!

Alguém pode ajudar??

vlw

7 Respostas

mister_m

Bem, o seu problema se divide em duas partes: você precisa aprender a fazer acesso a banco de dados e a programar sua interface Swing. Em ambos os casos, a menos que você esteja fazendo uma aplicação “de brinquedo” e extremamente pequena, você vai querer abstrair ambas as coisas.

Com respeito ao banco de dados, normalmente queremos trabalhar com objetos. Para isso, existem frameworks e APIs de mapeamento objeto-relacional (ORM) que simplificam muito esse processo. Uma opção seria usar o padrão, JPA - que possui excelente suporte no NetBeans. Outra opção é utilizar diretamente uma implementação, como o Hibernate. Existe muita documentação sobre esse assunto, inclusive em português.

Para abstrair a programação da interface, você deve utilizar um framework de binding, como o genesis. A documentação possui um exemplo de como popular uma JTable a partir de uma java.util.List. Caso tenha mais dúvidas, é só perguntar.

gbazilio

Kra…
eu tenho minha tabela funcionando…
ta fazendo oq eu quero…
mas vc falou de uma porrada de coisa…acho q a minha ta certo mas ta errado…
ñ uso nda dessas paradas de hibernate e tal…nem sei oq é isso…
agora vc me criou 300 dúvidas

mister_m

Se você queria popular UMA tabela e sua aplicação é só isso, você pode confortavelmente ignorar tudo que te falei, com certeza. Agora, se você vai desenvolver um sistema, é quase certo que é melhor você estudar as tecnologias que mencionei.

O

Olá mister__m
Estou tentando fazer a mesma coisa que o gbazilio, mas como ele ainda não obtive nenhum sucesso.

Minhas classes são:

@Entity
@Table(name = "person")
public class Person implements Serializable {
    
    @Id @GeneratedValue
    @Column(name = "person_id")
    private Long id;
    
    @Column(name = "age")
    private int age;

    @Column(name = "first_name")
    private String firstName;
    
    @Column(name = "last_name")
    private String lastName;

    //Getters and Setters
}
public class HibernateUtil {
    
    private static final SessionFactory sessionFactory;
    static {
        try {
            sessionFactory = new AnnotationConfiguration().buildSessionFactory();
        } catch (Throwable ex) {
        // Log exception!
            throw new ExceptionInInitializerError(ex);
        }
    }
    public static Session getSession() throws HibernateException {
        return sessionFactory.openSession();
    }
}
public class PersonDAO extends AbstractHibernateCommand{
    
    private Session session;
    
	...
        
        @Remotable
	public List consultar(){
                session = ConnectDB.getInstance();
                   List pessoas = session.createQuery("from Person").list();
               return pessoas;
	}
public class PersonAction {
	
       ...

        private Person person;
        
        @DataProvider(objectField="person")
        public List consultar(){
                PersonDAO personDAO = new PersonDAO();
                return personDAO.consultar();
	}
}
public class ConsultaPerson extends javax.swing.JDialog {
    
    /** Creates new form ConsultaPerson */
    private JPanel panelCentro;
    private JTable personTable;
    private SwingBinder binder;
    
    
    public ConsultaPerson() {
        
        	super();
		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		this.setSize(800,600);
		this.setLocationRelativeTo(null);
		this.setTitle("Consulta de Pessoas");
		setModal(true);
		init();
    }
     
    private void initComponents() {

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 517, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 381, Short.MAX_VALUE)
        );
        pack();
    }// </editor-fold>                        
    
    private void init(){ // definição dos componentes
		this.getContentPane().setLayout(new BorderLayout());
            PersonAction personAction = new PersonAction();
    
            List pessoa = personAction.consultar();
            
     TableColumnModel columnModel = new DefaultTableColumnModel();
     TableModel model = new DefaultTableModel();

     personTable = new JTable(new DefaultTableModel(new String[] {"Id", "Age", "First Name", "Last Name"}, 0));
     personTable.setName("person");
     personTable.putClientProperty(SwingBinder.COLUMN_NAMES, new String[] {"person_id", "age", "first_name", "last_name"});
     
            panelCentro=new JPanel();

            panelCentro.setVisible(true);
            panelCentro.add(personTable);
            this.getContentPane().add(panelCentro, BorderLayout.CENTER);
        }
    
    
}

Sou iniciante em java e este é meu primeiro uso do JTable + Hibernate + Genesis :oops:
Onde estou errando? Na tela nem chega a mostrar a tabela, mesmo que vazia.

Desde já agradeço!!!

Luiz_Aguiar

gbazilio:
acho q a minha ta certo mas ta errado…
:?: :roll:

mister_m

obattousai:
Olá mister__m
Estou tentando fazer a mesma coisa que o gbazilio…

Respondido aqui.

O

Valeu mesmo, vou dar uma estudada nos materiais.

Obrigado Mr. Mmmmm…
Você realmente é FANTÁSTICOOOO :smiley:

Criado 31 de dezembro de 2006
Ultima resposta 9 de mar. de 2007
Respostas 7
Participantes 4