Witam.
Jestem początkujący z javy i mam pewien problem. Chcę napisać program który będzie rysował wykres z bazy danych. Korzystam z gotowych wykresów JFreeChart (Chyba że macie jakis program który sam rysuje wykres). Mam gotowy program ale rysuje on wykres z podanych liczb a teraz potrzebuję żeby te liczby pobierał z bazy danych. Bazę danych zrobiłem w Microsoft Access i łączę się z nią poprzesz sterownik ODBC. Załóżmy że mam prostą tabelę temperatura i tam mamy dwie kolumny ID i temp. I chcę żeby wykres rysował się pobierając te temperatury z bazy danych.
Mam taki program w którym sam podaje liczby:
import java.awt.*;
import java.awt.image.*;
import java.io.File;
import java.util.*;
import java.sql.*;
import java.text.*;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
public class Wykres {
protected BazaDanych m_BDProces = null;
public void laczenieBD()
{
String driver, url;
String login, password;
driver = "sun.jdbc.odbc.JdbcOdbcDriver";
url = "jdbc:odbc:Pogoda";
login = "";
password = "";
m_BDProces = new BazaDanych(driver, url);
if( !m_BDProces.polaczenie(login, password) )
System.exit(1);
}
public Wykres(){
laczenieBD();
// definiowanie serii:
XYSeries dataSet= new XYSeries("seria 1");
//"reczne" wypelnianie serii 1 - dodawanie kolejnych punktow
dataSet.add(0.1, 4.4);
dataSet.add(0.5, 12.4);
dataSet.add(0.9, 21.4);
dataSet.add(1.8, 43.2);
dataSet.add(2.8, 27.9);
dataSet.add(5.6, 3.3);
dataSet.add(8.8, 67.6);
dataSet.add(9.3, 18.2);
dataSet.add(14.0, 97.5);
dataSet.add(16.5, 200);
dataSet.add(18.4, 34.9);
dataSet.add(22.3, 11.1);
dataSet.add(23.5, 26.4);
dataSet.add(25.2, 1);
// Tworzenie kolekcji serii zawierajacej serie dataSet
XYSeriesCollection xySeriesCollection = new XYSeriesCollection(dataSet);
// tworzenie XYDataSet
XYDataset xyDataset = xySeriesCollection;
// tworzenie Wykresu
JFreeChart lineGraph = ChartFactory.createXYLineChart
("Tytul Wykresu", // Title
"Tytul osi X", // X-Axis label
"Tytul osi Y", // Y-Axis label
xyDataset, // Dataset
PlotOrientation.VERTICAL, //Plot orientation
true, //show legend
true, // Show tooltips
false //url show
);
// szybkie wysswietlanie Wykresu
// przy pomocy klasy ChartFrame
ChartFrame frame = new ChartFrame("Szybkie wyswietlanie Wykresu - klasa ChartFrame", lineGraph);
frame.pack();
frame.setVisible(true);
// Zapisywanie Wykresu do pliku JPG:
try {
ChartUtilities.saveChartAsJPEG(new File("LineGraph.jpg"), lineGraph, 800, 600);
} catch (Exception e) {
System.out.println("Problem z zapisem Wykresu do pliku");
}
// WYSWIETLANIE WykresOW W OKNIE SWING
// Tworzenie okienka Swing:
JFrame jframe = new JFrame("Przeskaluj okno oraz kliknij prawym klawiszem myszy na obu Wykresach...");
jframe.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
jframe.getContentPane().setLayout(new GridLayout( 2,2));
jframe.setSize(640,480);
// Dodawanie Wykresu jako obraz - klasa BufferedImage
BufferedImage image = lineGraph.createBufferedImage(300,200);
JLabel lblChart = new JLabel();
lblChart.setIcon(new ImageIcon(image));
jframe.getContentPane().add(lblChart);
jframe.getContentPane().add(new JLabel("<<< Wykres dodany jako obraz (Image)"));
// Dodawanie Wykresu przy pomocy klasy ChartPanel
ChartPanel chartPanel = new ChartPanel(lineGraph);
jframe.getContentPane().add(chartPanel);
jframe.getContentPane().add(new JLabel("<<< Wykres dodany jako ChartPanel"));
jframe.setVisible(true);
}
}