如何在 JFileChooser 保存对话框中处理问号或星号(“?”或“*”)?

     2023-05-07     212

关键词:

【中文标题】如何在 JFileChooser 保存对话框中处理问号或星号(“?”或“*”)?【英文标题】:How do I handle question marks or asterisks ('?' or '*') in JFileChooser save dialog? 【发布时间】:2021-06-07 22:41:59 【问题描述】:

首先我创建一个JFileChooser,然后调用showSaveDialog。如果用户在File Name 输入字段的任何位置输入问号? 或星号*,那么我会得到一些非常奇怪的行为。即,File Name 字段中用户输入的文本被复制到 Files of Type 字段中。

最小的可重现示例(没有导入):

public class ChooserTest 
    static String path;

    public static void main(String[] args) 
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        JButton saveAsButton = new JButton("Save As");
        saveAsButton.addActionListener(e -> saveAs());
        frame.add(saveAsButton);
        frame.pack();
        frame.setVisible(true);
    

    private static void saveAs() 
        JFileChooser jfc = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory());
        int returnState = jfc.showSaveDialog(null);
        if(returnState == JFileChooser.APPROVE_OPTION) 
            path = jfc.getSelectedFile().getAbsolutePath();
            try 
                File f = new File(path);
                FileWriter out = new FileWriter(f);
                out.write("hello world");
                out.close();
             catch (Exception e)
                e.printStackTrace();
            
         else 
            return;
        
    

我已经在两台不同的 Windows 机器上复制了 Java 15 和 16 中的这种行为。在我的代码中,我确实在 path = jfc.getSelectedFile().getAbsolutePath(); 之前验证了用户提供的文本,但是无论我告诉系统做什么,这种行为都会发生,因此它必须在 JFileChooser 返回选项之前发生。

这里是发生了什么的屏幕截图:

如果用户输入了file_name??.txt,那么这就是Files of Type 字段中出现的内容。它再现了用户输入的文本。

最后,我确实找到了 2015 年另一位 SO 用户的两个相关帖子,但这似乎更复杂,我不想破坏他们的问题。

【问题讨论】:

【参考方案1】:

如果 FileChooser 对文件列表进行动态过滤。

如果用户输入“?”然后它将过滤所有文件名与单个字符。

如果用户输入如下内容:“table*”,它将过滤所有以“table”开头的文件。

如果用户输入如下内容:“table?”它将过滤所有以“table”开头的文件以及任何其他字符。

BasicFileChooserUI 类中,当出现“*”或“?”时,FileFilter 会不断用GlobFilter 重置。在文件名中找到字符。

我不知道如何禁用此功能。

【讨论】:

如何使用 JFileChooser 保存文件?

】如何使用JFileChooser保存文件?【英文标题】:HowtosavefileusingJFileChooser?【发布时间】:2011-02-0115:04:57【问题描述】:我的应用程序中有一个名为“另存为”的方法,它将我的应用程序在计算机上的图像保存到文件中。我使用JFile... 查看详情

JFileChooser保存对话框建议文件名[重复]

】JFileChooser保存对话框建议文件名[重复]【英文标题】:JFileChooserSaveDialogSuggestFileName[duplicate]【发布时间】:2012-12-2212:38:35【问题描述】:可能重复:JFileChooser.showSaveDialog(…)-howtosetsuggestedfilename我已经看到这个问题被问了几次,... 查看详情

如何从 JFileChooser(JAVA Swing) 中禁用文件操作、文件选择和过滤面板?

】如何从JFileChooser(JAVASwing)中禁用文件操作、文件选择和过滤面板?【英文标题】:Howcanthedisablefileoperation,fileselectionandfilterpanelfromJFileChooser(JAVASwing)?【发布时间】:2009-04-2809:11:49【问题描述】:我需要在Panel中嵌入JFileChooser对话... 查看详情

如何通过 JFileChooser 将 Icon 对象保存到文件中?

】如何通过JFileChooser将Icon对象保存到文件中?【英文标题】:HowtosaveIconobjectintoafileviaJFileChooser?【发布时间】:2011-12-0500:56:35【问题描述】:我有一个JLabel,其中保存了我的ImageIcon,如下所示:ImageIconimageIcon=sample.map();//amapmethodc... 查看详情

如何使用 JFileChooser 保存 file.txt?

】如何使用JFileChooser保存file.txt?【英文标题】:Howtosavefile.txtwithJFileChooser?【发布时间】:2014-10-0823:16:25【问题描述】:我正在开发记事本项目,想知道如何保存文件.txt,我的问题是,我保持文件打开JFileChooser,在选择了要保... 查看详情

java示例代码_将文本文件保存在JFileChooser给定的路径中

java示例代码_将文本文件保存在JFileChooser给定的路径中 查看详情

如何在 JFileChooser 中显示文件的默认系统图标?

】如何在JFileChooser中显示文件的默认系统图标?【英文标题】:HowtodisplaydefaultsystemiconforfilesinJFileChooser?【发布时间】:2013-07-1121:21:28【问题描述】:如何显示JFileChooser中文件的默认系统图标?即JFileChooser中文件的图标应该与桌... 查看详情

文件对话框

JFileChooser类可以创建文件对话框有下列保存和打开两个方法showSaveDialog(Componenta);showOpenDialog(Componenta);参数a是文件对话框的位置,null是在屏幕的中央,this在窗口中央用户操作对话框的“确定”,“取消”,“关闭”的时候,上面... 查看详情

如何在 Java 9+ 中使用 JFileChooser 显示网络共享?

】如何在Java9+中使用JFileChooser显示网络共享?【英文标题】:HowtodisplaynetworksharesusingJFileChooserinJava9+?【发布时间】:2019-04-1009:42:44【问题描述】:我们软件的用户需要在我们的Javaswing应用程序中浏览Windows10上的网络共享,但是swi... 查看详情

java示例代码_:JFileChooser如何在文本字段中显示所选文件

java示例代码_:JFileChooser如何在文本字段中显示所选文件 查看详情

JFileChooser - 自定义文件名(创建新文件)

】JFileChooser-自定义文件名(创建新文件)【英文标题】:JFileChooser-Customfilename(createnewfile)【发布时间】:2012-12-0607:08:51【问题描述】:我可能在JFileChooserAPI中遗漏了一些明显的东西,但是当我尝试使用JFileChooser保存文件时,我... 查看详情

java用filedialog怎么打开和保存文件

...参考技术A这个你需要看下jdk有些麻烦给你看看我写的吧jFileChooser1.addActionListener(newActionListener()publicvoidactionPerformed(ActionEventarg0)if(jFileChooser1.CANCEL_OPTION==1)if(jFileChooser1.getSelectedFile()!=null)elsejDialog1.dispose();); 查看详情

有没有办法用我的 JfileChooser 中选择的扩展来保存我的 bufferedImage?

】有没有办法用我的JfileChooser中选择的扩展来保存我的bufferedImage?【英文标题】:IsthereawaytosavemybufferedImagewiththeextentionselectedinmyJfileChooser?【发布时间】:2019-04-0314:48:32【问题描述】:我的代码有问题。首先,我创建了一个JfileCh... 查看详情

如何打开保存文件对话框并通过在 libreoffice 中写入字符串来保存文件。下面的代码是在 VBA 中

】如何打开保存文件对话框并通过在libreoffice中写入字符串来保存文件。下面的代码是在VBA中【英文标题】:Howtoopenasavefiledialogueboxandsavethefilebywritingastringintoitinlibreoffice.BelowcodeisinVBA【发布时间】:2014-09-2416:04:24【问题描述】:... 查看详情

java示例代码_如何在JFileChooser OpenDialog中使用两个文件扩展名之一的所有文件

java示例代码_如何在JFileChooser OpenDialog中使用两个文件扩展名之一的所有文件 查看详情

Eclipse RCP:我应该将模型对象保存在哪里以及它们如何与视图对话?

】EclipseRCP:我应该将模型对象保存在哪里以及它们如何与视图对话?【英文标题】:EclipseRCP:WhereshouldIkeepmymodelobjectsandhowdotheytalktotheviews?【发布时间】:2010-09-2114:16:32【问题描述】:在EclipseRCP的处理方式中,我应该将模型对象... 查看详情

如何在不使用 tkinter 的情况下在 python 中打开保存文件对话框

】如何在不使用tkinter的情况下在python中打开保存文件对话框【英文标题】:howtoopenthesavefiledialogboxinpythonwithoutusingtkinter【发布时间】:2021-03-2618:05:09【问题描述】:我正在尝试使用python创建vi编辑器类型的应用程序,它从命令行... 查看详情

vuex动作和对话窗口(代码片段)

我的应用程序具有保存文档的功能,该功能打开一个保存对话框,让用户选择保存文档的位置。由于该函数不仅通过使用对话框处理状态而且还处理UI/UX的一部分,因此在saveDocumentVuex操作中移动该段代码被认为是不好的做法,因... 查看详情