天天看點

關于java多個面闆元件添加後,其中元件事件監聽器可能沒用的問題!

本人在用java編寫貪吃蛇程式時,發現在隻有單個面闆元件-----一個遊戲界面面闆元件編譯運作時,能通過addKeyListener()方法來對蛇頭方向進行控制。

但本人加上其他面闆-----------一個說明面闆,一個控制台後。發現通過無法通過鍵盤控制蛇頭方向。

通過百度和論壇發帖,發現兩個方法:

一是,設定顯示圖像的元件總是在激活狀态。但元件應該預設是激活狀态,并不是這個問題。

二是,将監聽加在你的最頂層的容器裡面。但最頂層類為JFrame,而程式中jf就是JFrame的執行個體對象,且有“jf.addKeyListener(controller);”。是以已經将監聽加到了頂層容器裡。

是以,并不是這個個原因。但以後對于這兩個問題也需要記着。

後來通過參考程式,将問題解決:

是由于沒有讓gamePanel元件中設定擷取焦點方法“this.setFocusable(true);”。

這樣,即使有其他元件,蛇頭仍然受鍵盤控制了~!

但是為何沒安放其他元件時可以使用,仍然沒有明白。

希望哪位大神可以幫忙解釋一下!

詳情問題咨詢帖-------------------------http://bbs.csdn.net/topics/390791805?page=1#new_post------------------------------------

繼續閱讀