Chart dengan JFreeChart
Pada Java NetBeans tidak disediakan komponen Chart, tetapi dapat dibuat menggunakan berbagai library yang gratis di Internet, salah satu library yang paling populer adalah JfreeChart. Library ini dapat didownload gratis dari internet. Library tersebut dapat dimasukkan pada project dengan cara yang dilakukan sama dengan ketika menambahkan library iReport dan lainnya, yaitu pada Project Tree, pilih Libraries klik kanan Pilih Add JAR/Folder.
Setelah muncul dialog Add
JAR/Folder, kemudian pilih file-file library JFreeChart yaitu file
jfreechart-1.0.11.jar dan jcommon-1.0.14.jar. Klik OK.
Untuk memasukkan data yang akan
ditampilkan JFreeChart harus dilakukan dari kode program. Berikut ini contoh
kode program yang dapat dipakai untuk mengolah JFreeChart secara dinamis dari
kode program, baik untuk Chart yang berbentuk Pie, Line, Bar, dll.
/*
* FChart.java
*
* Created on
October 28, 2008, 10:31 PM
*/
package my.all;
import
org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.general.DefaultPieDataset;
import java.io.File;
import javax.swing.ImageIcon;
import java.util.Calendar;
/**
*
*
@author Amijaya
*/
public class FChart extends javax.swing.JFrame {
/**
Creates new form FChart */
public
FChart() {
initComponents();
generateChart();
}
/** This
method is called from within the constructor to
*
initialize the form.
*
WARNING: Do NOT modify this code. The content of this method is
* always
regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
//
<editor-fold defaultstate="collapsed" desc="Generated
Code">
private
void initComponents() {
...
}//
</editor-fold>
private void
cTypeActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
generateChart();
}
private void generateChart() {
DefaultCategoryDataset dataSet = new DefaultCategoryDataset();
int[]
tahun = {2004,2005,2006,2007,2008};
int[] MS =
{100,120,140,150,155};
int[]
Oracle = {110,120,120,150,160};
int[]
Google = {80,85,100,140,175};
for (int
i=0; i<tahun.length; i++) {
String
thn = String.valueOf(tahun[i]);
dataSet.addValue(MS[i], "MS", thn);
dataSet.addValue(Oracle[i], "Oracle", thn);
dataSet.addValue(Google[i], "Google", thn);
}
DefaultPieDataset pieDataSet = new DefaultPieDataset();
pieDataSet.setValue("One", new Double(43.2));
pieDataSet.setValue("Two", new Double(10.0));
pieDataSet.setValue("Three", new Double(27.5));
pieDataSet.setValue("Four",
new Double(17.5));
pieDataSet.setValue("Five", new Double(11.0));
pieDataSet.setValue("Six", new Double(19.4));
JFreeChart
chart = null;
if
(cType.getSelectedIndex() == 0) {
chart
= ChartFactory.createLineChart("Line", "Tahun",
"Hasil", dataSet, PlotOrientation.VERTICAL, true, true, true);
} else if
(cType.getSelectedIndex() == 1) {
chart
= ChartFactory.createBarChart("Bar", "Tahun",
"Hasil", dataSet, PlotOrientation.VERTICAL, true, true, true);
} else if
(cType.getSelectedIndex() == 2) {
chart
= ChartFactory.createPieChart("Pie", pieDataSet, true, true,
false);
}
try {
Calendar
rightNow = Calendar.getInstance();
//
fLahir.setText(String.valueOf(rightNow.get(rightNow.DATE)) +
"/" + String.valueOf(rightNow.get(rightNow.MONTH)) + "/" +
String.valueOf(rightNow.get(rightNow.YEAR)));
String
fName = "chart" + String.valueOf(rightNow.getTimeInMillis()) +
".jpg";
ChartUtilities.saveChartAsJPEG(new File(fName), chart, 500, 300);
lChart.setIcon(null);
lChart.setIcon(new ImageIcon(fName));
} catch
(Exception e){ System.out.println(e);}
}
/**
* @param
args the command line arguments
*/
public
static void main(String args[]) {
java.awt.EventQueue.invokeLater(new
Runnable() {
public void run() {
new FChart().setVisible(true);
}
});
}
//
Variables declaration - do not modify
private
javax.swing.JComboBox cType;
private
javax.swing.JLabel lChart;
// End of
variables declaration
}
Setelah dijalankan, hasilnya dapat
dilihat pada tampilan berikut ini :