我有一个 Java - Eclipse RCP 应用程序。
编辑器有几个页面,其中一些包含 nebula.XYGraph 图表。
工具栏有一个动作,它循环遍历这些页面以拍摄每个图形的快照。
在循环中,我检索页面,使用 editor.setActivePage(页面索引)以便显示/刷新页面,然后调用 page.doSnapshot()。
然而,出现了几个问题:
- setActivePage()不显示页面,即用户看不到页面一个接一个的切换。就像 Action 的运行锁定/冻结 Editor UI,当到达循环结束时,最终只显示最后一页。
- 由于图表尚未显示,它们的某些组件(例如注释)未正确显示/定位。所以生成的快照是不正确的。仅当用户自己在执行操作之前已经打开该页面一次时,图表才是正确的。
我试过:
- 修改循环中函数调用的顺序
- 使用 Thread.sleep() 让页面有更多时间显示
- 使用作业的操作,因此一次管理一个页面
- 在执行 editor.addPage() 时使用 editor.setActivePage(),因此页面在创建时应显示一次(但随着页面再次循环添加,UI 中不会刷新/切换页面)
- 设置图形的注释位置,以及对 XYGraph 的其他操作。
什么都没用...