jFreechart merupakan framework / library yang digunakan untuk menampilkan data ke dalam sebuah chart.
Kali ini kita akan membuat program dengan jFreechart dengan bahasa java dan menggunakan IDE Netbeans .
Tahap awal ialah membuat database :
saya membuat dbgraf dengan 2 tabel yaitu :
1.tablebar
2.tablepie
dengan masing - masing tabel memiliki kolom nilai1,2,3
di lanjutkan membuat class koneksi untuk menghubungkan aplikasi dengan database seperti berikut
jangan lupa untuk meng import file mysql-connector-java-5.1.23-bin.jar
yang berisi library yg di butuhkan class koneksi
untuk sytax lengkap nya
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
*
* @author hp
*/
public class koneksi {
private static Connection koneksi;
public static Connection getkoneksi(){
if (koneksi==null){
try{
String url = new String();
String user = new String();
String password = new String();
url ="jdbc:mysql://localhost/DBgraf";
user="root";
password="";
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
koneksi =(Connection)DriverManager.getConnection(url,user,password);
}catch(SQLException t){
System.out.println("Koneksi error");
}
}
return koneksi;
}
setelah itu membuat class javaGrafikInput yang akan menampilkan chartpie
jangan lupa untuk terlebih dahulu mengimport file jfreechart.jar ke library yang berisi library yang di butuhkan oleh class javaGrafikInput
syntax lengkap nya
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import org.jfree.util.Rotation;
/**
*
* @author hp
*/
public class PieGrafikInput extends JFrame {
double n1_eramadhan=0,n2_eramadhan=0, n3_eramadhan=0;
public void setNilai(String nilai1, String nilai2, String nilai3){
try {
n1_eramadhan = Double.parseDouble(nilai1);
} catch (NumberFormatException ex){}
try {
n2_eramadhan = Double.parseDouble(nilai2);
} catch (NumberFormatException ex){}
try {
n3_eramadhan = Double.parseDouble(nilai3);
} catch (NumberFormatException ex){}
this.setSize(600, 400);
this.setTitle("Diagram PIE");
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
PieDataset dataset = buildData();
JFreeChart chart = buildChart(dataset, "Data Dari Grafik Input");
ChartPanel pieChart = new ChartPanel(chart);
this.setContentPane(pieChart);
}
private JFreeChart buildChart(PieDataset dataset, String judul){
JFreeChart chart = ChartFactory.createPieChart3D(judul, dataset,true, true, false);
PiePlot3D plot = (PiePlot3D) chart.getPlot();
plot.setStartAngle(290);
plot.setDirection(Rotation.CLOCKWISE);
plot.setForegroundAlpha(0.5f);
return chart;
}
private PieDataset buildData(){
DefaultPieDataset dataSet = new DefaultPieDataset();
dataSet.setValue("Nilai 1", n1_eramadhan);
dataSet.setValue("Nilai 2", n2_eramadhan);
dataSet.setValue("Nilai 3", n3_eramadhan);
return dataSet;
}
public static void main(String[] args) {
try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch (Exception e){
}
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run(){
new PieGrafikInput().setVisible(true);
}
});
}
lalu membuat jFrameform untuk input data chart pie dan menampilkan nya
untuk desain jform nya seperti berikut
pada gambar terdapat area yang di beri tanda kotak merah merupakan letak jLabel4, 5, dan 6
pada program ini saat tombol grafik di tekan maka akan mengambil nilai dari database Mysql dan menaruh nya di jlabel tersebut lalu nilai di teruskan ke javaGrafikInput.
syntax pada button simpan dapat di lihat pada gambar berikut
saat tombol di simpan akan mengirim nilai di jTextField ke tableBar dan memberi notif pop up berhasil lalu menghapus inputan yang ada di jTextfield
sedangkan syntax button grafik dapat di lihat pada gambar berikut
saat tombol grafik di tekan maka akan mengambil nilai dari database Mysql dan menaruh nya di jlabel tersebut lalu nilai di teruskan ke javaGrafikInput
untuk class BarGrafikInput proses pembuatan nya sama hanya syntax nya yang berbeda
berikut syntax nya
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.category.CategoryItemRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
/**
*
* @author hp
*/
public class BarGrafikInput extends JFrame {
//terima nilai dari jframe dan inisialisasi bar chart
double n1_eramadhan=0, n2_eramadhan=0, n3_eramadhan=0;
public void setNilai (String Nilai1, String Nilai2, String Nilai3){
try{
n1_eramadhan = Double.parseDouble(Nilai1);
}catch(NumberFormatException ex){}
try{
n2_eramadhan = Double.parseDouble(Nilai2);
}catch(NumberFormatException ex){}
try{
n3_eramadhan = Double.parseDouble(Nilai3);
}catch(NumberFormatException ex){}
this.setSize(600, 400);
this.setTitle("Diagram Bar");
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final CategoryDataset dataset = createDataset();
final JFreeChart chart = createChart(dataset);
final ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(600, 400));
setContentPane(chartPanel);
}
// menambahkan nilai bar chart tiap nilai
private CategoryDataset createDataset() {
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(n1_eramadhan, "Nilai 1" , "");
dataset.addValue(n2_eramadhan, "Nilai 2", "");
dataset.addValue(n3_eramadhan, "Nilai 3 ", "");
return dataset;
}
private JFreeChart createChart(final CategoryDataset dataset) {
JFreeChart chart = ChartFactory.createBarChart3D("Data Grafik ", "", "",
dataset, PlotOrientation.VERTICAL, true, true, false);
chart.setBackgroundPaint(new Color(135,206,250));
CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setNoDataMessage("Data Not Available");
CategoryAxis axis = plot.getDomainAxis();
axis.setCategoryLabelPositions(CategoryLabelPositions.STANDARD);
CategoryItemRenderer renderer = plot.getRenderer();
renderer.setBaseItemLabelsVisible(true);
BarRenderer barRenderer = (BarRenderer) renderer;
barRenderer.setItemMargin(0.1D);
barRenderer.setDrawBarOutline(true);
return chart;
}
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
}
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new BarGrafikInput().setVisible(true);
}
});
}
dan sytax pada jFrame button simpan
selanjutnya untuk button grafik
dan yang terakhir merupakan hasil run Program PieChart dan BarChart
ada beberapa kekurangan di program yaitu data yang telah di input hanya dapat di hapus / edit melalui mysql sedangkan melalui aplikasi tidak bisa , mungkin kedapan nya dapat di tambahkan metode CRUD pada aplikasi yang lebih lengkap