, пожалуйста, помогите мне, ребята .. мой наблюдаемый список был успешно обновлен на фоне темы. , но мое обновление графического интерфейса неточно.JavaFX pie Charts ObservableList (обновление графического интерфейса графического интерфейса неточно при передаче по потоку)
addPiechart1 в HBOX addPieChart2 в HBOX
observablelist1 = getobservablelist от piechart1
observablelist2 = getobservablelist от piechart2
проход observablelist1 в теме проход observablelist2 в теме экс
на процесс я звоню
animatePie (наблюдаемый список1, значение1);
aimatePie (observablelist2, value2);
public void animatePie(ObservableList<PieChart.Data> obs,int[] value){
ExecutorService executor = Executors.newCachedThreadPool(new ThreadFactory() {
@Override public Thread newThread(Runnable r) {
Thread thread = new Thread(r);
thread.setDaemon(true);
return thread;
}
});
pieAddToQueue add = new pieAddToQueue(obs,value);
//add.run();
executor.execute(add);
}
private class pieAddToQueue implements Runnable {
ObservableList<PieChart.Data> observableData;
int[] value;
int loop;
public pieAddToQueue(ObservableList<PieChart.Data> obs,int[] value){
observableData=obs;
this.value=value;
loop=0;
}
@Override
public void run() {
for(int i=0;i<value.length;i++){
observableData.get(i).setPieValue(value[i]);
try {
Thread.sleep(200);
} catch (InterruptedException ex) {
Logger.getLogger(MISInfoBoardBottom.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
Не уверен, что я понимаю ваш псевдокод, но это выглядит, как вы обновление круговой диаграммы (через свой список данных) из фонового потока. Вы не можете этого сделать: вы должны обернуть вызовы 'observableData.get (i) .setPieValue (...)' в 'Platform.runLater (...)'. –
Спасибо за ответ. да, у тебя есть идеи. Я изменил данные наблюдаемого списка в фоновом потоке. данные наблюдаемого списка успешно изменились, но piechart в моем графическом интерфейсе иногда не обнаруживает, что мой наблюдаемый список был обновлен фоновым потоком. вот почему мой пирог содержит несколько кусочков. наблюдаемые данные были обновлены –
, когда я добавляю Platform.runlater в качестве оболочки. обновления GUI после завершения потока. Я надеюсь, что что-то обновлялось сразу после изменения данных наблюдаемого списка в фоновом потоке. :(plss help me. –