我有一个问题,从一个带有BD或数组的FOR初始化JTable。
我的问题是例子tableFilterDemo.java,我需要这个功能,但是当我想要加载我的BD或数组列表的数据时,我遇到了问题。
我需要用FOR加载对象数组来获取文件的所有行或表的所有行
private Object[][] data = {
{ "Mary", "Campione", "Snowboarding"},
{ "John", "guifru", "skyiin"},};
你总是可以使用DefaultTableModel,它使用Vector of Vectors来保存TableModel中的数据。因此,您可以为表中的每一行创建一个Vector,并将每一列添加到Vector中。然后将行向量添加到第二个向量。这样就不需要预先硬编码数组的大小。表从数据库显示如何使用这种方法。
如果你想显示存储在ArrayList中的自定义对象,你也可以使用自定义TableModel。行表模型为在ArrayList中存储对象提供了一些通用的支持。您还需要查看BeanTableModel
以获得完整的实现和如何执行自定义实现的进一步示例。
有两种方法:
- 您通过调用正确的构造函数(这是
JTable(Object[][] rowData, Object[] columnNames)
)将对象直接设置为JTable
,这是非常简单和良好的,但只是管理静态表 - 你使用一个模型,就像你正在谈论的例子一样:你使用一个扩展
AbstractTableModel
的类,在这个类中你覆盖正确的方法来映射二维集合到正确的行为。
我不确定是否理解了你的问题。无论如何,如果你的表有3列并且你已经定义了表模型就像这里定义的那样,你需要迭代你的数组并以这种方式将值放入表中:
for(int i=0; i < data.length; i++){
for(int j=0; j < data[i].length; j++){
table.setValueAt(data[i][j], i, j);
}
}
这是方法的声明:setValueAt(对象值,整行,整列)
如果你想把数组列表转换成数组,你可以:
ArrayList<String> arrayList;
String[] data = new String[arrayList.size()];
data = arrayList.toArray(data);
再见卢卡