gpt4 book ai didi

java - JPanel.getWidth() 不准确。为什么?

转载 作者:行者123 更新时间:2023-12-02 00:14:37 26 4
gpt4 key购买 nike

我正在重写 JPanel 的 paintComponent() 方法以在屏幕上绘制一些内容。

这就是它的样子:

JPanel

我使用以下代码来设置剪切区域。这样边缘就可以弯曲。

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

最佳答案

首先,要小心剪辑。重绘管理器在将其传递给您的组件时已经设置了剪切矩形,您最终可能会在组件外部进行绘制(如果您创建了自己的缓冲区,那么您自己就会被淘汰)。

组件大小从 0 开始,这意味着您想要的宽度是 getWidth() - 1

这与集合和数组的概念相同。

此外,当我在这里时,您假设窗口大小(例如 500)将环绕您的组件。恰恰相反。由于窗口边框的原因,尺寸为 500 的窗口将生成比该尺寸更小的组件。

关于java - JPanel.getWidth() 不准确。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12086651/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com