【发布时间】:2023-04-02 22:01:01
【问题描述】:
我对 Swing 绘画模型有点困惑。
假设我有一个 JComponent 组件,并且我执行以下操作:
c.setBackground(Color.RED);
c.setBackground(Color.YELLOW);
显然,最终的结果是颜色是黄色的。
Swing 如何处理这个问题?
第一次调用是否会触发立即重绘,所以在黄色之前会有短暂的红色闪烁?这个序列是不是比仅仅涂上一层黄色要慢得多?
如果我从 Swing Event 线程之外运行它,我会假设在大多数情况下(尽管可能出现竞争条件),当 Swing EDT 访问该属性时,该属性已设置为黄色,因此将永远不要被涂成红色。
但是,我的理解是我应该从 Swing EDT 中的 Runnable 内部进行这些调用。那是对的吗?在这种情况下,EDT 似乎必须在没有任何“前瞻”的情况下完全执行每个更改?
【问题讨论】:
标签: java performance swing