java - JComponent:如何以最正确的方式进行重绘?
问题描述
我们有以下方法:
java.awt.Component#repaint()
这是在 AWT 中重绘的旧方法。它不会立即重新绘制,它会安排重新绘制。
javax.swing.JComponent#repaint(long, int, int, int, int)
这是在 Swing 中重新绘制的新 Swing 方法。它使用 RepaintManager 安排重绘。
它们都可以从用户线程以及事件调度线程调用。
其中哪一个是重绘 Swing 组件 ( ) 的最正确方法JComponent
?
解决方案
其中哪一个是重绘 Swing 组件(JComponent)最正确的方法?
这两种方法都是正确的。
当您使用 setText()、setForeground()、setBackground() 等更改组件的属性时, Swing 组件始终会调用repaint()
。这将确保重新绘制整个组件。
repaint(...)
如果您需要优化组件的绘制,可以调用该方法。如果您有一个大型组件并且只有一小部分组件更改,您可以使用此方法。但是,我建议您不要担心这一点。Swing 绘画是双缓冲且高效的,因此很少需要优化绘画代码。
推荐阅读
- ruby-on-rails - 如何在 Sidekiq 上保持长期运行的连接
- unity3d - Animate scale of an object in the new shader graph system in Unity
- python - Python线程与连接作为循环连接
- html - 我必须将此 div 水平放置到中心。我怎样才能做到这一点?
- android - Android 上的 Chrome 是否支持使用 Webauthn / FIDO2 对安全密钥进行用户验证?
- python - 使用 Flask-SQLAlchemy 简化将关系数据插入数据库的过程
- ios - 使用 ARKit 将屏幕坐标映射到面部网格的纹理坐标
- java - Question on Compile Elasticsearch into a JAR like how it was done in the Maven repository
- swift - ARkit SCNMorpher 不适合我。没有错误,只是没有形状变化
- python - 你如何用字符串和整数创建一个 numpy 矩阵?