私の目標は、「ファイルを開く」ダイアログ ボックスからファイルを選択し、それを読み取り、ファイルの内容に基づいてオブジェクトを描画することです。そのダイアログ ボックスを開く方法を見つけましたが (以下のスケルトン コードを参照)、ファイルを選択する前に PDE プログラムが描画を開始します。描画は選択したファイルの内容に依存するため、null ポインター エラーが発生します。
私の質問は、描画メソッドが開始される前にファイルを選択するにはどうすればよいですか?
ファイル (Amas.in) を setup() で明示的に定義すると、すべて問題なく、プログラムは指定されたファイルに基づいて出力を表示します。
selectInput(...) を使用すると、draw() が開始された後にのみファイル名を尋ねるダイアログ ボックスが表示され、ポインター エラーが発生します。
ファイルを明示的に定義してから selectInput(...) を呼び出すと、プログラムは最初のファイルに従ってオブジェクトの描画を開始し、どの新しいファイルが必要かを尋ねます。ただし、新しいファイルを選択すると、プログラムはその新しいファイルの内容を無視します。
デフォルトの Amas.in と他のファイルの両方が data フォルダーにあります。
私は何を間違っていますか?
アドバイスをよろしくお願いします。
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);
}
}