Java 如果打开的文件不是XML,请再次显示OpenDialog()

Java 如果打开的文件不是XML,请再次显示OpenDialog(),java,swing,user-interface,jfilechooser,Java,Swing,User Interface,Jfilechooser,我使用JFileChooser制作了一个只打开XML文件的简单应用程序。在打开正确的XML文件或按“取消”按钮之前,如何反复显示“打开”对话框?您可以向文件选择器添加一个文件过滤器,以检查文件是否为XML文件 当用户选择一个文件时,您检查该文件的内容,如果该文件无效,您只需再次打开文件选择器,例如,在文件有效或用户选择取消选项时退出的循环中 基本上,循环可能如下所示(编写速度很快,可能包含错误): 此循环执行以下操作: 它打开文件选择器并获取所选选项 选择“确定”选项后,选中所选文件 当选择了

我使用
JFileChooser
制作了一个只打开XML文件的简单应用程序。在打开正确的XML文件或按“取消”按钮之前,如何反复显示“打开”对话框?

您可以向文件选择器添加一个文件过滤器,以检查文件是否为XML文件

当用户选择一个文件时,您检查该文件的内容,如果该文件无效,您只需再次打开文件选择器,例如,在文件有效或用户选择取消选项时退出的循环中

基本上,循环可能如下所示(编写速度很快,可能包含错误):

此循环执行以下操作:

  • 它打开文件选择器并获取所选选项
  • 选择“确定”选项后,选中所选文件
  • 当选择了“确定”选项但所选文件无效时,请执行另一次迭代-否则结束循环(如果选择了另一个选项,例如“取消”,或文件有效)

您可以在文件选择器中添加一个文件过滤器,用于检查文件是否为xml文件

当用户选择一个文件时,您检查该文件的内容,如果该文件无效,您只需再次打开文件选择器,例如,在文件有效或用户选择取消选项时退出的循环中

基本上,循环可能如下所示(编写速度很快,可能包含错误):

此循环执行以下操作:

  • 它打开文件选择器并获取所选选项
  • 选择“确定”选项后,选中所选文件
  • 当选择了“确定”选项但所选文件无效时,请执行另一次迭代-否则结束循环(如果选择了另一个选项,例如“取消”,或文件有效)

一直打开对话框,直到按下“取消”或选择有效文件。您必须自己实施isValidFile:

do {
    int returnVal = chooser.showOpenDialog(parent);
} while (returnVal != JFileChooser.CANCEL_OPTION || !isValidFile(chooser.getSelectedFile()));

继续打开对话框,直到按下“取消”或选择有效文件。您必须自己实施isValidFile:

do {
    int returnVal = chooser.showOpenDialog(parent);
} while (returnVal != JFileChooser.CANCEL_OPTION || !isValidFile(chooser.getSelectedFile()));
这个解决方案怎么样: 它打开filechooser并检查它是否不是取消选项。如果成功检查了正确的XML文件,则
中断
while循环

    JFileChooser fc = new JFileChooser();
    int returnVal = -1;

    while (returnVal != JFileChooser.CANCEL_OPTION) {
        returnVal = fc.showOpenDialog(putYourParentObjectHere);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            if (doYourCheckIfCorrectXMLFileWasChosenHere) {
                // do the stuff you want
                break;   
            }
        }
    }
这个解决方案怎么样: 它打开filechooser并检查它是否不是取消选项。如果成功检查了正确的XML文件,则
中断
while循环

    JFileChooser fc = new JFileChooser();
    int returnVal = -1;

    while (returnVal != JFileChooser.CANCEL_OPTION) {
        returnVal = fc.showOpenDialog(putYourParentObjectHere);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            if (doYourCheckIfCorrectXMLFileWasChosenHere) {
                // do the stuff you want
                break;   
            }
        }
    }