簡體   English   中英

我如何知道小部件是否仍處於活動狀態並且沒有被丟棄?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM