1

各ループで、特定のファイルから情報を収集し、その内容を配列に格納します。配列は、テーブルのループごとに新しい行を作成する必要があります。私の問題は、1行しか作成されないことです。どうすればこれを修正できますか?

for (int i = 0; i < listOfFiles.length; i++) 
    {
        if (listOfFiles[i].isFile()) 
        {
            files = listOfFiles[i].getName();

            SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
            iCount = humanReadableByteCount(listOfFiles[i].length(), true);

            if (files.toLowerCase().endsWith(".mp3"))
            {
                //jTextArea1.append("File name: " + files + " | Last Modified: " + sdf.format(listOfFiles[i].lastModified()) + " | Lenght: " + iCount + "\n");

                Object rowData[] = { files, sdf.format(listOfFiles[i].lastModified()), iCount };
                Object columnNames[] = { "Name", "Last Modified", "Size" };
                DefaultTableModel model = new DefaultTableModel(columnNames, 0);
                model.addRow(rowData);
                jTable1.setModel(model);
            }
        }
    }
4

2 に答える 2

3

ループの外側でモデルを作成します。テーブル モデルもループ外に設定します。

ループ内で行うことは、新しい行をモデルに追加することだけです。

于 2012-10-29T15:08:03.197 に答える
2

ループを繰り返すたびに、新しいモデルを作成します。したがって、毎回、新しい空のモデルがあり、空のモデルに 1 行追加します。

次のようになります。

Object columnNames[] = { "Name", "Last Modified", "Size" };
DefaultTableModel model = new DefaultTableModel(columnNames);
jTable1.setModel(model);
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
for (int i = 0; i < listOfFiles.length; i++) 
    {
        if (listOfFiles[i].isFile() && listOfFiles[i].getName().toLowerCase().endsWith(".mp3")) 
        {
            files = listOfFiles[i].getName();
            iCount = humanReadableByteCount(listOfFiles[i].length(), true);
            model.addRow(new Object[]{ files, sdf.format(listOfFiles[i].lastModified()), iCount });
        }
    }
于 2012-10-29T15:18:14.107 に答える