JDBCCategoryDataset
클래스를 사용하여 JFrame 안에 세 개의 차트를 만들고 싶습니다.JDBCCategoryDataset - 여러 쿼리 실행
어떻게 세 가지 별도의 쿼리를 제공 할 수 있습니까? 데이터 집합 개체에서 세 가지 다른 쿼리를 제공했지만 그 결과 세 가지 유사한 차트가 표시되었습니다. 또한 세 가지 모두에 대한 마지막 쿼리를 실행합니다. DefaultPieDataset
주어진 기본 (정적) 값으로 완료되는 방식을 보았지만 데이터베이스에서 동적으로 데이터를 검색하려고합니다.
여러 개의 JDBCCategoryDataset
개체를 만들 수 있습니다. 더 좋은 방법이 있습니까?
package barchart;
import Extra.OpenFile;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.SQLException;
import javax.swing.JFrame;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.data.jdbc.JDBCCategoryDataset;
import org.jfree.ui.RefineryUtilities;
public class Chart {
public static void main(String[] args) throws IOException {
try {
JDBCCategoryDataset dataset = new JDBCCategoryDataset(
"jdbc:mysql://localhost:3306/jobfinder",
"com.mysql.jdbc.Driver","giannis", "giannis");
JFrame frame = new JFrame("Charts");
frame.setLayout(new GridLayout(2,1));
String query = "";
query = OpenFile.getContent("query"); //Gets the query from a file
// cause it's big.It's a custom class.
dataset.executeQuery(query);
JFreeChart chart =
ChartFactory.createBarChart3D("Job Statistics", "Posts/Replys", "Quantity",
dataset, PlotOrientation.VERTICAL, true, true, false);
chart.setBackgroundPaint(Color.white);
CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setBackgroundPaint(Color.lightGray);
plot.setRangeGridlinePaint(Color.white);
BarRenderer renderer = (BarRenderer) plot.getRenderer();
renderer.setSeriesPaint(1, Color.CYAN);
renderer.setSeriesPaint(0, Color.DARK_GRAY);
renderer.setDrawBarOutline(false);
renderer.setItemMargin(0.0);
ChartPanel chartPanel = new ChartPanel(chart, false);
chartPanel.setPreferredSize(new Dimension(700, 270));
frame.add(chartPanel);
// query = "SELECT occuDscr Jobs,COUNT(pstOccuId) Quantity FROM occupation_field " +
// "INNER JOIN job_post ON occuId = pstOccuId GROUP BY Jobs";
// dataset.executeQuery(query);
// JFreeChart chart1 =
// ChartFactory.createBarChart3D("Job Statistics", "Posts/Replys", "Quantity",
// dataset, PlotOrientation.VERTICAL, true, true, false);
//
// ChartPanel chartPanel1 = new ChartPanel(chart1, false);
// chartPanel.setPreferredSize(new Dimension(500/2, 270/2));
//
// frame.add(chartPanel1);
//
// query = "SELECT occuDscr Jobs,COUNT(usrOccuId) Quantity FROM occupation_field " +
// "INNER JOIN users ON occuId = usrOccuId GROUP BY Jobs";
// dataset.executeQuery(query);
// JFreeChart chart2 =
// ChartFactory.createBarChart3D("Job Statistics", "Posts/Replys", "Quantity",
// dataset, PlotOrientation.VERTICAL, true, true, false);
//
// ChartPanel chartPanel2 = new ChartPanel(chart2, false);
// chartPanel.setPreferredSize(new Dimension(500/2, 270/2));
//
// frame.add(chartPanel2);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
RefineryUtilities.centerFrameOnScreen(frame);
} catch (FileNotFoundException fe) {
System.out.println("Error Occurred " + fe.getMessage());
System.exit(0);
} catch (IOException ie) {
System.out.println("Error Occurred " + ie.getMessage());
System.exit(0);
} catch (ClassNotFoundException ce) {
System.out.println("Error Occurred " + ce.getMessage());
System.exit(0);
} catch (SQLException se) {
System.out.println("Error Occurred " + se.getMessage());
System.exit(0);
}
}
}
일부 코드 샘플을 사용하여 CategoryDataset 인스턴스를 작성할 수 있습니까? –
위의 개요를 제안하려고했습니다. – trashgod