gpt4 book ai didi

java - 如何等到 JComponent 完全绘制完成?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:58:43 24 4
gpt4 key购买 nike

我需要一种方法来等待(Swing)JComponent 被完全绘制。这个实际问题来自一个 openmap 应用程序:任务是绘制一个具有几个图层的 map (mapBean) 并从该 map 创建一个图像。

不幸的是,它被清楚地记录在案,图像格式化程序从 map 中获取当前状态来创建图片,并且有可能,尤其是本地图变得复杂时,格式化程序会在绘制 mapBean(一个 JComponent)之前被调用.

虽然用这个 openmap 应用程序进行了解释,但这个问题非常普遍,而且据说与 Swing 相关。现在,我只是等待一段固定的时间(一秒钟),但这并不能消除创建不完整 map 的风险......

编辑

更多细节 - 我必须从构建 (OpenMap) MapPanel 开始,它会在内部创建一个 MapBean(JComponent 子类)和一个 MapHandler。然后我为 MapHandler 提供地理层,框架开始在 JComponent 类型 MapBean 上绘制地理数据。

将所有图层添加到 map 后,我使用另一个框架类来创建 JPG 图像(或:保存图像数据的 byte[])。如果我不等待, 可能会导致问题:这个“图像创建者”根据 map bean 的当前状态创建图像,如果我提前调用这个“图像创建者”,一些 map 图层未绘制和丢失。很烦人...

最佳答案

java.awt.EventQueue.invokeLater 将允许您在绘制操作完成后运行任务。如果它正在进行某种异步加载,那么它将是特定于 API 的(如 MediaTrackerImage 所做的那样)。

关于java - 如何等到 JComponent 完全绘制完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1342932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com