Получить имя файла из JFileChooser без загрузки в память - PullRequest
0 голосов
/ 29 августа 2018

У меня есть JPanel с тремя кнопками J, которые открывают JFileChooser. Когда я выбираю каждый файл, я просто хочу получить путь к файлу, чтобы впоследствии я мог открывать файл f1, f2, f3 один за другим, но не все вместе (т.е. закрывать один, открывать следующий). Есть ли способ получить имя файла без вызова getSelectedFile ()? Это убивает мою программу и просто зависает ...

Спасибо

public void actionPerformed(ActionEvent e) {

    //Handle open button action.
    if (e.getSource() == openActiveSKUsButton) {
        int returnVal = fc.showOpenDialog(UI.this);

        if (returnVal == JFileChooser.APPROVE_OPTION) {

            File file = fc.getSelectedFile(); // this is bad
            ActiveSKUsFilePath = file.getAbsolutePath();
            //This is where a real application would open the file.
            log.append("Active SKUs file selected is: " + file.getName() + "." + newline);
            file = null; //doesn't seem to work
            System.gc(); //ditto as above

        } else {
            //log.append("Open command cancelled by user." + newline);
        }
        log.setCaretPosition(log.getDocument().getLength());

    } 
}

1 Ответ

0 голосов
/ 29 августа 2018

Сохраните ссылку File в переменной экземпляра и используйте ее позже. Это означает, что открытие файла должно быть инициировано другим действием.

public class MyGuiApp {

    private File file1;
    private File file2;

    ...

    // Action listener for file chooser
    public void actionPerformed(ActionEvent e) {

        ...
        file1 = fc.getSelectedFile();
        log.append("Active SKUs file selected is: " + file1.getName());
    }

    // Action listener for opening the file - like pressing a button
    public void actionPerformed(ActionEvent e) {
        // use or open file 1
    }
}
...