gFlot get color..它何时连接到GWT中的DOM

gFlot get color..它何时连接到GWT中的DOM,gwt,flot,Gwt,Flot,由于组件连接到DOM后打印的颜色是固定的。我什么时候可以使用GWT调用该方法?我应该实现什么处理程序才能在正确的时间到达 编辑: 实际上下文类似于vp是垂直面板: plot=createPlotGraph(); if (plot!=null){ plot.setSize("100%","100%"); vp.add(plot);

由于组件连接到DOM后打印的颜色是固定的。我什么时候可以使用GWT调用该方法?我应该实现什么处理程序才能在正确的时间到达

编辑: 实际上下文类似于vp是垂直面板:

                plot=createPlotGraph();
                if (plot!=null){
                    plot.setSize("100%","100%");
                    vp.add(plot);
                    vp.setCellHeight(plot, "100%");                     

                    plot.addAttachHandler(new AttachEvent.Handler() {

                       @Override
                        public void onAttachOrDetach(AttachEvent event) {
                            plot.getModel().getSeries().get(0).getAutoGeneratedColor()
                            System.out.println(plot.getModel().getSeries().length());
                            System.out.println(plot.getModel().getSeries().get(0).getColor());

                       }
                    });
                }
我发现我有3个或更多的系列,它们都被正确地渲染了,我在屏幕上看到了所有的ok,但是println写下的颜色总是空的

其他尝试:

      if (plot!=null){
                    plot.setSize("100%","100%");



                    plot.addAttachHandler(new AttachEvent.Handler() {

                        @Override
                        public void onAttachOrDetach(AttachEvent event) {

                            System.out.println(plot.getModel().getSeries().length());
                            System.out.println(plot.getModel().getSeries().get(0).getColor());

                        }
                    });



                    vp.add(plot);
                    vp.setCellHeight(plot, "100%");

                }
同样的结果

更新,其他请尝试:

        plot.setSize("100%","100%");



                    plot.addAttachHandler(new AttachEvent.Handler() {

                        @Override
                        public void onAttachOrDetach(AttachEvent event) {

                            Scheduler.get().scheduleDeferred(new ScheduledCommand() {
                                @Override
                                public void execute() {
                                    System.out.println(plot.getModel().getSeries().length());
                                    System.out.println(plot.getModel().getSeries().get(0).getColor());
                                }
                            });                             
                        }
                    });
相同的结果…null

您应该向小部件添加一个:

widget.addAttachHandlernew AttachEvent.Handler{ @凌驾 公共事件{ 如果event.isAttached{ //小部件已连接到DOM }否则{ //独立的 } } }; 如果您在访问JSNI包装器的值(在本例中为gflot)时遇到问题,那么将调用包装到ScheduledCommand中通常会有所帮助。这将确保在浏览器事件循环返回后执行该命令,此时包装器应该在DOM中正确初始化

Scheduler.get.scheduleDeferrednew ScheduledCommand{ @凌驾 公开无效执行{ System.out.printlnplot.getModel.getSeries.length; System.out.printlnplot.getModel.getSeries.get0.getColor; } };
直接从gFlot论坛获得的实际解决方案:

plot.getPlot().getData().get(n).getString("color")
系列不是直接使用的,而是复制的,并且颜色不设置在原始系列上


希望能对其他人有所帮助

如果使用widget,您指的是我已经尝试过的gflot实例,但是…我的结果为空,可以提供更多详细信息吗?你试过什么?您是否遵循了上的说明?我有一个GWT SimplePanel,在外部事件(按钮事件)中,它是我高尔夫球的容器。基本上,顺序是:按钮->gflot创建-->在gflot对象上添加您建议的事件处理程序…在事件测试系列颜色中…请使用尽可能多的相关信息更新原始问题。将其压缩到注释中不会有多大帮助。看起来应该首先添加附加处理程序,然后添加绘图。否则,在添加处理程序之前,可能会触发AttachEvent…只是尝试了在编辑中看到的方式…相同的结果3系列,空颜色请查看我的更新答案。似乎问题出在其他地方。。。