2016-04-28 38 views
0

我有兩個面板:pnl和pnl2,pnl2有一個名爲car的標籤添加到它(pnl2.add(car);)。 我將pnl的佈局管理器更改爲邊界佈局,並在其南部添加了pnl2(pnl.add(pnl2,BorderLayout.SOUTH);)。 pnl本身被添加到名爲GameFrame的框架中,該框架擴展了JFrame(this.add(pnl);)。即使在java中重新繪製時,始終將標籤設置在頂部?

pnl2是一個普通的JPanel,但pnl是類我做的名爲Road的類,它擴展了JPanel,在這個類中我重寫了繪製特定對象(在不同位置的白色矩形)的paint方法,並且在GameFrame框架的構造函數我使用計時器來重新繪製每個特定延遲的pnl以產生動畫(移動白色矩形)。

一切都很好,但白色的矩形總是繪製在名爲汽車的標籤的頂部,有沒有辦法讓這個汽車標籤始終位於頂部?

回答

1

建議:

  1. 覆蓋JPanel的的paintComponent paint方法。 paint方法負責繪製JPanel的自我及其子,這可能會讓你感到困惑,paintComponent只負責繪製JPanel本身。
  2. 請務必在您的覆蓋中調用super的paintComponent方法,因爲組件需要執行其自己的家務清理,包括清除髒像素。
  3. 一定要在這個方法中做繪畫,沒有別的,沒有程序邏輯,沒有讀入文件,沒有改變你的對象的狀態。
  4. 如果仍然卡住,發佈相關的代碼。
+0

非常感謝:D paintComponent解決了它,因爲沒有發佈代碼 –

相關問題