У меня есть приложение JavaFX с некоторым кодом, подобным этому ...
public class MainListener extends EventListener{
override public function event (arg0 : String) : Void {
statusText.content = arg0;
}
}
statusText определяется следующим образом ...
var statusText = Text {
x: 30
y: stageHeight - 40
font: Font { name: "Bitstream Vera Sans Bold" size: 10 }
wrappingWidth: 420
fill: Color.WHITE
textAlignment: TextAlignment.CENTER
content: "Status: awaiting DBF file."
};
У меня также есть какой-то другой Javacode, который загружает данные, очень похоже на это ..
public ArrayList<CustomerRecord> read(EventListener listener) {
ArrayList<CustomerRecord> listOfCustomerRecords = new ArrayList<CustomerRecord>();
listener.event("Status: Starting read");
// ** takes a while...
List<Map<String, CustomerField>> customerRecords = new Reader(file).readData(listener);
// ** long running method over.
listener.event("Status: Loaded all customers, count:" + listOfCustomerRecords.size());
return listOfCustomerRecords;
}
Теперь, когда последний метод находится в длительном вызове, я ожидаю, что мой statusText будет обновлен и теперь будет иметь статус Status: Starting read, но его нет. Только когда метод read () возвращает, текст обновляется.
Если бы это была «прямая» java, я бы предположил, что длительное задание загружает процессор, или в statusText должен был быть вызван repaint ().
Кто-нибудь может дать мне какие-нибудь идеи?
Спасибо
Джефф Портер