繁体   English   中英

如何在JFileChooser窗口中选择多个文件

[英]How to select multiple files in JFileChooser window

我无法弄清楚如何在JFileChooser窗口中一次选择多个文件。 我认为它已经启用,因为我在JFileChooser对象上使用了setMultiSelectionEnabled(true)方法,但是当我尝试实际选择多个时,我做不到。 我尝试单击并拖动,CTRL和箭头键/单击,Alt和箭头键/单击,Shift和箭头键/单击,但还是没有运气。 我怎样才能做到这一点?

我在其中创建JFileChooser的代码:仅使用一个文件时,解析方法可以正常工作。 在JFrame中按下按钮时,将调用此类。

public class FileChooser implements ActionListener, Runnable
{
    private Parser parser = new Parser();
    private static File[] selectedFiles;
    private static File currentSelected;
    private JFileChooser jfc;

    public static File getSelectedFile()
    {
    return currentSelected;
}

public void actionPerformed(ActionEvent actionEvent)
{
        new Thread(this).start();
}

public void run()
{
    if ( Window.bFG5IsPressed() && Window.bFGAIsPressed() )
    {
        jfc  = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory());
        jfc.setMultiSelectionEnabled(true);
        int returnValue = jfc.showOpenDialog(null);

        if (returnValue == JFileChooser.APPROVE_OPTION)
        {
            selectedFiles = jfc.getSelectedFiles();
            for (File e : selectedFiles) {
                currentSelected = e;
                parser.parseAll(e.getAbsolutePath());
            }
        }
    }
    else if ( Window.bFG5IsPressed() )
    {
        jfc  = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory());
        int returnValue = jfc.showOpenDialog(null);

        if (returnValue == JFileChooser.APPROVE_OPTION)
        {
            selectedFiles = jfc.getSelectedFiles();
            for (File e : selectedFiles) {
                currentSelected = e;
                parser.parseFG5(e.getAbsolutePath());
            }
        }

    }
    else if ( Window.bFGAIsPressed() )
    {
        jfc  = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory());
        int returnValue = jfc.showOpenDialog(null);

        if (returnValue == JFileChooser.APPROVE_OPTION)
        {
            selectedFiles = jfc.getSelectedFiles();
            for (File e : selectedFiles) {
                currentSelected = e;
                parser.parseFGA(e.getAbsolutePath());
            }
        }

    }
    else
    {
        JOptionPane x = new JOptionPane();
        x.showMessageDialog(x, "Escolher tipo de arquivo");
        x.setLocation(300,300);
        x.setVisible(true);
    }
}

}

调用setMultiSelectionEnabled(true)。 这是一个正在运行的示例:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.Arrays;

public class MultipleFileChooser extends JFrame {
    public static void main(String[] args) {
        MultipleFileChooser multipleFileChooser = new MultipleFileChooser();
        JFileChooser fileChooser = new JFileChooser();
        fileChooser.setMultiSelectionEnabled(true);
        JButton button = new JButton("Open Files");
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                int choice = fileChooser.showOpenDialog(multipleFileChooser);
                if (choice == JFileChooser.APPROVE_OPTION) {
                    File[] openFiles = fileChooser.getSelectedFiles();
                    System.out.println("Files: " + Arrays.toString(openFiles));
                }
            }
        });
        JPanel panel = new JPanel();
        panel.add(button);
        multipleFileChooser.add(panel);
        multipleFileChooser.setSize(new Dimension(400, 400));
        multipleFileChooser.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        multipleFileChooser.setVisible(true);
    }
}

附上屏幕截图以供OP参考: 在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM