Я прошу вашей помощи, потому что мне не удается обновить ярлыки javaFX данными из моей базы данных. Чтобы указать c, я попытался создать шаблон MVC с представлением, содержащим метки.
Я создал модули для извлечения всех данных из MongoDB (которые работают нормально). Чтобы обновить sh мое представление, я создал в моей модели поток, который каждые несколько секунд извлекает данные из базы данных. Все данные, которые я собираю, хранятся в SimpleDoubleProperty / SimpleIntegerProperty / SimpleStringProperty, чтобы сделать связывание.
Часть моего модельного класса:
public SimpleDoubleProperty sto = new SimpleDoubleProperty(0.);
public SimpleIntegerProperty nbA = new SimpleIntegerProperty(0);
public SimpleStringProperty signalStrengh = new SimpleStringProperty();
public void start() {
worker = new DataBaseWorker();
worker.start();
}
private class DataBaseWorker extends Thread {
public void run() {
while(!stop) {
sto.set(MongoDataService.getStorage());
nbA.set(MongoDataService.getNbAircraft(interval));
double sig_strengh = MongoDataService.getSignalStrengh(interval);
if(sig_strengh >= excellent_sig) {
signalStrengh.set("Excellent");
}
else if (sig_strengh> good_sig && sig_strengh <excellent_sig) {
signalStrengh.set("Good");
}
else {
signalStrengh.set("Poor");
}
waitFor(ConfigService.getInstance().getDBFetchDataIntervalInMS());
}
}
}
После этого мой контроллер делает привязки (я также пытался сделать привязки на мой взгляд без успеха):
Label data_sto = (Label)((HBox)supervisor.root.getChildren().get(2)).getChildren().get(1);
Label nbAir_lab = (Label)((HBox)supervisor.root.getChildren().get(3)).getChildren().get(1);
Label sig_lab = (Label)((HBox)supervisor.root.getChildren().get(4)).getChildren().get(1);
data_sto.textProperty().bind(model.sto.asString());
nbAir_lab.textProperty().bind(model.nbA.asString());
sig_lab.textProperty().bind(model.signalStrengh);
Все отлично скомпилировано и нет ошибок во время выполнения. У меня есть окно со всем, что я создал. Но проблема в том, что мой ярлык обновляется не так, как я ожидаю.
Я думаю, что проблема может быть связана с созданным мной потоком, который не связывается со связующими, а потому что я новичок в Java и Javafx это может быть что угодно.
Спасибо и надеюсь, что кто-нибудь мне поможет.