javafx 애플리케이션이 있습니다. 응용 프로그램이 완료까지 실행되는 진행률 표시 줄로 시작하도록 프로그래밍했습니다. 완료되면 창이 닫히고 로그인 창이 열립니다. 로그인하면 로그인 창이 닫히고 기본 창이 열립니다.어떻게 실행중인 작업이 영구적으로 멈추도록 스레드를 멈출 수 있습니까?
하지만 내 응용 프로그램에서는 그런 일이 일어나지 않습니다.
진행률 표시 줄을 0에서 100까지 실행하는 작업을 만들고 스레드에서 실행되도록 작업을 만들었습니다. 작업이 완료되면 창이 닫히고 로그인 창이 열립니다.
내가 겪고있는 문제는 로그인 창을 사용하여 로그인 할 때 기본 창이 열리지 만 로그인 창이 닫히지 않는다는 것입니다.
주 창이 열렸을 때 로그인 창을 닫는 방법을 작성했지만 그 방법은 없습니다.
무엇이 누락 되었습니까?
이
이 당신이 로그인 창을 사용하여 로그인해야합니다 후 스레드Thread thread;
@FXML
private JFXProgressBar progress;
@Override
public void initialize(URL url, ResourceBundle rb) {
progress.setProgress(0.0);
Runnable tasks = new TaskClass();
thread = new Thread(tasks);
thread.start();
}
에 진행 표시 줄을로드하는 작업 클래스
public class TaskClass implements Runnable {
@Override
public void run() {
for (int i = 0; i < 100; i++) {
try {
progress.setProgress(i/100.0);
Thread.sleep(100);
} catch (InterruptedException ex) {
Logger.getLogger(RunningController.class.getName()).log(Level.SEVERE, null, ex);
}
}
Platform.runLater(new Runnable() {
@Override
public void run() {
// this is the method that closes the window on which the progress bar is running
closed(clos);
// this is the method that opens the login
windowloadwindow("/inventory/management/login/InventoryManagementlogin.fxml", "DeMak Inventory");
}
});
}
}
이다, 이것은 일을 의미한다
loadwindow("/inventory/management/ui/Main/main.fxml", "Deemax Inventory"); // a method that opens the main window
closed(closew); // a method that closes the login window
당신은 피할 수'Platform.later()'완전히 사용하여'의 UpdateProgress (...)'(백그라운드 스레드에서 호출 할 수있는), 그리고 작업의 진행 속성에 진행 표시 줄을 바인딩. 이것은 또한'updateProgress()'호출 빈도에 상관없이'Platform.runLater()'에 대한 호출 횟수를 지능적으로 제한하는 장점이 있습니다. –
Nikiforos Archakis, 로그인을 시도했지만 로그인 창이 닫히지 않았습니다. –
James D, 그 뜻을 이해하지 못했습니다. –