Olá…
Estou tendo uns probleminhas com uma JTable e o Hibernate. Vejam o seguinte trecho de código:
public class Table {
public Table(){
try{
Session session = HibernateUtility.getSession();
Transaction transaction = session.beginTransaction();
Iterator iterator = session.createQuery(" from Proprietario").list().iterator();
while(iterator.hasNext()){
}
DefaultTableModel model = new DefaultTableModel();
JTable proprietario = new JTable(model);
transaction.commit();
session.close();
}
catch(Exception e){
}
}
Como pode ser observado está incompleto o código porque não sei como fazer para que as colunas e linhas da tabela sejam mostradas. Deveria ser dentro do while ?. Alguém poderia me ajudar?
Até mais
Patty
Eu tenho um exemplinho aqui, beeeeeem simples, que talvez possa te ajudar, veja:
EventViewer.java
package events;
import java.awt.BorderLayout;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ScrollPaneConstants;
import org.hibernate.Session;
import util.HibernateUtil;
@SuppressWarnings("serial")
public class EventViewer extends JFrame {
public EventViewer() {
super("Event Viewer");
this.setLayout(new BorderLayout());
String[] columns = {"Title", "Date"};
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
List events = session.createCriteria(Event.class).list();
MyTableModel model = new MyTableModel(events, columns);
JTable table = new JTable(model);
JScrollPane scroll = new JScrollPane(table);
scroll.setHorizontalScrollBarPolicy(
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scroll.setVerticalScrollBarPolicy(
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
this.getContentPane().add(scroll, BorderLayout.CENTER);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(300, 300);
this.setLocationRelativeTo(null);
this.setVisible(true);
}
public static void main(String[] args) {
new EventViewer();
}
}
MyTableModel
package events;
import java.text.SimpleDateFormat;
import java.util.List;
import javax.swing.table.AbstractTableModel;
@SuppressWarnings("serial")
public class MyTableModel extends AbstractTableModel {
private List linhas;
private String[] colunas;
private SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
public MyTableModel(List linhas, String[] colunas) {
this.linhas = linhas;
this.colunas = colunas;
}
public int getColumnCount() {
return colunas.length;
}
public int getRowCount() {
return linhas.size();
}
public Object getValueAt(int rowIndex, int columnIndex) {
Event event = (Event) linhas.get(rowIndex);
if (columnIndex == 0) return event.getTitle();
else return df.format(event.getDate());
}
}
A classe Event é aquela da documentação do Hibernate, que pode ser encontrada aqui: Chapter 1. Introduction to Hibernate.
Mais sobre JTable: Tutorial sobre JTable - Parte 2: Implementando Seu Modelo.