如何在摇摆中将数据库数据显示为jtable(动态)!

时间:2010-05-03 09:02:38

标签: java hibernate swing jtable

我们在业务层使用hibernate,但任务是, 通过在swing中使用jtable来显示数据库中的动态数据(波动)。 代码:

标准条件= session.createCriteria(User.class);

//这里的user.class是hibernate中的pojo类。

列出studentlist = criteria.list();

的System.out.println( “记录” + studentlist);

这里的数据显示在hibernate控制台中,但是如何以“jtable”的格式表示数据。

3 个答案:

答案 0 :(得分:2)

我们可以从休眠中检索一个对象列表。要在JTable中显示对象,只需从AbstractTableModel继承一个类,并提供getRowCount(),getColumnCount()和getValueAt()方法。并且通常需要覆盖getColumnName方法以显示所需的列名称,而不是X,Y,Z形式。 假设您在某个数据库中有一个PERSON表及其对应的持久类Person。

PersonTableModel.java的来源:

import org.hibernate.*;
import org.hibernate.cfg.*;
import java.util.*;
import javax.swing.table.AbstractTableModel;



public class PersonTableModel extends AbstractTableModel
{
    private static final long serialVersionUID = 6105842825518764825L;
    private ArrayList<Person> PersonList;

    public PersonTableModel()
    {
        super();
        SessionFactory sf=new Configuration().configure().buildSessionFactory();
        Session session=sf.openSession();

        Query q=session.createQuery("from Person");
        PersonList=new ArrayList<Person>(q.list());

        session.close();
        sf.close();
    }

    public int getRowCount()
    {
        return PersonList.size();
    }

    public int getColumnCount()
    {
        return 5;
    }

    public Object getValueAt(int rowIndex, int columnIndex)
    {
        Person p=PersonList.get(rowIndex);
        Object[] values=new Object[]{p.getId(),p.getFirstname(),p.getLastname(),
                p.getAge(),p.getDescription()};
        return values[columnIndex];
    }

    @Override
    public String getColumnName(int column)
    {
        String[] columnNames=new String[]{"id","FirstName","LastName","Age","description"};
        return columnNames[column];
    }
}

然后创建一个PersonTableModel对象并将JTable的模型设置为

答案 1 :(得分:1)

我建议您阅读Java中的教程How to use tables

如果您有更具体的需求,请编辑您的问题以添加详细信息。

答案 2 :(得分:1)

我从来没有使用过hibernate,但是基于提供的代码,它看起来像是在List中返回数据库中的数据。因此,您需要创建一个自定义TableModel来访问List中的数据。

BeanTableModel可能会帮助你。