Je souhaite créer trois graphiques dans un JFrame en utilisant la classe JDBCCategoryDataset
.JDBCCategoryDataset - exécute plusieurs requêtes
Comment puis-je donner trois requêtes distinctes? J'ai donné trois requêtes différentes dans l'objet ensemble de données, mais le résultat était d'afficher trois cartes similaires. En outre, il exécute la dernière requête pour tous les trois. J'ai vu la façon dont cela est fait avec DefaultPieDataset
donné des valeurs (statiques) par défaut, mais je veux récupérer des données dynamiquement à partir de la base de données.
Je sais que je peux créer plusieurs objets JDBCCategoryDataset
? Y a-t-il un meilleur moyen?
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);
}
}
}
Pouvez-vous m'aider à composer une instance CategoryDataset avec un échantillon de code. –
J'ai essayé de suggérer un contour ci-dessus. – trashgod