Wednesday, 3 June 2020

jFreechart Gui dengan database

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

No comments:

Post a Comment