Graphics#drawText,旧文本不会被删除

发布于 2024-11-28 06:59:29 字数 389 浏览 1 评论 0原文

我有一个 JPanel ,它像这样覆盖 PaintComponent

@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);    
    //[...]
    g.drawString(" x " + model.getCount(l), getTilesWidth() + ship.getWidth() + PREVIEW_OFFSET_X + 5, y - 10);
    //[...]
}

,但是当我调用 repaint 且 model.getCount(l) 已更改时,新字符串将绘制在旧字符串上方。然而,当我调整窗口大小时,一切又恢复正常了。造成这种情况的原因是什么?

I have a JPanel which overrides paintComponent like this

@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);    
    //[...]
    g.drawString(" x " + model.getCount(l), getTilesWidth() + ship.getWidth() + PREVIEW_OFFSET_X + 5, y - 10);
    //[...]
}

but when I call repaint and model.getCount(l) has changed, the new string gets just drawn above the old string. However, when I resize the window everything is fine again. What could be the cause for this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

荒芜了季节 2024-12-05 06:59:29

在尝试绘制新文本之前,您很可能需要用背景颜色填充旧文本所在的区域。

Most likely you need to fill in the area where the old text was with the background color before attempting to draw the new text.

背叛残局 2024-12-05 06:59:29

哎呀,错误实际上是在其他地方,我真的忘记了我的类除了 JPanel 之外还有一个超类,对此感到抱歉。

ooops, the error was actually elsewhere, I really forgot that my class had a superclass other than JPanel, sorry for that.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文