我想将数据库中的值显示为jTable

时间:2015-12-22 05:35:50

标签: java database eclipse jtable

我有一个名为employeeRecords的Java程序,我用它在SQL Server数据库中执行CRUD操作。

我有另一个名为Table的程序,它是一个jTable程序。我需要在我的jTable中显示employeeRecords值。我知道如何在textField中显示记录,但不知道如何在jTable列中显示记录。

如果重要的是我使用Eclipse Mars。

2 个答案:

答案 0 :(得分:1)

首先看一下How to Use Tables

答案非常复杂,取决于你想要达到的目标。

我建议首先创建一个简单的POJO来保存数据库中的数据,就个人而言,这使得管理变得更加容易......

public class Employee {
    // Fields, getters and setters
}

接下来,您需要TableModel来管理Employee的所有实例......

public class EmployeeTableModel extends AbstractTableModel {
    private List<Employee> employees;

    public EmployeeTableModel(List<Employee> employees) {
        this.employees = new ArrayList<>(employees);
    }

    @Override
    public int getRowCount() {
        return employees.size();
    }

    @Override
    public int getColumnCount() {
        return how ever many fields you want to display;
    }

    @Override
    public String getColumnName(int column) {
        String name = "??";
        switch (column) {
            case 0:
                name = "What every this column represents"
                break;
                .
                .
                .
        }
        return name;
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        Employee employee = employees.get(rowIndex);
        Object value = null;
        switch (columnIndex) {
            case 0:
                value = employee.getXxx();
                break;
                .
                .
                .
        }
        return value;
    }


}

就个人而言,我发现每个POJO都有一个自定义表格更容易,因为它允许您更轻松地管理各个行/对象,但那就是我

接下来,您需要从数据库加载数据并填充表模型...

public EmployeeTableModel getEmployeeTableModel() throws SQLException {
    Connection con = ...;
    EmployeeTableModel model = null;
    try (PreparedStatement stmt = con.prepareStatement("select * from employeRecords")) {
        try (ResultSet rs = stmt.executeQuery()) {
            List<Employee> employees = new ArrayList<>(25);
            while (rs.next()) {
                Employee employee = new Employee();
                employee.setXxx(rs.getString("Xxx"));
                //...
            }
            model = new EmployeeTableModel(employees);
        }
    }
    return model;
}

最后,您需要将模型应用于JTableModel

的实例
public class SomeUIClass extends JPanel {
    //...
    private JTable table;
    //...

    public void someMethodYouNeedToCallWhenYouWantToReloadTheModel() {
        try {
            table.setModel(getEmployeeTableModel());
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }

答案 1 :(得分:0)

我不知道您是否知道如何访问数据库等,但是要将数据打印到JTable使用此构造函数。  JTable(Vector rowData, Vector columnNames) Constructs a JTable to display the values in the Vector of Vectors, rowData, with column names, columnNames.

请记住rowData参数是Vector of Vector,其中0位是标题下的第一行等。

如果这不能回答你的问题,请更具体一点,我会看到我可以帮助你的事情