Mam problem z aktualizacja zawartosci TextArea.
Gdy wykonuje operacje na bazie danych, ktore sa dosc czasochlonne, wyswietlam sobie okno postępu pracy. Z kazdym krokiem, chcialabym wyswietlac dodatkowy wpis w text area. Niestety, textArea nie aktualizuje sie. Dopiero gdy Servis zakonczy swoja prace, wszystkie notyfikacje jakie byly wysylane pojawiaja sie na ekranie.
Probowalam kombinowac z Eventami, niestety nie działa.
FXMLController
public class TestProgressNotificationsView extends ViewFX<AnchorPane> {
private final AnchorPane root = new AnchorPane();
private final Label title = new Label();
(...)
@EventListener
public void progressUpdate(BenchmarkProgressEvent event) {
notificationArea.appendText("\n".concat(event.getMessage()));
}
@Component
@Log4j2
public class BenchmarkProgressServiceImpl implements BenchmarkProgressService {
@Autowired
private ApplicationContext context ;
@Autowired
private Executor executor;
(...)
@Override
public void registerListener(BenchmarkProgressListener listener) {
this.listeners.add(listener);
}
@Override
public void removeListener(BenchmarkProgressListener listener) {
this.listeners.remove(listener);
}
@Override
public synchronized void postMessage(String message) {
log.info(message);
executor.execute( () -> {
context.publishEvent(new BenchmarkProgressEvent(message));
}
);
//listeners.forEach(l -> l.postMessage(message));
}
}