2012-04-05 69 views
0

这有可能实现这个吗?我有File foo [],它有5个文件的列表。但我只想将foo [0]和foo [3]复制到File bar []中,这样bar []将只有2个元素。如何将数组中的某些文件元素复制到新的文件数组中?

我的代码获取foo []的长度,那么如果所选文件的索引等于我的索引,则将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中选择。从该列表中,我希望用户能够选择要附加到电子邮件的文件。

+1

是明确的:你有当用户选择一些文件JList和你想第二个数组只包含这些文件? – 2012-04-05 03:20:15

+0

@orzechowskid是的,因为我只希望被选中的数组可以连接到电子邮件。为了更加清楚我的理由,请查看Rodricks george发布的如何发送附件到电子邮件的链接:http://www.coderanch.com/t/273794/java/java/send-email-multiple-attachments I'我已经测试过它,但它发送目录中的每个文件。 – SpicyWeenie 2012-04-05 03:23:28

回答

2

根据您的意见,您的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实例

+0

这就是我想要的形式,我现在不得不重写我的其他错误,不过,这对我有很大的帮助。谢谢! :) – SpicyWeenie 2012-04-05 08:14:41

2

如果你调用您的JList getSelectedValues(),您将得到包含当前选择的所有元素的数组:

Object[] selectedObjects = list_fileListing.getSelectedValues(); 

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

    // attach this file 
} 

是这足够了吗?

+0

没有工作......我得到了这个错误异常在线程“AWT-EventQueue-0”java.lang.NullPointerException for循环是,加上“getSelectedValues()已弃用 – SpicyWeenie 2012-04-05 04:10:11

2

由于您的JList.getSelectedValues()已弃用,因此它看起来像您正在使用Java7。请尝试使用getSelectedValuesList()方法。如果您需要阵列,您可以使用list.getSelectedValuesList().toArray()

+0

是啊,我有Java7。我得到:线程“AWT-EventQueue-0”中的异常java.lang.ClassCastException:java.lang.String不能转换为[Ljava.io.File; – SpicyWeenie 2012-04-05 05:48:24

+1

@チョコレート人,这可能是因为你的列表包含字符串对象,并将它转换为文件,你能显示初始化列表的代码吗? – tenorsax 2012-04-05 05:56:02

相关问题