刚刚没发好,重发一次~这是我画柱状图的示例,请问为什么第一个可以,第二个不行?谢谢public static void main(String[] args) throws IOException{ CategoryDataset dataset = getDataSet2();
JFreeChart chart = ChartFactory.createBarChart3D(
"水果产量图", // 图表标题
"水果", // 目录轴的显示标签
"产量", // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
); FileOutputStream fos_jpg = null;
try {
fos_jpg = new FileOutputStream("D:\\fruit.jpg");
ChartUtilities.writeChartAsJPEG(fos_jpg,100,chart,400,300,null);
} finally {
try {
fos_jpg.close();
} catch (Exception e) {}
}
} private static CategoryDataset getDataSet() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, null, "苹果");
dataset.addValue(200, null, "梨子");
return dataset;以上示例正确,可以生成柱状图
---------------------------------------------------
下面这个示例无法生成柱状图,提示报空指针 位置在ChartUtilities.writeChartAsJPEG(fos_jpg,100,chart,400,300,null);行,我觉得应该是chart有错,但我不知道错在哪?该如何改
public class MAP4Action extends Action { static final private String FORWARD_done = "done"; public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception
{
HttpSession session = request.getSession(); Connection conn3 = DBControl.getInstance("tempdb");
Statement stmt3 = conn3.createStatement();
String strSQL="select * from tempdb..wl"+session.getAttribute("mainname")+" order by showid";
ResultSet rs = stmt3.executeQuery(strSQL); double yhye;
DefaultCategoryDataset dataset1 = new DefaultCategoryDataset();
if (rs!=null && rs.next()){
do
{
Double yhye_map = new Double(ChangeJe.change(Encode.iso2GBK(rs.getString("yhye")),"元"));
yhye=yhye_map.doubleValue();
dataset1.addValue(yhye,null,Encode.iso2GBK(rs.getString("dw")));
}while(rs.next());
} CategoryDataset dataset = dataset1;
JFreeChart chart = ChartFactory.createBarChart3D(
"查询比较结果", // 图表标题
"单位", // 目录轴的显示标签
"RMB", // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
); FileOutputStream fos_jpg = null;
try
{
fos_jpg = new FileOutputStream("c:\\resin\\webapps\\bank\\jsp\\gif\\datapic\\map4_"+session.getAttribute("mainname")+".jpg");
ChartUtilities.writeChartAsJPEG(fos_jpg,100,chart,400,300,null);
}
finally
{
try
{
fos_jpg.close();
}
catch (Exception e) {}
} ActionForward af = new ActionForward();
af.setPath("/jsp/gif/datapic/map4_"+session.getAttribute("mainname")+".jpg");
return af;
}
}
JFreeChart chart = ChartFactory.createBarChart3D(
"水果产量图", // 图表标题
"水果", // 目录轴的显示标签
"产量", // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
); FileOutputStream fos_jpg = null;
try {
fos_jpg = new FileOutputStream("D:\\fruit.jpg");
ChartUtilities.writeChartAsJPEG(fos_jpg,100,chart,400,300,null);
} finally {
try {
fos_jpg.close();
} catch (Exception e) {}
}
} private static CategoryDataset getDataSet() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, null, "苹果");
dataset.addValue(200, null, "梨子");
return dataset;以上示例正确,可以生成柱状图
---------------------------------------------------
下面这个示例无法生成柱状图,提示报空指针 位置在ChartUtilities.writeChartAsJPEG(fos_jpg,100,chart,400,300,null);行,我觉得应该是chart有错,但我不知道错在哪?该如何改
public class MAP4Action extends Action { static final private String FORWARD_done = "done"; public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception
{
HttpSession session = request.getSession(); Connection conn3 = DBControl.getInstance("tempdb");
Statement stmt3 = conn3.createStatement();
String strSQL="select * from tempdb..wl"+session.getAttribute("mainname")+" order by showid";
ResultSet rs = stmt3.executeQuery(strSQL); double yhye;
DefaultCategoryDataset dataset1 = new DefaultCategoryDataset();
if (rs!=null && rs.next()){
do
{
Double yhye_map = new Double(ChangeJe.change(Encode.iso2GBK(rs.getString("yhye")),"元"));
yhye=yhye_map.doubleValue();
dataset1.addValue(yhye,null,Encode.iso2GBK(rs.getString("dw")));
}while(rs.next());
} CategoryDataset dataset = dataset1;
JFreeChart chart = ChartFactory.createBarChart3D(
"查询比较结果", // 图表标题
"单位", // 目录轴的显示标签
"RMB", // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
); FileOutputStream fos_jpg = null;
try
{
fos_jpg = new FileOutputStream("c:\\resin\\webapps\\bank\\jsp\\gif\\datapic\\map4_"+session.getAttribute("mainname")+".jpg");
ChartUtilities.writeChartAsJPEG(fos_jpg,100,chart,400,300,null);
}
finally
{
try
{
fos_jpg.close();
}
catch (Exception e) {}
} ActionForward af = new ActionForward();
af.setPath("/jsp/gif/datapic/map4_"+session.getAttribute("mainname")+".jpg");
return af;
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货