【问题标题】:Does Java repaint the components when resize or mouse over?调整大小或鼠标悬停时,Java 是否会重新绘制组件?
【发布时间】:2015-02-15 19:02:51
【问题描述】:

我不是在询问如何使用 Java swing,也不是在询问有关使用布局管理器的建议。我只是好奇 Java 的行为方式。

一直以来,这都是一个神话,许多人推测,当您调整框架的大小将鼠标悬停在框架中的组件上时,Java 会自动重新绘制组件。 p>

所以我的问题是:当我们执行上述操作之一时,Java 是否会自动重新绘制?


有几篇类似标题的帖子,例如:Java repainting a component at mouse-over.

但没有人能给出明确的答案,Java 是否会在某些用户操作(例如调整大小和鼠标悬停)时自动重新绘制。

【问题讨论】:

标签: java swing repaint


【解决方案1】:

这一直是一个神话,很多人猜测

没有神话或猜测。

调整大小时自动重绘组件

这是有道理的,因为布局管理器被调用并且大小或位置可能会改变,这意味着某些组件可能需要重新绘制。

当您将鼠标悬停在框架中的组件上时会自动重新绘制组件。

这取决于组件。如果已将 MouseListener 添加到组件中以进行特殊处理(即翻转按钮),则可能会重新绘制组件,否则不会发生任何事情。但是没有默认绘制,除非它已被专门添加为组件 UI 的一部分。

这些问题很容易验证。只需覆盖组件的paintCompent() 方法,即可在绘制组件时显示一条消息,看看会发生什么。

【讨论】:

  • 我用一些 println 语句覆盖了 repaint() 方法和 paintComponent() 方法,但是即使我调整了框架的大小,它也没有显示任何内容。您确定app-triggered 绘画使用的是paintComponent() 而不是其他方法吗?
  • 是的。您是否阅读了对您的问题的初始评论中提供的链接?您还可以阅读 Custom Painting 上的 Swing 教程中的部分。发布您的 SSCCE 来证明问题。
猜你喜欢
  • 2011-09-18
  • 2011-10-25
  • 1970-01-01
  • 2011-04-14
  • 2021-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多