Java 来自数据库的JFreeChart条形图数据集
我的目标是使用JFreeChart生成 我正在尝试使用MVC从数据库中获取JFreeChart数据;Bean、数据访问对象(DAO)和Servlet。我在Servlet中编写代码时遇到问题。以下代码是我到目前为止的代码 帮助将被恳求并提前感谢您!:) 数据库 id |收入Java 来自数据库的JFreeChart条形图数据集,java,database,model-view-controller,jfreechart,bar-chart,Java,Database,Model View Controller,Jfreechart,Bar Chart,我的目标是使用JFreeChart生成 我正在尝试使用MVC从数据库中获取JFreeChart数据;Bean、数据访问对象(DAO)和Servlet。我在Servlet中编写代码时遇到问题。以下代码是我到目前为止的代码 帮助将被恳求并提前感谢您!:) 数据库 id |收入 R1 | 999 M3 | 832 G7 | 318 Bean public class Revenue { private String id; private Integer revenue; //g
R1 | 999
M3 | 832
G7 | 318 Bean
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;
}
}
public ArrayList getAllRevenueList()
{
尝试
{
//司机
//连接代码
String sql=“选择id,来自收入表的收入”;
语句stmt=con.createStatemtnt();
结果集rs=stmt.executeQuery(sql);
ArrayList revenueList=新ArrayList();
while(rs.next)
{
收入r=新收入();
r、 setId(rs.getString(“id”);
r、 setRevenue(Integer.parseInt(rs.getString(“revenue”));
revenueList.add(r);//将对象添加到列表
}
回归复仇者;
}
捕获(例外e)
{
e、 printStackTrace();
返回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;
}
protectedvoiddoget(HttpServletRequest),
HttpServletResponse响应)引发ServletException,IOException{
response.setContentType(“image/png”);
OutputStream OutputStream=response.getOutputStream();
JFreeChart chart=getRevenueChart();
整数宽度=1100;
内部高度=350;
ChartUtilities.writeChartAsPNG(输出流、图表、宽度、高度);
}
公共JFreeChart getRevenueChart(){
//无法实例化类型CategoryDataset
CategoryDataset dataset=新CategoryDataset();
ArrayList revenueList=DAO.getAllRevenueList();
if(revenueList!=null&&!revenueList.isEmpty()){
for(Bean r:收入者){
setValue(r.getRevenue(),r.getID());
}
}
JFreeChart chart=ChartFactory.createBarChart3D(“图形标题”,
“身份证”,
“收入”,
数据集,
PlotOrientation.VERTICAL,
假,,
假,,
假);
CategoryPlot=chart.getCategoryPlot();
CategoryAxis轴=plot.getDomainAxis();
CategoryItemRenderer=plot.getRenderer();
BarRenderer=(BarRenderer)渲染器;
r、 设置最大宽度(0.95);
收益表;
}
如果您的问题是根据给定的列表创建图表,请尝试以下操作
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for (Revenue revenue : revenueList) {
// the middle parameter is for naming the value, can be empty if you have just one
dataset.addValue(revenue.getRevenue(), "", revenue.getId());
}
JFreeChart chart = ChartFactory.createBarChart(
"",
"",
"Revenues",
dataset,
PlotOrientation.VERTICAL,
true,
false,
false
); // or whatever parameters you need
关于静态工厂方法的信息是。那么您在创建图表时遇到问题了吗?你试过什么?或者在Servlet中应该做什么?你试过什么?很有魅力!谢谢!:)