有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Batik画布的getUpdateManager返回null

当使用蜡染从JSVGCanvas获取UpdateManager时,它返回null

public void init() {
    canvas = new JSVGCanvas(null, true, false);
    canvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC);
}

public void paint(final DomainObject domainObject) {
    UpdateManager updateManager = canvas.getUpdateManager();
    RunnableQueue runnableQueue = updateManager.getUpdateRunnableQueue();
    runnableQueue.invokeLater(new Runnable() {
        public void run() {
            // Document operations here
        }
    });
}

如何管理此错误


共 (1) 个答案

  1. # 1 楼答案

    绘画方法必须分成两部分,一部分是将GVTTreeRendererListener注册到JSVGCanvas对象。渲染完成后,此侦听器将调用执行实际绘制工作的方法,此时UpdateManager对象将出现在画布中

    public void init() {
        canvas = new JSVGCanvas(null, true, false);
        canvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC);
    }
    
    public void paint(final DomainObject domainObject) {
        canvas.addGVTTreeRendererListener(new GVTTreeRendererAdapter() {
            public void gvtRenderingCompleted(GVTTreeRendererEvent e) {
                renderComplete(domainObject);
            }
        });
    }
    
    public void renderComplete(DomainObject domainObject) {
        UpdateManager updateManager = canvas.getUpdateManager();
        RunnableQueue runnableQueue = updateManager.getUpdateRunnableQueue();
        runnableQueue.invokeLater(new Runnable() {
            public void run() {
                // Document operations here
            }
        });
    }
    

    免责声明: 答案是在这个蜡染论坛上找到的,我决定把它记录在这里,作为一个更有用的资源http://batik.2283329.n4.nabble.com/UpdateManager-is-Null-td2974717.html