如何将java中的文件选择器限制为特定文件

jul*_*ihx 13 java swing jfilechooser

private void openMenuActionPerformed(java.awt.event.ActionEvent evt) {

    DBmanager db = new DBmanager();
    if (!db.getCurrentUser().equals("Admin")) {
        JOptionPane.showMessageDialog(this, "You are Not Allowed to Run Applications");
        JFileChooser fileChooser = new JFileChooser();
        fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
        fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("PDF Documents", "pdf"));
        fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("MS Office Documents", "docx", "xlsx", "pptx"));
        fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("Images", "jpg", "png", "gif", "bmp"));
        fileChooser.setAcceptAllFileFilterUsed(false);
        int returnVal = fileChooser.showOpenDialog(this);

        if (returnVal == JFileChooser.APPROVE_OPTION) {
            File file = fileChooser.getSelectedFile();

            if (Desktop.isDesktopSupported()) {
                try {
                    Desktop.getDesktop().open(file);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    } else if (db.getCurrentUser().equals("Admin")) {
        JFileChooser fileChooser = new JFileChooser();
        fileChooser.setAcceptAllFileFilterUsed(true);
        int returnVal = fileChooser.showOpenDialog(this);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            File file = fileChooser.getSelectedFile();
            if (Desktop.isDesktopSupported()) {
                try {
                    Desktop.getDesktop().open(file);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }// TODO add your handling code here:
}
Run Code Online (Sandbox Code Playgroud)

嗨伙计....我正在尝试通过设置过滤文件过滤器中的文件fileChooser.setAcceptAllFileFilterUsed(false);.在"所有文件"选项,从消失FileChooser,但所有文件保持可见,除非您选择从PDF文档中,微软Office或images.I一个选项,希望有在打开文件选择器,只有我的3个自定义过滤器.

Jos*_*h M 15

例如,如果要过滤JFileChooser以严格显示最常见的图像文件,则可以使用以下内容:

FileNameExtensionFilter filter = new FileNameExtensionFilter("Image Files", "jpg", "png", "gif", "jpeg");
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileFilter(filter);
Run Code Online (Sandbox Code Playgroud)

第一个参数是描述(在底部选择时显示的内容),第二个参数是非正式文件扩展名.