我是SmartGWT的新手,並且長時間無法解決此問題。當最大化/恢復窗口或拖動調整大小欄時圖表無法正確顯示(SmartGWT)
在我最大化/恢復窗口後,圖表不在正確的位置並且沒有調整大小,當我在窗口中拖動調整大小欄時,存在同樣的問題。但是,當我拖動窗口的邊緣,即使只是一點點,圖表也可以正確渲染。 (看起來像有一個延遲或什麼)
我希望我的圖表可以立即正確渲染窗口最大化/恢復,或當我拖動調整大小欄。不要試圖每次都拖動窗口邊緣來糾正它。
請看看下面的簡單情況:(我用的圖表HighCharts)
import org.moxieapps.gwt.highcharts.client.Chart;
import org.moxieapps.gwt.highcharts.client.Point;
import org.moxieapps.gwt.highcharts.client.Series;
import org.moxieapps.gwt.highcharts.client.ToolTip;
import org.moxieapps.gwt.highcharts.client.ToolTipData;
import org.moxieapps.gwt.highcharts.client.ToolTipFormatter;
import org.moxieapps.gwt.highcharts.client.labels.PieDataLabels;
import org.moxieapps.gwt.highcharts.client.plotOptions.PiePlotOptions;
import org.moxieapps.gwt.highcharts.client.plotOptions.PlotOptions;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.RootPanel;
import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.VLayout;
public class Test1 implements EntryPoint {
public void onModuleLoad() {
Window.enableScrolling(true);
Window.setMargin("0px");
HLayout mainLayout = new HLayout();
mainLayout.setWidth100();
mainLayout.setHeight100();
VLayout vl1 = new VLayout();
vl1.setWidth(250);
vl1.setHeight100();
vl1.setShowResizeBar(true);
VLayout vl2 = new VLayout();
vl2.setWidth100();
vl2.setHeight100();
HLayout top = new HLayout();
HLayout bottom = new HLayout();
VLayout topLeft = new VLayout();
VLayout topRight = new VLayout();
VLayout bottomLeft = new VLayout();
VLayout bottomRight = new VLayout();
topLeft.addMember(drawCharts());
topRight.addMember(drawCharts());
bottomLeft.addMember(drawCharts());
bottomRight.addMember(drawCharts());
top.setMembers(topLeft, topRight);
bottom.setMembers(bottomLeft, bottomRight);
vl2.setMembers(top, bottom);
mainLayout.setMembers(vl1, vl2);
RootPanel.get().add(mainLayout);
}
private Chart drawCharts() {
final Chart chart = new Chart()
.setType(Series.Type.PIE)
.setPlotBackgroundColor((String) null)
.setPlotBorderWidth(null)
.setPlotShadow(false)
.setOption("/chart/marginTop", 0)
.setOption("/chart/marginBottom", 10)
.setPiePlotOptions(
new PiePlotOptions()
.setAllowPointSelect(true)
.setCursor(PlotOptions.Cursor.POINTER)
.setPieDataLabels(
new PieDataLabels().setEnabled(false))
.setShowInLegend(true))
.setToolTip(new ToolTip().setFormatter(new ToolTipFormatter() {
public String format(ToolTipData toolTipData) {
return "<b>" + toolTipData.getPointName() + "</b>: "
+ toolTipData.getYAsDouble() + " %";
}
}));
chart.addSeries(chart
.createSeries()
.setName("Browser share")
.setPoints(
new Point[] {
new Point("Firefox", 45.0),
new Point("IE", 26.8),
new Point("Chrome", 12.8).setSliced(true)
.setSelected(true),
new Point("Safari", 8.5),
new Point("Opera", 6.2),
new Point("Others", 0.7) }));
return chart;
}
}
我是否需要添加一個調整大小處理程序來解決這個問題?
或者它可能是圖表佈局的問題?我將該區域分爲四部分(top_left,top_right,bottom_left,bottom_right),並將圖表分成每個部分。
任何人都知道如何解決這個困擾我很長一段時間的問題?讚賞。
啊,我明白了。感謝您的評論,這非常有用。我使用的圖表庫確實是第三方GWT小部件。我認爲SmartGWT也有自己的圖表小部件稱爲FacetCharts,是免費使用?謝謝。 – sozhen
@SongtaoZ圖表不屬於LGPL版本。你必須至少有專業版才能訪問HTML5圖表 –
啊,我明白了。我將使用HighCharts。感謝您的信息! – sozhen