2011-04-21 194 views
0
accountTab.setChangeListener(new FieldChangeListener() { 
    public void fieldChanged(Field field, int context) { 
     if (field==TabBar.accountTab) { 
     Dialog.alert(" Account Tab is clicked "); 
     } 
    } 
}); 

爲什麼這個代碼不工作? 但它的一些地方工作。我正在使用水平字段管理器爲9800火炬設置標籤欄,此代碼中的「accountTab」是自定義按鈕字段。請幫幫我.........爲什麼這個代碼不工作?

回答

0

提供的信息太含糊不清,不知道確切的問題。但是,這很有可能與您嘗試打開響應某個事件的對話框的事實有關,並且您可能當前沒有持有該事件鎖定。使用Application#invokeLater()打開對話框。您需要實現Runnable並從run方法調用Dialog.alert。

+0

我不知道任何事件處理程序的執行沒有事件鎖定。 – 2011-04-23 18:04:14

1

如果你將一個FieldChangeListener附加到一個Field中,你應該不需要測試它是否是Field(除非你正在做一些非常自定義的事情)。我會嘗試調試並查看fieldChanged調用是否正在受到攻擊,如果您想在其中使用該測試,請確保TabBar.accountTab實際上是您認爲它的參考。

另一種可能性是,您沒有將選項卡設置爲FOCUSABLE,或者您可能在鏈條截獲點擊的位置有更多的東西,並且不允許它進一步繼續。

0

做回調火災?你有沒有附加一個調試斷點來判斷它是否實際調用? 如果是這樣的話,那麼@Fostah的上面的答案是一個非常好的開始,當這個回調觸發時,你可能不會在事件派發線程中...