2008-10-11 80 views
4

我已經子類java.awt.Frame並重寫paint()方法,因爲我希望手動繪製整個窗口的內容。在Mac OS X中獲取AWT框架的可繪製區域?

但是,在圖形對象上,(0,0)對應於窗口左上角裏面的標題欄裝飾,而不是第一個可繪製像素。

我可否以跨平臺的方式確定第一個可繪製像素的座標(即裝飾高度),避免使用Mac OS X特有的模糊因子?爲了找到窗口的實際可繪製區域,我會被強制嵌套一個Panel組件嗎?

這裏我的代碼不居中窗口可繪畫區域內的藍色方塊:

@Override 
public void paint (Graphics g) { 
    g.setColor(Color.BLUE); 
    g.setPaintMode(); 
    g.fillRect(30, 30, getWidth()-60, getHeight()-60); 
} 

alt text http://x13n.com/paintable-area.png

回答

2

您可以通過調用的getInsets方法(在容器中定義)找到幀插圖。框架插頁在框架API文檔的頂部進行討論。

2

因此,你想繪製整個區域,不想標題欄?假設您使用JDK 1.4(至少),那麼您可以聲明框架爲「未修飾」(java.awt.Frame#setUndecorated(boolean))。這樣就不會創建標題欄,因此可繪製框架的區域與框架消耗的區域相同。