現在のプロジェクトの一部は、.txtログファイルを読み込み、そのログファイルが通常のパスに存在しない場合、JavaFX FileChooser 、ユーザーがファイルを指すようにします。しかし、現在の状態では、ファイルチューザーウィンドウがポップアップし、.txtファイルの場所を指し示すと、プログラム全体がアイドル状態になります。私は、ファイルへのパスを必要とする別のクラスにおける方法でJavaFX FileChooserは、ウィンドウが閉じられた後、他のコードをすべて停止します。
public class GetDirectory extends Application {
@Override
public void start(final Stage primaryStage) {
FileChooser fileChooser = new FileChooser();
FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("TXT files (*.txt)", "*.txt");
fileChooser.getExtensionFilters().add(extFilter);
File file = fileChooser.showOpenDialog(primaryStage);
main.gamedata.LogReader logReader = new LogReader();
logReader.setPathTemp(file.getAbsolutePath());
primaryStage.close();
}
}
:アプリケーションを拡張するクラスで
private List<String> getHearthstoneLogContent(String pathToFile) {
try {
File file = new File(pathToFile);
if (file.exists() && !file.isDirectory()) {
return Files.readAllLines(Paths.get(pathToFile));
} else {
// The out_log.txt file does not exist, we should let the user choose the path.
Application.launch(GetDirectory.class);
System.out.println("sup");
return Files.readAllLines(Paths.get(pathTemp));
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
しかし「SUP」はに印刷されることは決してありませんコンソール。
は私は
を試してみましたが、私は、アプリケーションが閉じないので、それがかもしれないと思ったので、私が使用してみました:
primaryStage.close();
PlatformImpl.tkExit();
Platform.exit();
をしかし、それは生成するので、我々はそれを使用することはできませんIllegalStateException:ツールキットが終了しました。私は唯一のような小さなタスクのためにそれを必要とするので、私はしたいがJavaFXの内部のすべての私のコードをラップしていない
を行うにはしたくない何
。
あなたが問題になっているプロジェクトを詳しく見てみたい場合: http://github.com/nymann/DeckSniffer/
(打ち上げを呼び出す方法を[への回答を参照してください)ONCよりe in java](http://stackoverflow.com/questions/24320014/how-to-call-launch-more-than-once-in-java)を参照してください。それはあなたの問題を解決するのに役立ちますか? – jewelsea
あなたが私の問題を解決したものに興味があるなら、私の広範な質問に協力してくれてありがとう、あなたは私の追加された「答え」/説明を見ることができます:) – Akudo