StackOverflow Passing Parameters JavaFX FXMLに関する別の回答のアドバイスに従いましたが、プログラムを実行しようとすると、nullポインター例外が発生しました。
新しいワーカーを作成してスレッドを開始し、プロファイラーダイアログを表示しようとするコードがあります。ただし、このダイアログは正しく開きません。
@FXML
private void profilePDBFoldertoCSVAction(ActionEvent e) {
PDBProfilerOperator worker = new PDBProfilerOperator();
FileChooser fc = new FileChooser();
DirectoryChooser dc = new DirectoryChooser();
Stage s = new Stage();
worker.setPdbsdirectory(dc.showDialog(s));
worker.setOutputCSV(fc.showSaveDialog(s));
Thread th = new Thread(worker);
th.setDaemon(true);
th.start();
worker.showProfilerDialog(worker);
}
showProfilerDialogは次のとおりです。
public Stage showProfilerDialog(PDBProfilerOperator operator) {
FXMLLoader loader = new FXMLLoader(getClass().getResource("/pdpro/gui/dialogues/dataset/ProfilingProgress.fxml"));
ProfilingProgressController controller = loader.<ProfilingProgressController>getController();
controller.initProgress(operator);
Parent root = null;
try {
root = (Parent) loader.load();
} catch (IOException ex) {
Logger.getLogger(PDPro.class.getName()).log(Level.SEVERE, null, ex);
}
Scene scene = new Scene(root);
Stage stage = new Stage();
stage.setScene(scene);
stage.setTitle("Profiling Progress");
stage.show();
return stage;
}
そして、initProgressは次のとおりです。
public void initProgress(PDBProfilerOperator operator) {
this.profilingFiles.progressProperty().bind(operator.progressProperty());
}
コントローラがNullのままであるため、initProgressを実行しようとするとNullPointerExceptionが発生します。このエラーを修正するにはどうすればよいですか?
ありがとう!