我有 2 个类,一个是数据模型类,另一个是 gui 类。
类数据模型…………
获取用户选择的数据并创建一个数组列表
类gui…………
有一个使用数据模型类中的数组的 tableviewer
我的问题是当用户向数组添加更多数据时,我需要刷新 tableviewer。
我在 gui 类中创建了一个 updateTableViewer 方法。
public void updateTableViewer() {
if(getViewer() != null) {
viewer.refresh();
{
然后我在datamodel类中引用了gui类。
AplotBaseDialog abd = new AplotBaseDialog(null, null);
然后我将方法调用添加到向数组添加更多数据的方法中
public void add(TCComponentItemRevision tcRevision, TCComponentDataset selectedDataset) {
AplotDatasetData pp = new AplotDatasetData(tcRevision, selectedDataset);
if (!dataArrayList.contains(pp)) {
dataArrayList.add(pp);
}
abd.updateTableViewer();
}// end add()
这不起作用。即使创建并打开了 gui 类,getViewer() 调用也始终返回 null。
所以我创建了一个布尔值;
Boolean hasViewerBeenCreated = false;
创建 tableviewer 后,我将值设置为 true。
viewer = new AplotDataTableViewer(parent, SWT.BORDER|SWT.V_SCROLL|SWT.FULL_SELECTION);
viewer.setInput(AplotDataModel.getInstance().getArrayData());
hasViewerBeenCreated = true;
然后我创建了一个返回布尔值的方法。
我从 dailog 上的按钮调用该方法。我还替换了数据模型类中的 updateTableViewer 方法调用
if (!dataArrayList.contains(pp)) {
dataArrayList.add(pp);
}
abd.getBooleanValue();
}
这是结果。
我在数据模型类中执行 add 方法 - 它返回 false - 这是有道理的,因为此时尚未创建 dailog
我执行并创建 gui 类我单击按钮并返回 true - 这是有道理的,因为查看器已创建
这是我感到困惑的地方。在 gui 仍然打开的情况下,我可以再次执行 add 方法,它仍然返回一个 false 值。然后我可以单击按钮并查看它的真实值。
我认为当创建 gui 并将布尔值设置为 true 时。我将能够在其他类中获得布尔值的当前值。
我不确定我是否没有正确引用 gui 类,或者在创建 gui 时我没有访问当前线程或 tableviewer?
我不知道这是否是线程问题,或者我只是没有从 gui 正确获取当前值。
这是我现在申请的一个大问题。每当将新数据添加到数组中时,我都必须能够刷新 tableviewer。我不能让用户每次选择新数据时都必须手动刷新表