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