从JFileChooser获取文件名而不加载到内存

时间:2018-08-28 23:22:24

标签: java swing jfilechooser

我有一个带有三个JButton的JPanel,它们可以打开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 :(得分:0)

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
    }
}