【问题标题】:Java - Arraylist contents to display in JtableJava - 要在 Jtable 中显示的 Arraylist 内容
【发布时间】:2013-11-15 18:09:25
【问题描述】:

我正在做一个项目,但我被困在这个领域。我正在从文件中读取文本,并将其保存到数组列表中。问题是文件中的内容出现在 jtable 的一行文本中,但我希望每一行都显示在行中。我正在传递来自另一个类的数据,我知道这是有效的,因为我可以在控制台中一行一行地看到打印出来的内容。我尝试了几种不同的方法,但我的想法已经用完了。任何帮助表示赞赏。

下面是我写的代码。

for (String item : helper.getItems() )
{       
    System.out.println(item);
    storage.add(item);
}

    JTable t1 = new JTable();
    t1.setModel(new DefaultTableModel(
            new Object[][]{
                    {storage.toString()}    
            },
            new String[]{
                    "Tool Equipment"
            }

    ));

【问题讨论】:

  • 您有一个将数据添加到 ArrayList 的循环。你为什么要先这样做?您可以只使用 DefaultTableModel.addRow(..) 方法将数据直接添加到模型中,因此不需要 ArrayList。
  • 感谢您的评论,我不太明白您在说什么。我可以不使用arraylist来显示jtable中的文本吗?
  • 不行,数据需要添加到TableModel中。
  • 所以我将项目添加到 for 循环内的 tablemodel 中,然后将模型设置为 table?
  • 你尝试的时候发生了什么?我希望你没有等我 4 个小时才回复你的问题。;

标签: java arraylist jtable


【解决方案1】:

storage.toString() 将为您提供ArrayList 的字符串表示形式。你想要的大概是List#toArray

【讨论】:

  • 感谢您的回复,您是说要放置 storage.toArray(),因为我已经尝试过了,但运行它时却没有得到任何东西。
【解决方案2】:

使用DefaultTableModel 对象向JTable 添加项目的最佳方法是使用DefaulTableModel.addRow 方法。您需要解析 storage 字符串以区分要放入每一行/列中的值

例如:

DefaultTableModel model=new DefaultTableModel();
// parsing of the storage obj, to get individual values for each col/row
// depending on the structure of storage a looping construct would be beneficial here
String col1= storage.substring(startindex, endindex);
String col2=storage.substring(startindex, endindex);
//add items to the model in a new row
model.addRow(new Object[] {col1, col2});
// if you used a loop to parse the data in storage, end it here
// add model to the table
t1.setModel(model);

【讨论】:

  • 您好,感谢您的回复。我不太确定如何使用 startindex 和 endindex 来做我想做的事?
猜你喜欢
  • 2021-03-01
  • 2018-05-28
  • 2013-01-23
  • 2013-12-18
  • 2018-01-18
  • 2010-10-12
  • 1970-01-01
  • 2013-03-20
  • 1970-01-01
相关资源
最近更新 更多