0

这有可能实现吗?我有一个包含 5 个文件列表的文件 foo[]。但我只想将 foo[0] 和 foo[3] 复制到文件 bar[] 中,这样 bar[] 将只有 2 个元素。

我的代码获取 foo[] 的长度,然后如果所选文件的索引等于 i 的索引,则将 foo[i] 添加到 bar[i]。这是我构建的可能代码:

for(int i = 0; i < foo.length; i++){

    if(list_fileListing.getSelectedIndex() == i){
        bar[i] = foo[i];
    }
}

* list_fileListing.getSelectedIndex() 保存从 JList 中选择的文件列表。* 原因是我有一个在 JList 中可选择的文件列表。从该列表中,我希望用户能够选择要附加到电子邮件的文件。

4

3 回答 3

1

如果你调用getSelectedValues()你的 JList,你会得到一个包含当前选择的所有项目的数组:

Object[] selectedObjects = list_fileListing.getSelectedValues();

for (int i = 0; i < selectedObjects.length; i++)
{
    File aFile = (File)selectedObjects[i];

    // attach this file
}

这足够了吗?

于 2012-04-05T03:34:52.520 回答
1

看起来您正在使用 Java7,因为您已JList.getSelectedValues()弃用。尝试改用getSelectedValuesList()方法。如果你需要一个数组,你可以使用list.getSelectedValuesList().toArray()

于 2012-04-05T04:50:26.147 回答
1

根据您的评论,您JList包含String实例而不是File实例。所以你可以做类似的事情

List<String> selectedFilesAsStrings = list_fileListing.getSelectedValuesAsList();
//selectedFilesAsStrings will never be null, but can be empty
List<File> selectedFiles = new ArrayList<File>( selectedFilesAsStrings.size() );
for( String fileName : selectedFilesAsStrings ){
  selectedFiles.add( new File( fileName ) );
}
File[] bar = selectedFiles.toArray( new File[ selectedFiles.size() ] );

这会将bar数组设置为指向包含所选File实例的数组

于 2012-04-05T06:01:41.890 回答