2013-06-05 163 views
0

我正在研究Java中的程序,並且在W8中的標題欄遇到問題。出於某種原因,協調人(0,0)已經啓動並隱藏在標題欄中。如果我想在(0,0)處繪製某些東西,我必須將Graphics對象轉換爲(0,10)以使其顯現。Java和Windows 8工具欄

我目前有:

 g.setColor(Color.BLACK); 
     g.fillRect(0, 0, Config.WIDTH + 10, Config.HEIGHT + 10); 
     g.translate(0, 10); 
     g.setColor(Color.WHITE); 
     g.setFont(fonts.getFont(0)); 
     g.drawString("FPS: " + scr.fps, 0, 0); 

這工作,但我想刪除g.translate(0, 10);櫃面此行結束了以後造成的問題。

回答

0

該問題與Windows 8無關,但是您已覆蓋頂級容器的paint這一事實。

框架邊框在窗口邊界內繪畫。

一個框架有一個內容窗格應該用來佈置內容或執行自定義繪畫。

而不是重寫頂級容器的paint,創建您自己的自定義組件(從類似於JPanel之類的東西延伸)並覆蓋它的paintComponent方法。

然後,您可以將其添加到幀的內容窗格或更換幀內容窗格

退房......

爲了進一步解釋

+0

我畫到這是畫到一個JFrame一個JPanel,因此爲什麼(0,10)是左上角和不(8.38)。發現我出於某種原因正在使用的字體想要開始繪製它應該在-10像素以上的位置。感謝您的回覆! – Sakki

+0

這是因爲字體想要在上行線('FontMetrics#getAscent')開始渲染。看看[使用文本API,測量文本](http://docs.oracle.com/javase/tutorial/2d/text/measuringtext.html)和['FontMetrics'](http://docs.oracle.com) .com/javase/7/docs/api/java/awt/FontMetrics.html)以獲取更多詳細信息 – MadProgrammer