-2

我有一个非常简单的代码:

private final JFileChooser chooser;
private List list, fileList;

//some codes

int returnVal = chooser.showDialog(CountdownTimer.this, "Select Files");

    if(returnVal==JFileChooser.APPROVE_OPTION) {
        File[] file = chooser.getSelectedFiles();

        System.out.println("Selected files:");
        for(int i=0; i<file.length; i++) {
            list.add(file[i].getName());
            fileList.add(file[i].getAbsolutePath());
            System.out.println("list["+i+"] "+file[i].getName());
            System.out.println("fileList["+i+"] "+file[i].getAbsolutePath());
        }

    }
    else System.out.println("No selection.");

我需要两个清单。第一个将用于查看(和删除)目的,而另一个用于压缩所有选定的文件。在压缩文件中,我需要每个文件的位置和名称。但由于某种原因,这条线

    fileList.add(file[i].getAbsolutePath());

生成错误“线程中的异常“AWT-EventQueue-0”java.lang.NullPointerException”,而该行

    list.add(file[i].getName());

做得很好。我正在使用GUI的列表列表和邮政编码的列表文件列表。

4

3 回答 3

2

我没有看到任何地方fileList(或list)像这样被实例化:

fileList = new ArrayList<String>();

提示:您应该认真查看 Java 泛型并像这样声明您的列表:

private List<String> list, fileList;

使其成为List只能包含String对象的类型。

于 2013-09-28T15:04:02.017 回答
0

我所做的是:

    private List list;
    private ArrayList<String> fileList = new ArrayList<String>();
于 2013-09-28T23:39:43.727 回答
0

private List list, fileList;// 这里是你需要初始化List的问题。

用下面的代码替换

private List<String> list new ArrayList<String>();

private List<String> fileList new ArrayList<String>();
于 2013-09-28T15:07:51.623 回答