我正在尝试为我的JTable创建自己的自定义TableModel(因为我想将JCheckBox的一行合并到我的表中)。 JScrollPane也是如此。在我试图合并JCheckBox和自定义AbstractTableModel之前,如果我使用默认(Object [] [],Object [])构造函数,则JTable将显示正常。我在Sun的JTable教程中读到,那些构造函数使用默认方式将所有数据视为字符串。获取带有自定义表模型的JTable以显示在JScrollPane中
然后我创建我的自定义AbstractTableModel上,并从这个去:
JTable table = new JTable(dataArray, col);
这样:
JTable table = new JTable();
我假定这将呼叫尝试与定制类创建的JTable它扩展了AbstractTableModel,但现在没有在JScrollPane中显示出来。
我用错了吗?我几乎从Sun教程拷贝了代码,只改变了涉及的数据文件的名称。我也把这个方法放在同一个类中。有没有其他方法来确保您的表格是使用您的自定义表格模型创建的?任何见解将不胜感激。
我想这就是我所困惑的。 Sun网页上的JTable信息指出: 有两个直接接受数据的JTable构造函数(SimpleTableDemo使用第一个): JTable(Object [] [] rowData,Object [] columnNames) JTable(Vector rowData, Vector columnNames) 然后它声明: 这些构造函数的优点是它们易于使用。但是,这些构造函数也有缺点: 它们将所有数据类型视为相同(如字符串)。 – MarcZero 2010-02-14 01:37:24
所以阅读,我的印象是,我必须创建一个扩展AbstractTableModel的自定义类,并且不知何故,我创建的表将使用它而不是默认的构造函数。如果我使用JTable(Object [] [],Object [])构造函数,它将每个单元格视为字符串,因此我“假设”调用没有构造函数的方法:JTable()将使用我创建的自定义单元格,但我的屏幕现在是空白的。我可以回到默认的构造函数,它显示得很好,但我似乎无法让它使用我的自定义表模型。 – MarcZero 2010-02-14 01:37:44
@MarcZero:查看我答案中的编辑。 (如果没有意义,可能会发布一些更多的代码,我觉得这种感觉可能会在你想要做的事情中错过某些东西......) – Ash 2010-02-14 02:02:43