• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

161
Views
JFree Chart con datos de la base de datos MySQL en un JPanel

Estoy tratando de implementar un JFree Chart en mi programa, actualmente estoy desarrollando una aplicación Java Swing. Quiero mostrar el gráfico en un panel dentro de la aplicación. Entonces, la tabla de la que quiero extraer los datos para el gráfico es la siguiente:


 -----------------------
| estados_totales_diarios|
 -----------------------
| ID de referencia (PK) |
| Valor |
| Fecha |
 -----------------------

y el código que he usado para implementar el gráfico es:

 public void buidGraph(JPanel jp) { DefaultCategoryDataset dataset = createDataset(); JFreeChart chart = ChartFactory.createLineChart( "Daily Progress", "Date", // X-Axis Label "Number of Members", // Y-Axis Label dataset ); ChartPanel panel = new ChartPanel(chart); jp.add(panel); }

El código del conjunto de datos que pensé que funcionaría y que estoy un poco confundido por él:

 private DefaultCategoryDataset createDataset() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); try { String query = "SELECT `Value`, `Date` FROM `daily_total_statements` ORDER BY `Date` ASC"; Connection c = MySQL_Database.getInstance().getConnection(); PreparedStatement ps = c.prepareStatement(query); ResultSet rs = ps.executeQuery(); String series2 = "Daily progress"; while (rs.next()) { dataset.addValue(rs.getInt(1), series2, rs.getString(2)); } } catch (SQLException e) { JOptionPane.showMessageDialog(null, "Problem creating chart! " + e.getMessage()); } return dataset; }

Estoy usando una clase singleton para la base de datos como puede ver. El problema es que el gráfico no se muestra en absoluto, es solo un panel vacío. ¡Por favor, si pudieras ayudar! ¡Perdón por el mal formato y lenguaje!

about 3 years ago · Santiago Trujillo
1 answers
Answer question

0

Debido a que un ChartPanel es un JPanel , simplemente puede agregarlo a su marco, como se muestra a continuación. El diseño predeterminado del marco es BorderLayout y la restricción predeterminada es CENTER . Además,

  • Utilice uno de los enfoques que se ven aquí para establecer el tamaño inicial del gráfico.
  • Utilice un diseño adecuado para controlar el comportamiento de cambio de tamaño.
  • Considere usar JDBCXYDataset , ilustrado aquí

Grafico

 import java.awt.Dimension; import java.awt.EventQueue; import javax.swing.JFrame; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.PlotOrientation; import org.jfree.data.category.DefaultCategoryDataset; public class GraphTest extends JFrame { public GraphTest() { initComponents(); } private void initComponents() { add(buildLineGraph()); pack(); setDefaultCloseOperation(EXIT_ON_CLOSE); setLocationRelativeTo(null); setVisible(true); } public static void main(String args[]) { EventQueue.invokeLater(GraphTest::new); } public ChartPanel buildLineGraph() { DefaultCategoryDataset dataset = createLineGraphDataset(); JFreeChart chart = ChartFactory.createLineChart("Daily Progress", "Day", "Value", dataset, PlotOrientation.VERTICAL, true, true, false); return new ChartPanel(chart) { @Override public Dimension getPreferredSize() { return new Dimension(640, 480); } }; } private DefaultCategoryDataset createLineGraphDataset() { // TODO: use JDBCXYDataset DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(1, "Result", "Mon"); dataset.addValue(5, "Result", "Tue"); dataset.addValue(7, "Result", "Wed"); return dataset; } }
about 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error