2012-10-10 44 views
1

我在Java中製作遊戲,作爲一種教我更多關於Java和遊戲編程的方式。但是,我有一個問題。我的JFrame上的標題欄佔用了空間的29個Y像素。因此,我已經計劃了較少的客廳。有沒有辦法讓它成爲JFrame Canvas的角點是(0,0)而不是(0,29)?謝謝使JFrame標題欄不計算像素

+0

對於高性能渲染,查看[全屏獨佔模式](http://docs.oracle.com/javase/tutorial/extra/fullscreen/index.html)可能會更好。 –

回答

7

答案很簡單:不要繪製JFrame的paint(...)方法,而是在JPanel的paintComponent(...)方法中繪製,然後使JPanel成爲JFrame的contentPane。該解決方案在Swing Tutorials painting section很好的描述,有幾個原因,要做到這一點,包括:

  • 你不要冒險在繪製的東西,不應該在包括邊框和標題欄繪製。
  • 您可以獲得Swing默認雙緩衝的優勢,如果您執行任何動畫,這可以大大改善。
+0

如果我想直接繪製面板(也就是通過使用'getGraphics()'而不是重寫'paint()'),我將如何使這個解決方案起作用?我這樣做是因爲我手動執行線程,並且我想立刻在自己的線程上繪製。 –

+2

@JakeKing你不能。你可以做的就是在你的線程中生成一個'BufferedImage'並繪製它,然後讓屏幕從它的'paintComponent'方法中渲染它。此外,不要更新任何其他線程的任何UI元素,然後事件調度線程 – MadProgrammer

+3

@MadProgrammer交替:*「你可以做什麼是在你的線程中生成一個BufferedImage和..」* .. ..顯示它在一個標籤。調用'label.repaint()'來更新GUI。 –