@朱宗鑫1 你好,想跟你请教个问题:
请问一下用过ofcgwt显示图表的组件没有!并请给出一个读取数据库数据并在ofcgwt上显示的具体例子好吗? 邮箱:dixuexiongying1234@163.com QQ:372089866 不胜感激
没用过,不过看了下它其实就是这个项目的延伸http://teethgrinder.co.uk/open-flash-chart-2/
只要数据库取出来的数据组织成他指定的JSON格式就可以:
http://teethgrinder.co.uk/open-flash-chart-2/tutorial-6.php
看例子:http://ofcgwt.googlecode.com/svn/demo/Demo.html
看了下他也只是封装了下,你看下
http://ofcgwt.googlecode.com/svn/trunk/src/com/rednels/ofcgwt/client/ChartWidget.java
这个文件,里面主要是几个函数
private native void loadJSON(String id, String json)
/* Copyright (C) 2009 Grant Slender This file is part of OFCGWT. http://code.google.com/p/ofcgwt/ OFCGWT is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. OFCGWT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. See <http://www.gnu.org/licenses/lgpl-3.0.txt>. */ package com.rednels.ofcgwt.client; import java.util.Date; import java.util.List; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.ui.Widget; import com.rednels.ofcgwt.client.event.ChartClickEvent; import com.rednels.ofcgwt.client.event.ChartClickHandler; import com.rednels.ofcgwt.client.event.DataValueEvents; import com.rednels.ofcgwt.client.event.KeyClickHandler; import com.rednels.ofcgwt.client.model.ChartData; /** * A gwt chart widget based on Open Flash Chart.</br></br> * * Create the ChartWidget and add anywhere a GWT widget can be used. Use the * model {@link ChartData} to build a chart and then pass to * {@link ChartWidget#setChartData(ChartData)} and it will generate and set the * correct JSON data. * <p/> * You can also set JSON via the {@link #setJsonData(String)} method. * */ public class ChartWidget extends Widget { public static final String MIN_PLAYER_VERSION = "9.0.0"; public static final String ALTERNATE_SWF_SRC = "expressInstall.swf"; private static final CacheFixImpl cacheFixImpl = GWT.create(CacheFixImpl.class); private static int count = 0; private boolean isSWFInjected = false; private boolean cacheFixEnabled = false; private boolean hasFlashPlayer = false; private String swfId; private String swfDivId; private String jsonData = ChartFactory.BLANK_CHART_JSON_DATA; private String width = "100%"; private String height = "100%"; private String innerDivTextForFlashPlayerNotFound = "FlashPlayer ${flashPlayer.version} is required."; private String flashurl = "ofcgwt/open-flash-chart.swf"; private String urlPrefix = GWT.getModuleBaseURL(); private ChartData chartData; private Element chartElement; /** * Creates a new ChartWidget. * */ public ChartWidget() { swfId = "swfID_" + count; swfDivId = "swfDivID_" + count; ++count; chartElement = DOM.createElement("div"); DOM.setElementProperty(chartElement, "id", swfDivId); setElement(chartElement); setSize(width, height); hasFlashPlayer = hasFlashPlayerVersion(MIN_PLAYER_VERSION); cacheFixEnabled = cacheFixImpl.isCacheFixNeeded(); } /** * Gets the current OFC flash URL. Defaults to just "open-flash-chart.swf" * * @return the flashurl */ public String getFlashUrl() { return flashurl; } /** * Gets the objects height. * * @return height */ public String getHeight() { return height; } /** * Gets the InnerDiv Text for when flash player is not found or can't be * injected. * * @return string */ public String getInnerDivTextForFlashPlayerNotFound() { return innerDivTextForFlashPlayerNotFound; } /** * Gets the current JSON data for this chart. * * @return a JSON string */ public String getJsonData() { return jsonData; } /** * @return the swfId */ public String getSwfId() { return swfId; } /** * @return the urlPrefix */ public String getUrlPrefix() { return urlPrefix; } /** * Gets the objects width. * * @return width */ public String getWidth() { return width; } /** * Is the CacheFix Enabled? * * @return true if cache fix is enabled, false if not */ public boolean isCacheFixEnabled() { return cacheFixEnabled; } /** * Obtains raw image data of this chart. Call returns null if the flash * chart is not loaded. * * @return String chart image data */ public String getImageData() { if (hasFlashPlayer && isSWFInjected) { return getImageData(getSwfId()); } return null; } /** * Enables an fix/workaround that stops caching of the swf which on IE may * solve some bugs. The workaround adds a unique parameter url to each SWF * making each chart widget non-cachable. On IE this feature is enabled by * default, other agents it is disabled. </br></br>Enable this if you find * problems in with multiple charts. * * @param enable * - true to enable, false to disable */ public void setCacheFixEnabled(boolean enable) { this.cacheFixEnabled = enable; } /** * Sets this charts ChartData and processes it for handlers/events * * @param cd * the ChartData model */ public void setChartData(ChartData cd) { this.chartData = cd; for (com.rednels.ofcgwt.client.model.elements.Element e : chartData.getElements()) { // add chart click events... for (ChartClickHandler cch : e.getChartClickHandlers()) { String onclick = "ofc_onclick('" + getSwfId() + "','" + cch.hashCode() + "')"; e.setOnClick(onclick); } // add key click events... for (KeyClickHandler kch : e.getKeyClickHandlers()) { String onclick = "ofc_onclick('" + getSwfId() + "','" + kch.hashCode() + "')"; e.setKeyOnClick(onclick); } for (Object o : e.getValues()) { if (o instanceof DataValueEvents) { // add data value click events... DataValueEvents dve = (DataValueEvents) o; for (ChartClickHandler ch : dve.getHandlers()) { String onclick = "ofc_onclick('" + getSwfId() + "','" + ch.hashCode() + "')"; dve.setOnClick(onclick); } } } } setJsonData(chartData.buildJSON().toString()); } /** * Sets the OFC flash URL. ie "\path\open-flash-chart.swf" * * @param url * string */ public void setFlashUrl(String url) { this.flashurl = url; } public void setHeight(String height) { height = height.trim().toLowerCase(); super.setHeight(height); // Width validation this.height = height; if (getHeight().equals(height)) { if (isSWFInjected) { Element elem = DOM.getFirstChild(getElement()); DOM.setElementAttribute(elem, "height", height); } } } /** * Sets the InnerDiv Text for when flash player is not found or can't be * injected. <br> * Defaults to "FlashPlayer ${flashPlayer.version} is required." * * @param divtext * a string */ public void setInnerDivTextForFlashPlayerNotFound(String divtext) { this.innerDivTextForFlashPlayerNotFound = divtext; } /** * Sets the JSON data for this chart & updates the chart if ready. Does * nothing if the required flash player is not loaded. * * @param json * a JSON string */ public void setJsonData(String json) { // System.out.println(json); this.jsonData = json; if (hasFlashPlayer && isSWFInjected) { loadJSON(swfId, jsonData); } } /** * Sets the url prefix of the OFC flash swf file. Defaults to the value of * GWT.getModuleBaseURL() * * @param urlPrefix * a URL string */ public void setUrlPrefix(String urlPrefix) { this.urlPrefix = urlPrefix; } public void setWidth(String width) { width = width.trim().toLowerCase(); super.setWidth(width); // Width validation this.width = width; if (getWidth().equals(width)) { if (isSWFInjected) { Element elem = DOM.getFirstChild(getElement()); DOM.setElementAttribute(elem, "width", width); } } } protected void doOnChartClick(String evt) { for (com.rednels.ofcgwt.client.model.elements.Element e : chartData.getElements()) { for (Object o : e.getValues()) { if (o instanceof DataValueEvents) { DataValueEvents ee = (DataValueEvents) o; for (ChartClickHandler ch : ee.getHandlers()) { if (evt.equals("" + ch.hashCode())) { ch.onClick(new ChartClickEvent()); } } } } } } protected List<ChartClickHandler> getHandlers() { return null; } protected void onAttach() { chartElement.setInnerHTML("<div id=\"embed_" + swfId + "\">" + emptyInnerDiv() + "</div>"); ChartFactory.get().register(this); if (!isSWFInjected) { injectSWF(getInternalSWFURL(isCacheFixEnabled(), urlPrefix + flashurl, swfId), swfId, getWidth(), getHeight(), MIN_PLAYER_VERSION, ALTERNATE_SWF_SRC); isSWFInjected = true; } super.onAttach(); } protected void onDetach() { ChartFactory.get().unregister(this); chartElement.removeChild(chartElement.getChildNodes().getItem(0)); isSWFInjected = false; super.onDetach(); } private String emptyInnerDiv() { return getInnerDivTextForFlashPlayerNotFound().replaceAll("\\$\\{flashPlayer.version\\}", MIN_PLAYER_VERSION); } /** * Used internally to returns the correct open flash chart swf url * * @return the swf url string */ private String getInternalSWFURL(boolean iefix, String flashurl, String id) { if (!iefix) return flashurl; return flashurl + ("?id=" + id + (new Date().getTime())); } private native boolean hasFlashPlayerVersion(String v) /*-{ return $wnd.swfobject.hasFlashPlayerVersion(v); }-*/; private native void injectSWF(String swf, String id, String w, String h, String ver, String alt) /*-{ var flashvars = {id: id,allowResize: true}; var params = {scale: 'noscale', allowscriptaccess:'always',wmode: 'transparent'}; var attributes = { data: swf, width: w, height: h, id: id, name: id }; $wnd.swfobject.embedSWF(swf, "embed_"+id, w, h, ver, alt, flashvars, params, attributes); }-*/; private native void loadJSON(String id, String json) /*-{ var swf = $doc.getElementById(id); if ('load' in swf) swf.load(json); }-*/; private native String getImageData(String id) /*-{ var swf = $doc.getElementById(id); var data = null; if ('get_img_binary' in swf) data = swf.get_img_binary(); return data; }-*/; }
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。