我做了一個簡單的應用程序,使用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. Cordova插件InAppBrowser不會再次打開
- 5. WinRT:關閉後再次打開之前打開的文件
- 6. 打開目錄時顯示Electron Dialog/showOpenDialog中的文件
- 7. 如何再次打開相同的pyqt文件
- 8. 如何在JavaScript中再次打開相同的文件?
- 9. IDLE(Python 2.7.5)不再打開.py文件
- 10. draw9patch不再打開圖像文件
- 11. Response.Redirect不再打開網絡文件
- 12. 導航不會再次打開
- 13. 在NetBeans IDE 6.8中打開文件時總是要再次下載文件
- 14. 打開CSV文件,如果是空
- 15. 當它再次打開時,C++覆蓋文本文件
- 16. 寫入文件,然後試圖再次打開它的解析
- 17. ViewPager bug如果我再次打開屏幕
- 18. VBS如果文件打開
- 19. XMLStreamReader的不關閉打開XML文件
- 20. Eclipse不再打開
- 21. 倒帶文件比關閉文件並再次打開文件效率更高?
- 22. 防止文件關聯再次打開應用程序
- 23. 打開txt文件抓住數字+1並再次保存
- 24. 如果我打開xml文件,Emacs顯示中文字符
- 25. 如果文件不存在,請再試一次
- 26. XmlReader讓xml文件打開?
- 27. 從PHP打開XML文件
- 28. 打開1GB xml文件
- 29. 用SAX打開XML文件
- 30. Python XML文件打開
+1對於文件過濾器的建議和解釋。 – 2012-02-01 14:01:31
謝謝托馬斯我說得對 – waqas 2012-02-01 14:55:52