JavaFX: как связать два значения?
Я здесь новый парень :)
У меня есть небольшая проблема, которая касается связывания в JavaFX. Я создал задачу, которая работает как часы и возвращает значение, которое должно быть установлено в специальной метке (label_Time). Этот ярлык показывает, сколько секунд осталось до ответа игрока в викторине.
Проблема в том, как автоматически изменить значение в метке с помощью задачи таймера? Я пытался связать значение из таймера Задача (секунд) к значению label_Time таким образом ...
label_Time.textProperty().bind(timer.getSeconds());
... но это не работает. Есть ли способ сделать это?
Заранее спасибо за ваш ответ! :)
Метод Initialize в классе Controller:
public void initialize(URL url, ResourceBundle rb) {
Timer2 timer = new Timer2();
label_Time.textProperty().bind(timer.getSeconds());
new Thread(timer).start();
}
Задача класса "Таймер2":
public class Timer2 extends Task{
private static final int SLEEP_TIME = 1000;
private static int sec;
private StringProperty seconds;
public Timer2(){
Timer2.sec = 180;
this.seconds = new SimpleStringProperty("180");
}
@Override protected StringProperty call() throws Exception {
int iterations;
for (iterations = 0; iterations < 1000; iterations++) {
if (isCancelled()) {
updateMessage("Cancelled");
break;
}
System.out.println("TIK! " + sec);
seconds.setValue(String.valueOf(sec));
System.out.println("TAK! " + seconds.getValue());
// From the counter we subtract one second
sec--;
//Block the thread for a short time, but be sure
//to check the InterruptedException for cancellation
try {
Thread.sleep(10);
} catch (InterruptedException interrupted) {
if (isCancelled()) {
updateMessage("Cancelled");
break;
}
}
}
return seconds;
}
public StringProperty getSeconds(){
return this.seconds;
}
}