Сорта нового для Javafx. Я сталкиваюсь с проблемой, когда в своем классе контроллера для моей основной стадии я пытаюсь: после нажатия кнопки запустить задержку, которая откроет новую стадию.
Проблема возникает при загрузке файла FXML в событии действия кнопки и в части run () планировщика, которую я использую для задержки.
Я не могу выбросить исключение в run (), потому что оно конфликтует само с собой?
И я не могу поймать его в родительском корне, выполнив:
Parent root = null;
try {
root = FXMLLoader.load(getClass().getResource("Popup.fxml"));
} catch (IOException e) {
e.printStackTrace();
}
потому что это просто не будет работать. Я думаю, что подхожу к этому плохо или просто неправильно.
Я не могу заставить это работать. Этап работает нормально только при нажатии кнопки, но мне нужна задержка.
Код для класса контроллера:
public class Controller implements Initializable {
public static int seconds;
public static boolean yes = false;
public String strtime = String.format("Current Date/Time : %tc", new Date());
@FXML
Button remind;
@FXML
Label secondsuntil,date;
@FXML
TextField Day, Minute, remindname;
@FXML
private Button Butt;
static String Nameoftask;
int days, minutes;
@Override
public void initialize(URL location, ResourceBundle resources) {
// TODO Auto-generated method stub
date.setText(strtime);
}
@FXML
private void handleButtonAction(ActionEvent actionEvent) throws IOException {
final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
ScheduledFuture<?> countdown = scheduler.schedule(new Runnable() {
@Override
public void run(){
Stage primaryStage = new Stage();
Parent root = FXMLLoader.load(getClass().getResource("Popup.fxml"));
primaryStage.setTitle(Nameoftask);
primaryStage.initModality(Modality.NONE);
primaryStage.setScene(new Scene(root, 200,50));
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
double width = screenSize.getWidth();
double height = screenSize.getHeight();
primaryStage.setX(width);enter code here
primaryStage.setY(height*-1);
primaryStage.show();
try {
FXMLLoader loader = new
FXMLLoader(getClass().getResource("Popup.fxml"));
loader.setController(new Controller());
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}}, 1, TimeUnit.SECONDS);
}
}