0
我的目標是使用JFreeChart生成this Bar Chart。來自數據庫的JFreeChart條形圖數據集
我想從數據庫中使用MVC獲取JFreeChart數據; Bean,數據訪問對象(DAO)和Servlet。我在Servlet中執行代碼時遇到問題。下面的代碼是我到目前爲止。
幫助將appeciate,並提前感謝您! :)
數據庫
ID |收入
R1 | 999
M3 | 832
G7 | 318
豆
public class Revenue
{
private String id;
private Integer revenue;
//getters and setters
}
DAO
public ArrayList<Revenue> getAllRevenueList()
{
try
{
//driver
//connection code
String sql = "SELECT id,revenue FROM revenue_table";
Statement stmt = con.createStatemtnt();
ResultSet rs = stmt.executeQuery(sql);
ArrayList<Revenue> revenueList = new ArrayList<Revenue>();
while(rs.next)
{
Revenue r = new Revenue();
r.setId(rs.getString("id"));
r.setRevenue(Integer.parseInt(rs.getString("revenue")));
revenueList.add(r); //add object to list
}
return revenueList;
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}
的Servlet
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("image/png");
OutputStream outputStream = response.getOutputStream();
JFreeChart chart = getRevenueChart();
int width = 1100;
int height = 350;
ChartUtilities.writeChartAsPNG(outputStream, chart, width, height);
}
public JFreeChart getRevenueChart() {
//Cannot instantiate the type CategoryDataset
CategoryDataset dataset = new CategoryDataset();
ArrayList<Bean> revenueList = DAO.getAllRevenueList();
if (revenueList != null && !revenueList.isEmpty()) {
for (Bean r : revenueList) {
dataset.setValue(r.getRevenue(), r.getID());
}
}
JFreeChart chart = ChartFactory.createBarChart3D("Graph Title",
"ID",
"Revenue",
dataset,
PlotOrientation.VERTICAL,
false,
false,
false);
CategoryPlot plot = chart.getCategoryPlot();
CategoryAxis axis = plot.getDomainAxis();
CategoryItemRenderer renderer = plot.getRenderer();
BarRenderer r = (BarRenderer) renderer;
r.setMaximumBarWidth(0.95);
return chart;
}
因此,您在創建圖表時遇到問題?你有什麼嘗試?或者什麼都應該在Servlet中完成?你有什麼嘗試? – Erlik