我不是在问如何使用Java swing,也不是在询问有关使用布局管理器的建议。我只是好奇Java的行为方式。
一直以来都是一个神话,许多人推测,当您将框架或鼠标悬停在框架中的组件上时,Java 会自动重新绘制组件。
所以我的问题是:当我们执行上述某个操作时,Java是否自动重新绘制?
有几篇帖子的标题相似,如:Java repainting a component at mouse-over.
但是没有人可以肯定地回答Java是否在某些用户操作(例如调整大小和鼠标悬停)时自动重新绘制。
答案 0 :(得分:4)
一直以来都是一个神话,许多人推测
没有神话或猜测。
在调整大小时自动重新绘制组件
这是有道理的,因为调用了布局管理器,并且大小或位置可能会发生变化,这意味着某些组件可能需要重新绘制。
当鼠标悬停在框架中的组件上时,会自动重新绘制组件。
这取决于组件。如果已将MouseListener添加到组件中以进行特殊处理(即翻转按钮),则可以重新绘制组件,否则不会发生任何事情。但是没有默认绘画,除非它已被特别添加为组件的UI的一部分。
这些问题很容易验证。只需覆盖组件的paintCompent()
方法,即可在绘制组件时显示消息,看看会发生什么。