我做了一個簡單的應用程序,使用JFileChooser
僅打開XML文件。我如何一次又一次地顯示打開的對話框,直到我打開正確的XML文件或按取消按鈕?如果打開的文件不是XML,再次showOpenDialog()
0
A
回答
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);
這個循環將執行以下操作:
- 它打開文件選擇並獲取所選擇的選項
- 當選擇了OK選項時,選中的文件被檢查
- 當選擇了OK選項但所選文件無效時,執行ano迭代 - 否則結束循環(如果另一個選項,例如取消,已選擇或文件有效)
0
保持打開對話框,直到按下取消或選擇了有效文件。你必須實現isValidFile自己:
do {
int returnVal = chooser.showOpenDialog(parent);
} while (returnVal != JFileChooser.CANCEL_OPTION || !isValidFile(chooser.getSelectedFile()));
0
這個怎麼樣解決方法: 它打開文件選擇並檢查它不是一個CANCEL_OPTION。如果您檢查了正確的XML文件是成功的,那麼您的while循環就是break
。
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;
}
}
}
相關問題
- 1. 如果我們打開一個文件,當用戶打開相同的文件時不會再次打開
- 2. 如果再次打開文件,則會出現錯誤
- 3. 打開XML,修改並再次保存
- 4. 打開目錄時顯示Electron Dialog/showOpenDialog中的文件
- 5. 爲什麼showOpenDialog()打開更多文件選擇器?
- 6. 導航不會再次打開
- 7. 在NetBeans IDE 6.8中打開文件時總是要再次下載文件
- 8. 打開CSV文件,如果是空
- 9. 當它再次打開時,C++覆蓋文本文件
- 10. 寫入文件,然後試圖再次打開它的解析
- 11. VBS如果文件打開
- 12. XMLStreamReader的不關閉打開XML文件
- 13. Eclipse不再打開
- 14. 倒帶文件比關閉文件並再次打開文件效率更高?
- 15. 防止文件關聯再次打開應用程序
- 16. 打開txt文件抓住數字+1並再次保存
- 17. 如果文件不存在,請再試一次
- 18. 打開1GB xml文件
- 19. 打開外部XML文件
- 20. 從PHP打開XML文件
- 21. XmlReader讓xml文件打開?
- 22. C多次打開文件
- 23. 如何在文件不再打開時立即得到通知?
- 24. 如何在vscode中重新打開上次打開的文件
- 25. 熱鍵被再次打開工作簿
- 26. 檢查工作簿是否存在,如果是,則檢查它是否打開。如果打開,然後激活,如果關閉再打開它
- 27. 關閉Eclipse編輯器,如果文件打開兩次
- 28. Eclipse IDE與Android - 第一次打開XML文件時的異常
- 29. 如何打開ms項目xml文件
- 30. 如何用Excel打開XML文件?
+1對於文件過濾器的建議和解釋。 – 2012-02-01 14:01:31
謝謝托馬斯我說得對 – waqas 2012-02-01 14:55:52