2013-08-06 43 views
0

我正在構建一個簡單的「遊戲」作爲開發應用程序或類似的教程在java中。我的Mainextends JFrame。它只是在屏幕上移動一個球。在達到可以移動球的位置之後,我開始實施與窗口邊界的碰撞,並花了幾分鐘的時間試圖弄清楚爲什麼只有在三面超出邊界並且遠遠超出了我之前意識到邊界被服從,但它們是實際窗口的邊緣,超出了顯示區域。如何在java swing中獲取內部框架?

我將如何設置Main類,使邊界是可見區域?它會延伸一個不同的課程嗎?那麼它在別的東西里面呢?

回答

1
  • 很難說什麼你可能做錯了無碼,
  • 但一件事,你永遠不應該直接在JFrame中繪圖,並應避免延長JFrame中。
  • 取而代之的是擴展JPanel,得到它的邊界,並在這個JPanel中繪製。
  • 此外,請確保覆蓋JPanel的paintComponent(...)方法,
  • 還可以在覆蓋內調用super.paintComponent(g)
  • 將JPanel放入JFrame中進行顯示。
  • 請確保在做這種編碼之前查看Swing繪圖教程,因爲在執行圖形程序時尤其是動畫程序時,經常需要更改基本假設。
+0

是否需要將監聽器放置在JFrame上,因爲我在Main上擴展JPanel並且它不工作 – DoubleMx2

+1

@ DoubleMx2:哪些監聽器? 「不工作」告訴我們很少。唯一能說出爲什麼不起作用的方法是研究代碼並進行調試。 –

+0

嗯,我有一個KeyListener連接到JFrame以接收鍵盤輸入,當我改變Main來擴展JPanel時,我將KeyListener留在了JPanel上。然而,JPanel似乎沒有收到任何按鍵通知。 KeyListener在連接到JFrame時工作,但不在JPanel中工作。 – DoubleMx2