У меня проблема с ObservableList
. Я добавляю элемент к ObservableList
, а затем устанавливаю его на TableView
, но проблема заключается в том, что всякий раз, когда я добавляю элемент к ObservableList
, используя addAll()
, некоторые дополнительные элементы отображаются в TableView
.
Вот мой фрагмент кода
public void startRun(final TestCase test) {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
if (sessionConfig.isEnableSessionControl() || detailscol.isVisible() == false)
saveReportBtn.setDisable(true);
else
saveReportBtn.setDisable(true);
testCaseList.add(test);
start = "Running";
removerow++;
startRunDataList = FXCollections.observableArrayList(new TestExecutionTable(test.getName(), start));
updatedDataStartrun.addAll(startRunDataList);
testExecutioTable.setItems(updatedDataStartrun);
lastOne = startRunDataList.get(0);
}
});
t.start();
}
, где testCaseList = new ArrayList<TestCase>();
startRunDataList = FXCollections.observableArrayList();
updatedDataStartrun= FXCollections.observableArrayList();
инициализируются в начале класса.
вышеуказанный метод startRun(final TestCase test)
вызывается в цикле.
for (TestCase test : tests) {
CountDownLatch latch = new CountDownLatch(1);
listener.startSuite(null);
listener.startRun(test);
try {
test.run(context, listener);
listener.passed(test, latch);
} catch (TestFailure failure) {
listener.failed(test, failure, latch);
//latch.wait();
} catch (Throwable t) {
listener.error(test, t, latch);
//latch.wait();
} finally {
listener.endRun(test);
}
}
Однако приведенный выше код работает нормально с Java 7, но не с более поздней версией (Java 8 и более поздние).