-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.");

2 つのリストが必要です。最初のものは表示 (および削除) 目的で使用され、もう 1 つは選択したすべてのファイルを圧縮するために使用されます。ファイルを圧縮するには、各ファイルの場所と名前が必要です。しかし、何らかの理由で、ライン

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

行中にエラー「Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException」が生成されます

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

元気です。GUI にはList リストを、郵便番号にはList fileListを使用しています。

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, fileList;// リストを初期化するために必要な問題は次のとおりです。

コードを以下に置き換えます

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

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

私がしたことは:

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