Java 如何将数据库数据显示到一个JTable(动态)中?

Java 如何将数据库数据显示到一个JTable(动态)中?,java,hibernate,swing,jtable,Java,Hibernate,Swing,Jtable,我们在业务层中使用了hibernate,但任务是, 使用Swing中的JTable显示数据库中的动态数据(Swing)。 代码: 我建议您阅读Java教程 如果您有更具体的需要,请编辑您的问题以添加详细信息。我建议您阅读Java教程 如果您有更具体的需要,请编辑您的问题以添加详细信息。我从未使用过hibernate,但根据提供的代码,您的数据库中的数据似乎是在列表中返回的。因此,您需要创建一个自定义TableModel来访问列表中的数据 可能会对您有所帮助。我从未使用过hibernate,但根据

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


我建议您阅读Java教程


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

我建议您阅读Java教程


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

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


可能会对您有所帮助。

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


可能对您有所帮助。

我们可以从hibernate检索对象列表。要在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];
    }
}
import org.hibernate.*;
导入org.hibernate.cfg.*;
导入java.util.*;
导入javax.swing.table.AbstractTableModel;
公共类PersonTableModel扩展了AbstractTableModel
{
私有静态最终长serialVersionUID=6105842825518764825L;
私人ArrayList个人主义者;
公共PersonTableModel()
{
超级();
SessionFactory sf=新配置().configure().buildSessionFactory();
Session Session=sf.openSession();
Query q=session.createQuery(“来自个人”);
PersonList=newarraylist(q.list());
session.close();
sf.close();
}
public int getRowCount()
{
return PersonList.size();
}
public int getColumnCount()
{
返回5;
}
公共对象getValueAt(int行索引、int列索引)
{
Person p=PersonList.get(行索引);
对象[]值=新对象[]{p.getId(),p.getFirstname(),p.getLastname(),
p、 getAge(),p.getDescription()};
返回值[列索引];
}
@凌驾
公共字符串getColumnName(int列)
{
字符串[]columnNames=新字符串[]{“id”、“FirstName”、“LastName”、“Age”、“description”};
返回columnNames[列];
}
}

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

我们可以从hibernate检索对象列表。要在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];
    }
}
import org.hibernate.*;
导入org.hibernate.cfg.*;
导入java.util.*;
导入javax.swing.table.AbstractTableModel;
公共类PersonTableModel扩展了AbstractTableModel
{
私有静态最终长serialVersionUID=6105842825518764825L;
私人ArrayList个人主义者;
公共PersonTableModel()
{
超级();
SessionFactory sf=新配置().configure().buildSessionFactory();
Session Session=sf.openSession();
Query q=session.createQuery(“来自个人”);
PersonList=newarraylist(q.list());
session.close();
sf.close();
}
public int getRowCount()
{
return PersonList.size();
}
public int getColumnCount()
{
返回5;
}
公共对象getValueAt(int行索引、int列索引)
{
Person p=PersonList.get(行索引);
对象[]值=新对象[]{p.getId(),p.getFirstname(),p.getLastname(),
p、 getAge(),p.getDescription()};
返回值[列索引];
}
@凌驾
公共字符串getColumnName(int列)
{
字符串[]columnNames=新字符串[]{“id”、“FirstName”、“LastName”、“Age”、“description”};
返回columnNames[列];
}
}

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

+1,链接到教程或特定方法总是值得的。它不仅为这个答案提供了信息,而且还为将来可能出现的问题提供了资源。+1,链接到教程或特定方法总是值得赞赏的。它不仅为这个答案提供了信息,而且还为未来潜在的问题提供了资源。+1用于添加更多细节和可能的解决方案(对于一个非常不具体的问题)。我的想法与我的要求相同。但我无法理解。你能给我发送有关该要求的acutal代码吗。比如:Criteria=session.createCriteria(User.class);List studentlist=criteria.List()//此学生列表可以包含数据(数据库)。String[]columnNames={“员工编号”、“全名”、“用户”、“密码”、“部门”、“电话”}//那么如何创建行数据//你能给我发一些代码或建议吗?很紧急@harish-您的问题没有“向我发送代码”解决方案,因为我们不知道您的全部需求。检查我在回答中给出的教程,因为它包含创建和填充JTable所需的所有信息。这将需要你方的工作,不能用几行代码来回答。+1用于添加更多细节和可能的解决方案(对于一个非常不具体的问题)。你的想法和我的要求是一样的。但我无法理解。你能给我发一份关于该要求的实际代码吗。like:Criteria=session