【发布时间】:2012-10-29 16:56:26
【问题描述】:
A 类中的方法 A(非 GUI)
public void add() {
if(etc...) {
add data to a arraylist .....
}
Class B.updateTable();
}
上面的方法基本上是在一个arraylist中添加数据,然后更新b类中的tableViewer。
B 类 - GUI 对话框
在调用 Class B.updateTable() 之前,我想检查并确保 Class B 的 GUI 已打开且未释放。
用户可以在不打开 B 类 GUI 的情况下使用 A 类(非 gui)。因为 A 类构建了一个用户选择的 ArrayList,而 B 类显示了它。因此,他们可以添加数据而无需尝试显示它。
如果我当前运行 B.updateTable() 并且 B 类未打开,则会收到小部件处置错误。
如果我可以添加一个检查并确保在我尝试更新表格之前没有释放小部件。
我可以检查 A 类的值还是需要编写一个静态布尔方法是 B 类,它返回类似 shell.isDisposed 的东西?
然后在 A 类方法中,我可以添加检查。
public void add() {
if(etc...) {
add data to a arraylist .....
}
if(!Class B.isShellDisposed()) {
Class B.updateTable();
}
}
这是可能的,甚至是处理错误的正确方法吗?
【问题讨论】:
-
我的问题是在 gui 中刷新我的表格查看器。因此,当我向数组列表添加数据时,我同时刷新了表格查看器。只要打开 GUI,它就可以很好地工作。但如果 GUI 已关闭,我会在刷新时遇到错误。我发现即使对话框关闭,表格查看器也不为空。所以刷新试图刷新一些不存在的东西。所以在关闭按钮代码中,我添加了 viewer = null;这似乎解决了问题
-
然后继续创建答案。你应该可以在几天内接受它。