0
我重寫JPanel的paintComponent()
方法在屏幕上繪製一些東西。JPanel.getWidth()不準確。爲什麼?
這是什麼樣子:
我用下面的代碼來設置裁剪區域。這樣可以使邊緣彎曲。
RoundRectangle2D r = new RoundRectangle2D.Double(0, 0, getWidth(), getHeight(), 100, 150);
g.setClip(r);
顯然,這是與窗口右側的一個問題。經進一步檢查,我發現JPanel的getWidth()
方法沒有報告正確的數字。通常,它稍微偏離。例如:
Width = 500, getWidth() = 492
Width = 1000, getWidth() = 992
Width = 100, getWidth() = 192
Width = 350, getWidth() = 342
Width = 600, getWidth() = 592
我的問題是,爲什麼會這樣一貫錯了嗎?爲什麼getHeight()
是正確的?
如果沒有編程的方式來獲得真正的寬度,應我只需添加8
感謝您的支持。當你問我是否創建了自己的緩衝區時,你是什麼意思? – Redandwhite
如果您在'paintComponent'方法內部創建'BufferedImage'並使用'BufferedImage'的圖形上下文。如果沒有,你真的,真的,真的需要小心改變圖形剪輯 – MadProgrammer
嗯..假設這個JPanel不包含任何組件,並且我僅僅使用它的圖形上下文作爲畫布,那麼我會造成什麼危害? – Redandwhite