為按鈕陣列註冊監聽

2021-07-15 15:32:57 字數 826 閱讀 6639

在完成「別踩白塊」的課設時,遇到了按鈕陣列註冊監聽的問題,現將問題和解決辦法記錄如下:

for(int i=0;inew bolk();

mbolk[i].addactionlistener(new actionlistener()

} });

panel.add(mbolk[i]);

}

這個問題在內部類的使用過程中比較常見,為內部類呼叫外部變數時必須保證外部變數時final型別的,即為最終變數。此處呼叫的為區域性變數,區域性變數不存放在物件所在的儲存區中,即不予actionperformed()方法共享儲存區,在形式上來說即為方法中的方法呼叫了存放在執行棧上的區域性變數(某種意義上來說感覺像內部類呼叫棧上的變數),所以需要將區域性變數設定為最終變數,但是設定為最終變數後,變數i將失去原有的功能,所以在此處進入乙個死迴圈。

錯誤思路:設定監聽的時候就決定該按鈕監聽方法,在監聽方法中,希望傳入按鈕,對按鈕進行操作,即通過傳入不同的按鈕,來實現不同的方法。

解決思路:在監聽方法獲取響應的按鈕,然後對按鈕執行操作。

區別:解決思路中所有的按鈕只需要註冊同乙個監聽方法,在方法中判斷按鈕需要執行的操作,錯誤思路中將不同的按鈕都註冊監聽,造成了**的無必要重複。

for(int i=0;inew bolk();

mbolk[i].addactionlistener(this);

panel.add(mbolk[i]);

}public

void

actionperformed(actionevent event)else

}

Egret 開發筆記 三 多按鈕註冊監聽

首先在 ui 面板的父類uibase中寫下這些方法 protected buttonlist array 註冊按鈕 在onclick裡面,判斷按鈕的名字以區分點的是哪個按鈕 protected registerbuttons container fairygui.gcomponent null vo...

weex android新增返回按鈕監聽

在一些場景中需要在選擇內容後回傳,例如位址選擇 日期選擇等。如果用兩個頁面來傳遞資訊會使邏輯變得複雜,所以我們在開發過程中選擇新增乙個蒙層來進行選擇操作 我們使用weex ui的wxc popup 但是這會帶來另乙個問題,在android手機上按返回鍵時整個頁面都會返回,所以我們寫了乙個module...

oracle監聽動態註冊與靜態註冊

client端如果想要連線到遠端的資料庫伺服器,首先資料庫伺服器必須啟動 oracle 的配置在 oracle home network admin listener.ora,開啟這個檔案,我們看到配置如下 listener description list description address ...