[英]How can I tell if a widget is still active and not disposed?
類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通過主應用程序將更多數據添加到arraylist時。 我在add方法中有代碼來刷新GUI中的表查看器。 主要問題是即使關閉了GUI,表查看器也不為空。 所以我的代碼試圖刷新已經處置的東西。 知道我不需要在GUI關閉時刷新表查看器。 我在關閉按鈕代碼中將表查看器設置為null。 然后在更新方法中檢查查看器是否為null。
static public void updateTableViewer() {
if(getViewer() != null) {
viewer.refresh();
}
}
因此,現在在關閉GUI時,表查看器為NULL,而在打開時,表查看器不為null。 這似乎為我工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.