如果打开的文件不是XML,则再次显示showOpenDialog()

时间:2012-02-01 13:41:18

标签: java swing user-interface jfilechooser

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

3 个答案:

答案 0 :(得分:3)

您可以向文件选择器添加文件过滤器,以检查该文件是否为xml文件。

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

基本上,循环可能看起来像这样(快速写入并可能包含错误):

int option = CANCEL_OPTION;
boolean fileIsValid = false;
do {
 option = filechooser.showOpenDialog(); //or save?
 if( option == OK_OPTION ) {
    fileIsValid = isValid( filechooser.getSelectedFile()); //implementation of isValid() is left for you
 }
} while( option == OK_OPTION && !fileIsValid);

此循环执行以下操作:

  • 打开filechooser并获取所选选项
  • 选择“确定”选项时,将选中所选文件
  • 当选择了OK选项但所选文件无效时,再进行一次迭代 - 否则结束循环(如果选择了另一个选项,例如CANCEL或文件有效)

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

这个解决方案怎么样: 它打开filechooser并检查它是否不是CANCEL_OPTION。如果您对正确的XML文件的检查成功,那么您break 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;   
            }
        }
    }