Text dirStatus = new Text();
String mainPath = new String(); // path to finded dir
Stage preStage = new Stage();
public void preloader() throws IOException {
File [] root = File.listRoots();
Path startPath = root[0].toPath(); // find highest dir
Group preGroup = new Group();
dirStatus.setText("Press to start serch!");
dirStatus.setLayoutX(20);
dirStatus.setLayoutY(100);
Button dirFind = new Button("Serch");
dirFind.setLayoutX(180);
dirFind.setLayoutY(150);
preGroup.getChildren().add(dirStatus);
preGroup.getChildren().add(dirFind);
Scene preScene = new Scene(preGroup, 400, 200);
preStage.setScene(preScene);
preStage.show();
dirFind.setOnAction(new EventHandler() {
@Override
public void handle(Event event) {
Title title = new Title();
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
title.setPriority(Thread.MAX_PRIORITY);
title.run();
mainPath="";
PrintFiles pf = new PrintFiles();
try {
Files.walkFileTree(startPath, pf);
} catch (IOException e) {
e.printStackTrace();
}
if (mainPath!=""){
dirStatus.setText(dirStatus.getText() + " Finded!!!");
}
}
});
}
public class Title extends Thread {
public Title(){
}
public void run() {
System.out.println("Started");
dirStatus.setText("Serch in process...");
Thread.currentThread().interrupt();
}
}
public class PrintFiles extends SimpleFileVisitor<Path> {
@Override
public FileVisitResult postVisitDirectory(Path dir, IOException exc) {
if (dir.endsWith("HUP")){
System.out.println("Finded");
mainPath=""+ dir;
System.out.println(mainPath);
dirStatus.setText(mainPath);
return FileVisitResult.TERMINATE;
}
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc) {
System.err.println(exc);
return FileVisitResult.CONTINUE;
}
}
}
Hellow給大家。 這是我的代碼的一部分,我試着讓它變得更好。在另一個進程或之前更改javaFX中的文本
我需要將字段dirStatus更改爲文本:「正在處理...」,在鼠標點擊按鈕後。
但是在所有情況下,我嘗試在完成PrintFiles類serchig目錄後更改字段dirStatus。
這是線程使用的最後一次嘗試。但它沒有達到目標。 給我一些建議。
謝謝。 你的回答對我來說非常有幫助。 我不知道任何有關任務方法的信息。 這種方法不是我的課程主題。 –