【问题标题】:How to get all JTable rows into a String Array?如何将所有 JTable 行放入字符串数组?
【发布时间】:2019-08-21 13:01:05
【问题描述】:

所以我的程序中有一个有 4 列的 JTable

ID(int) -- 名称(string) -- 数量(int) -- Usage(int)

每次填充 JTable 时,它​​都有不同数量的数据。我想做的是从表中获取所有数据(IE X 行数可以说是 5)并将它们全部保存到字符串数组中;或者如果你有更好的方法。

最终我想获取表格数据并将其保存到文本文件中。我查看了其他 SOF 问题并看到了一个对象方法,但我不确定它是否符合我的要求。

想法?

编辑:当前代码(工作但看起来很脏;是否正确?)

String[][] tableString = new String[table_Drops.getRowCount()][table_Drops.getColumnCount()];
    for (int i = 0; i < table_Drops.getRowCount(); i++) {
        tableString[i][0] = String.valueOf(table_Drops.getValueAt(i, 0));
        tableString[i][1] = String.valueOf(table_Drops.getValueAt(i, 2));
        tableString[i][2] = String.valueOf(table_Drops.getValueAt(i, 3));
        tableString[i][3] = String.valueOf(table_Drops.getValueAt(i, 4));
    }

【问题讨论】:

  • 您可以使用嵌套循环缩短它,如this answer 所示。似乎与您所做的大致相似。
  • Ultimately I want to take the table data and save it to a text file - 那么为什么要先将其保存到字符串数组中。那是额外的处理。只需从表中获取数据并将其写入循环中的文件即可。

标签: java swing jtable


【解决方案1】:

您的代码应该可以工作,唯一不干净的部分是您在访问JTable 时拥有的幻数。您可以为此使用嵌套循环。

使用FileWriter 直接将数据写入File

private static void writeTableDataByRowAmount(JTable table, int rows) throws IOException
{

    String pathToFile = "C:\\Users\\bob\\Desktop\\file.txt";
    String text = "";

    for(int i=0 ; i<rows ; i++) 
    {
        for(int j=0 ; j<table.getColumnCount() ; j++)
        {
            text += table.getValueAt(i, j);
            text += " ";
        }
    }

    BufferedWriter writer = new BufferedWriter(new FileWriter(pathToFile));
    writer.write(text);
    writer.close();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多