簡體   English   中英

如果打開的文件不是XML,則再次顯示showOpenDialog()

[英]showOpenDialog() again if opened file is not XML

我制作了一個簡單的應用程序,使用JFileChooser僅打開XML文件。 如何反復顯示打開的對話框,直到打開正確的XML文件或按“取消”按鈕?

您可以將文件過濾器添加到文件選擇器,以檢查文件是否為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);

此循環執行以下操作:

  • 它打開文件選擇器並獲取選定的選項
  • 當選擇確定選項時,選中的文件被選中
  • 當選擇“確定”選項但所選文件無效時,進行另一次迭代-否則結束循環(如果選擇了另一個選項(例如“取消”)或文件有效)

繼續打開對話框,直到按“取消”或選擇有效文件為止。 您必須自己實現isValidFile:

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

該解決方案如何解決:它打開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;   
            }
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM