Как определить время простоя в Javafx

Я ищу пример того, как справляться с временем простоя в javafx, и нашел этот идеальный ответ время простоя в javafx. Но как я могу добавить это в свой класс контроллера, потому что я создаю все в классе Fxml и вызываю это так:

FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/sample.fxml"));

поэтому мой вопрос в том, как заставить его работать с монитором простоя регистрации и как я создаю монитор простоя

public class LoginController {

static final Logger logger = Logger.getLogger(Controller.class.getName());

@FXML
private ResourceBundle resources;

@FXML
private URL location;

@FXML
private AnchorPane anch;

@FXML
private TextField machineNumberField;

@FXML
private Label label;

private Label labelwrong = new Label();

private static Integer machineNumber;

public static Integer getMachineNumber() {
    return machineNumber;
}

public static void setMachineNumber(Integer machineNumber) {
    LoginController.machineNumber = machineNumber;
}

@FXML
void initialize() {}

@FXML
void onEnterMachineNumber(ActionEvent event) throws IOException {
    PlatformHelper platformHelper = new PlatformHelper();
    String machineNumber = machineNumberField.getText();

    if (!machineNumber.isEmpty() && machineNumber.contains("$")) {
        DbConnection dbConnection = new DbConnection();
        try {
            dbConnection.Connect();
            FileReaderWriter fileReaderWriter = new FileReaderWriter("thread");
            if(fileReaderWriter.isCacheFileNotEmpty()) {
                fileReaderWriter.copyCacheFile();
                fileReaderWriter.flushStorageFile(null);
                fileReaderWriter.start();
            }
        } catch (SQLException e) {
            logger.error("SQL Exception " + machineNumberField.getText() + "\n" + e.getMessage());
        }
        try {
            String machinenr = machineNumber.split("\\$")[1];
            setMachineNumber(Integer.parseInt(machinenr));
            FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/sample.fxml"));
            Parent root = fxmlLoader.load();
            Controller controller = fxmlLoader.getController();
            controller.setMachineNumber(getMachineNumber());

            anch.getChildren().clear();
            anch.getChildren().add(root);
        } catch (NumberFormatException e) {
            platformHelper.displayWarning(anch, labelwrong, "wrong Barcode");
            machineNumberField.clear();
            logger.info("Wrong Barcode format exception " + machineNumberField.getText() + "\n" + e.getMessage());
        }

    } else {
        platformHelper.displayWarning(anch, labelwrong, "wrong Barcode");
        machineNumberField.clear();
        logger.info("Wrong Barcode format exception " + machineNumberField.getText());
    }


}}

Редактировать:

Main.java

public class Main extends Application {

Scene loginScene;

@Override
public void start(Stage primaryStage) throws Exception {
    StackPane root = new StackPane();

    Parent login = FXMLLoader.load(getClass().getResource("/login.fxml"));
    primaryStage.setTitle("Timer for process time");

    loginScene = new Scene(login);
    primaryStage.setScene(loginScene);
    primaryStage.setFullScreen(true);
    primaryStage.show();



    setUserAgentStylesheet(STYLESHEET_MODENA);


    new FileReaderWriter("setPath").setPathandCacheFile();
}


public static void main(String[] args) {
    launch(args);
}

}


person tbere    schedule 11.04.2017    source источник
comment
Почему это отличается от поста, на который вы ссылаетесь? Просто зарегистрируйте этот незанятый монитор с тем узлом, который является корнем сцены в методе initialize().   -  person James_D    schedule 11.04.2017
comment
хм, хорошо, это то, что я пытался, но это не работает, потому что я не понимаю сцену   -  person tbere    schedule 11.04.2017
comment
Вместо этого зарегистрируйте его на корневом узле. Если вы хотите зарегистрировать его в сцене, вы должны сделать это из того места, где вы создаете сцену.   -  person James_D    schedule 11.04.2017
comment
хорошо, это работает, спасибо. Но теперь у меня есть этот void initialize(), который выдает IOException { IdleMonitor idleMonitor = new IdleMonitor(Duration.seconds(3), () -> { anch.getChildren().clear(); anch.getChildren().add(new Button (тест)); }, верно); idleMonitor.register(anch, Event.ANY); } так где я должен загрузить файл fxml?   -  person tbere    schedule 11.04.2017
comment
Я не понимаю последний вопрос. Вы загрузите файл FXML везде, где вы ранее загружали файл FXML: это не имеет никакого значения.   -  person James_D    schedule 11.04.2017
comment
Хорошо, я не очень знаком с javafx, поэтому я загружаю первый экземпляр представления в основной файл, где приложение имеет свой метод запуска, я загружаю первый файл fxml и регистрирую его на сцене. Теперь я хочу вернуться к этой сцене, и я загружаю файл fxml в контроллер точно так же, как в основном классе, я обновил вопрос с помощью файла Main.java.   -  person tbere    schedule 11.04.2017
comment
Отлично, он работает довольно хорошо, я добавляю узел и устанавливаю представление в контроллере.   -  person tbere    schedule 13.04.2017