我的目標是從「文件打開」對話框中選擇一個文件,閱讀和借鑑基於文件的內容對象 。 我找到了打開該對話框的方法(請參閱下面的框架代碼),但是PDE程序啓動 之前我可以選擇文件。由於圖形取決於所選文件的 內容,因此我收到空指針錯誤。處理2.0 - 打開文件對話框
我的問題是如何在繪製方法開始之前選擇文件?
如果我在setup()中明確定義我的文件(Amas.in),一切都很好, 程序會根據給定的文件顯示我的輸出。
如果我使用selectInput(...),我只得到對話框詢問我的文件名 在draw()已經啓動後,導致指針錯誤。
如果我明確地定義了我的文件,然後調用selectInput(...),該 程序開始根據初始文件圖形對象,然後問我,我想這 新的文件;但是,在選擇我的新文件後,程序 將忽略該新文件的內容。
兩個默認Amas.in和我的其他文件在數據文件夾。
我在做什麼錯?
在此先感謝您的任何建議。
String myInputFile ;
void setup() {
selectInput("Select a file : ", "fileSelected");
String[] lines = loadStrings("Amas.in"); // works
//String[] lines = loadStrings(myInputFile); // doesn't work
}
void draw() {
ellipse(mouseX, mouseY, 9, 9);
println("Selected at this point " + myInputFile);
}
void fileSelected(File selection) {
if (selection == null) {
myInputFile = "Amas.in" ;
println("Default file is opened : " + myInputFile);
} else {
myInputFile = selection.getAbsolutePath() ;
println("User selected " + myInputFile);
}
}
感謝您的反饋! – Eric
感謝您的反饋!問題是,那就是問題,程序不會等待對話框的答案繼續,所以如果myInputFile爲null,則會出現錯誤。瞭解我的意思的最好方法是創建一個包含兩個文件(Amas3d.in和另一個文件)的數據文件夾,其內容與此骨架代碼無關並運行它。事實是draw()在對話框的結果已知之前就開始了。進行抽獎測試會浪費CPU。在運行draw()之前,必須有一種方法來等待對話框的答案。我知道的所有其他語言都這樣做。 – Eric
在這裏,現在我想我理解你,你需要考慮兩個不同的東西,filePath和fileContents。我再次編輯上面的代碼,檢查出來; –