Java JTable和构造函数参数

Java JTable和构造函数参数,java,swing,jtable,defaulttablemodel,Java,Swing,Jtable,Defaulttablemodel,我正在学习如何在Swing中使用JTables。我已经找到了连接数据库并检索结果集的方法。我还可以使用第一个选项显示数据(见下文) a) 我想确保我理解使用/传递TableModel而不是直接传递行和列的想法是为了能够使用AbstractTableModel中可用的内置方法;DefaultTableModel和ListTableModel类 b) 什么是自定义表格模型 到目前为止,我遇到了4种方法: 将列和行作为对象直接传递给JTable构造函数 例: 二,。从实现AbstractTableMo

我正在学习如何在Swing中使用JTables。我已经找到了连接数据库并检索结果集的方法。我还可以使用第一个选项显示数据(见下文)

a) 我想确保我理解使用/传递TableModel而不是直接传递行和列的想法是为了能够使用AbstractTableModel中可用的内置方法;DefaultTableModel和ListTableModel类

b) 什么是自定义表格模型

到目前为止,我遇到了4种方法:

  • 将列和行作为对象直接传递给JTable构造函数
  • 例:

    二,。从实现AbstractTableModel的类创建表模型

    例:


    4.ListTableModel

    当您直接传递数据时,JTable将在内部创建一个DefaultTableModel,您可以通过调用
    table.getModel()
    来获取该模型

    不同的TableModel具有不同的功能,您可以通过创建一个实现TableModel或扩展AbstractTableModel(或DefaultTableModel)的类来实现自己的功能。这背后的想法是,您有时需要的不仅仅是原始表数据

    例如,如果要将对象附着到每行: 您可以编写一个表格模型,每行保存一个对象,并提供类似
    对象getObject(introwindex)
    void setObject(introwindex,object object)
    的方法。 为此,您需要在TableModel中保留一个额外的数组或列表,该数组或列表包含对象,并且始终与行数相同

    另一个原因可能是tablemodel在滚动时加载行数据,或者希望动态显示来自多个数据源的数据


    TableModel不一定要保存数据,它只是将数据提供给JTable。

    您可能希望有一个通读,它将回答您的许多问题
    JTable tab = new JTable(Object [][] rows, Object[] cols);
    
    MyModel model = new MyModel(Object[][] obj1, String[] header);
    
    //MyModel is a class that extends AbstractTableModel. 
    //MyModel has an ArrayList<Object[]> to store obj1[]
    //MyModel implements getRowCount(), getColumnCount() and 
    getValueAt(int rowIndex, int columnIndex) and also getColumnName(int index)
    
    JTable tab = new JTable(model);
    
    DefaultTableModel model = new DefaultTableModel(String data[][],String col[]);
    (or)
    DefaultTableModel model = DefaultTableModel(Vector data, Vector columnNames) 
    
    JTable table = new JTable(model);