如何将数据库数据显示到 Swings 中的 JTable(动态)?

发布于 2024-08-31 02:44:38 字数 458 浏览 6 评论 0原文

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

    Criteria criteria=session.createCriteria(User.class);
    //here user.class is pojo class in hibernate.

    List studentlist= criteria.list();

    System.out.println("records"+studentlist);
    //here the data is showing in hibernate console, but how  to represent that data in the format of "jtable".

We are using hibernate in business layer,but the task is,
by using the JTable in Swing to display the dynamic data(Swing) from the database.
code:

    Criteria criteria=session.createCriteria(User.class);
    //here user.class is pojo class in hibernate.

    List studentlist= criteria.list();

    System.out.println("records"+studentlist);
    //here the data is showing in hibernate console, but how  to represent that data in the format of "jtable".

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

疧_╮線 2024-09-07 02:44:38

我们可以从休眠中检索对象列表。要显示 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 的模型

We can retrieve a List of Objects from hibernate. To show the Objects in JTable, just inherited a class from AbstractTableModel and supply getRowCount() ,getColumnCount() and getValueAt() methods. And the getColumnName method is often need to be overrided to show the column name you want, not the X,Y,Z form.
Lets say You have a PERSON table in some database and its corresponding persistent class Person.

Source of 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];
    }
}

Then create a PersonTableModel Object and set the JTable’s model to it

z祗昰~ 2024-09-07 02:44:38

我建议您阅读教程如何使用表格 ,来自 Java。

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

I recommend you read the tutorial How to use tables, from Java.

If you have a more specific need, edit your question to add details.

岁月苍老的讽刺 2024-09-07 02:44:38

我从未使用过休眠,但根据提供的代码,数据库中的数据看起来像是在列表中返回的。因此,您需要创建一个自定义 TableModel 来访问列表中的数据。

BeanTableModel 可能会帮助您。

I've never used hibernate, but based on the code provided it looks like the data from your database is returned in a List. Therefore you will need to create a custom TableModel to access the data in the List.

The BeanTableModel might help you out.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文