Java:File[]到JTable

Java:File[]到JTable,java,swing,file,directory,Java,Swing,File,Directory,我正在创建一个musicplayer,其中有一个表,显示文件夹(如播放列表)中的歌曲。 我的问题是,要添加的下一行的结果(名称)与前一行相同 在我的文件夹“tracks”中有track1、track2、track3。 如果我使用: File tracksFolder = new File("tracks"); final File[] tracks = tracksFolder.listFiles(); Vector<Vector<Object>> data = new

我正在创建一个musicplayer,其中有一个表,显示文件夹(如播放列表)中的歌曲。 我的问题是,要添加的下一行的结果(名称)与前一行相同

在我的文件夹“tracks”中有track1、track2、track3。 如果我使用:

File tracksFolder = new File("tracks");
final File[] tracks = tracksFolder.listFiles();

Vector<Vector<Object>> data = new Vector<Vector<Object>>();
Vector<Object> row = new Vector<Object>();

for (int i = 0; i < tracks.length; i++) {
    System.out.println(tracks[i]);
    row.add(tracks[i].toString());
    data.add(row);
}

Vector<String> headers = new Vector<String>();
headers.add("Song");

final JTable table = new JTable( data, headers );
// some more code
但是我的桌子:

tracks/track 1.wav
tracks/track 1.wav
tracks/track 1.wav

最奇怪的是,它在我的控制台中工作

对每一行重复使用
向量对象。您只是将条目添加到已经存在的行中;渲染器显然显示了
向量的第一个条目

解决方案:移动行的创建
Vector row=new Vector()
在循环内为每行创建一个新循环


或者更好的方法是,阅读表格模型并使用适当的表格模型。事实上,一旦您了解了基本知识,就不需要太多的工作。

您可以为每一行重用
向量对象。您只是将条目添加到已经存在的行中;渲染器显然显示了
向量的第一个条目

解决方案:移动行的创建
Vector row=new Vector()
在循环内为每行创建一个新循环


或者更好的方法是,阅读表格模型并使用适当的表格模型。事实上,一旦您了解了基本知识,就不需要太多的工作。

您可以为每一行重用
向量对象。您只是将条目添加到已经存在的行中;渲染器显然显示了
向量的第一个条目

解决方案:移动行的创建
Vector row=new Vector()
在循环内为每行创建一个新循环


或者更好的方法是,阅读表格模型并使用适当的表格模型。事实上,一旦您了解了基本知识,就不需要太多的工作。

您可以为每一行重用
向量对象。您只是将条目添加到已经存在的行中;渲染器显然显示了
向量的第一个条目

解决方案:移动行的创建
Vector row=new Vector()
在循环内为每行创建一个新循环


或者更好的方法是,阅读表格模型并使用适当的表格模型。事实上,一旦你了解了基本知识,这项工作就少了很多。

让调试器成为你的朋友。看看你能看到多少tracksFolder.listFiles()返回的文件?我不完全确定你的意思,但我放了:System.out.println(tracksFolder.listFiles().toString());它给了我[Ljava.io.File;@d8f459,只有一行。调试允许你对代码进行逐步评估。如果你使用eclipse,请单击“让调试器成为你的朋友”。看看你能看到多少文件tracksFolder.listFiles()返回?我不完全确定你的意思,但我输入:System.out.println(tracksFolder.listFiles().toString()),它给了我[Ljava.io.File;@d8f459,这只是一行。调试允许您逐步评估代码。如果您使用的是eclipse,请单击“让调试器成为您的朋友”。看看您可以看到多少文件tracksFolder.listFiles()返回?我不完全确定你的意思,但我放了:System.out.println(tracksFolder.listFiles().toString()),它给了我[Ljava.io.File;@d8f459,仅一行。调试允许您对代码进行逐步评估。如果您使用eclipse,请单击“使调试器成为您的朋友”。看看您可以看到多少文件tracksFolder.listFiles()返回?我不完全确定您的意思,但我输入:System.out.println(tracksFolder.listFiles().toString());它给了我[Ljava.io.File;@d8f459,仅一行。调试允许您对代码进行逐步评估。如果您使用的是eclipse,请单击完成。谢谢。完成了。谢谢。完成了。谢谢。完成了。完成了。谢谢。完成了。谢谢。
tracks/track 1.wav
tracks/track 1.wav
tracks/track 1.wav