重新调整大小或鼠标悬停时,Java是否会重新绘制组件?

时间:2015-02-15 19:02:51

标签: java swing repaint

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

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

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


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

但是没有人可以肯定地回答Java是否在某些用户操作(例如调整大小和鼠标悬停)时自动重新绘制。

1 个答案:

答案 0 :(得分:4)

  

一直以来都是一个神话,许多人推测

没有神话或猜测。

  

在调整大小时自动重新绘制组件

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

  当鼠标悬停在框架中的组件上时,

会自动重新绘制组件。

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

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