2012-10-29 32 views
0

方法A(非GUI)如何判断一个小部件是否仍处于活动状态并且未处置?在一类

public void add() { 
    if(etc...) { 
     add data to a arraylist ..... 
    } 
    Class B.updateTable(); 
} 

上面的方法基本上将数据添加到一个数组列表,然后在B类更新的TableViewer。

B类 - GUI对话框

之前我叫类B.updateTable(),我想检查,确保B类的GUI是开放的,而不是配置。

用户可以使用没有打开B类GUI的Class 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(); 
    } 
    } 

这是可能的,甚至是正确的方式来处理错误?

+0

我的问题是在GUI中刷新我的表格查看器。所以当我将数据添加到数组列表时,我同时刷新了表格查看器。只要GUI被打开,这个效果很好。但是如果GUI已关闭,则刷新时出现错误。我发现即使对话框已关闭,表格查看器也不为空。所以刷新试图刷新一些不存在的东西。所以在关闭按钮代码中,我添加了viewer = null;这似乎解决了问题 – jkteater

+0

然后继续并创建一个答案。你应该可以在几天内接受它。 – Baz

回答

0

我遇到的问题是刷新我的表格查看器,而GUI被关闭。当我的用户关闭GUI以通过主应用程序向阵列列表添加更多数据时。我使用add方法中的代码来刷新GUI中的表格查看器。主要问题是即使GUI已关闭,表格查看器也不为空。所以我的代码试图刷新已经处理的东西。知道当GUI关闭时我不需要刷新表格查看器。我在关闭按钮代码中将表格查看器设置为null。然后在更新方法中检查查看器是否为null。

static public void updateTableViewer() { 

    if(getViewer() != null) { 
    viewer.refresh(); 
    } 
} 

当GUI被关闭所以,现在的表查看器为NULL,当它打开时,表查看器不为空。这似乎对我有用。

相关问题