August 23, 2009 thumb Membuat Diagram PIE

Membuat Diagram PIE untuk Laporan Bulanan Menggunkan Java.

Dalam java telah disediakan suatu library yang dapat digunakan untuk membuat gambar, yang masuk dalam java.awt, komponen-komponen gambar sangat banyak, namun disini hanya akan dibahas beberapa saja.
Komponen pertama adalah setFont() yang berfungsi untuk memberi ketebalan, ukuran, serta jenis huruf. setFont() dapat di isi dengan menggunakan object font (Font p=new Font(“jenis_huruf”,int nilai, int nilai), ).
Selain itu ada juga setColor(Color.BLACK); dalam contoh akan memberikan warna hitam pada pensil atau apa saja yang ditulis dalam kanvas, dalam hal ini adalah Graphic. drawString(string_yang_ditulis,int posisi_x, int posisi_y). fillArc(int posisi_awal_x, int posisi_awal_y, int_posisi_akhir_x, int posisi_akhir_y, int derajat_awal, int derajat_akhir), digunkan untuk membuat sebuah diagram lingkaran yang berisi. Dan terakhir fill3DRec(int posisi_awal_x, int posisi_awal_y, int posisi_akhir_x, int_posisi_akhir_y, Boolean visible), untuk membuat sebuah kotak, perlu diketahui Boolean visible digunakan untuk menampilkan kotak tersebut, dalam hal ini, p[enulis mendefault true karena selalu ditampilkan.
Dengan menggunkan komponen diatas, dapat dibuat sebuah diagram pie yang dapat di integrasikan ke dalam program lain, dalam hal ini penulis membuat sebuah diagram yang berfungsi untuk menampilkan laporan selama satu bulan dalam satuan perhari dalam satu minggu.
Karena berbentuk satu bulan, dan ditampilkan dalam bentuk per hari, maka akan digunakan sebuah pencacah harian, yang mana pencacah harian berisi data numerik, yang terdiri dari senin, selasa, rabu, kamis, jum’at, dan sabtu. Dalam contoh, penulis menggunakan satuan unit untuk tiap harinya.
Skenarionya sebagai berikut. Ketika program dijalankan maka program akan mengambil input dari Operating System mengenai bulan dan tahun, karena return darifungsi Date.getMonth() adalah int yang merefleksikan januari sebagai 0, februari sebagai 1 dst, maka dibuat sebuah fungsi sendiri yaitu getBulan agar diperoleh hasil String nama bulan, selain itu program juga akan mengambil input berupa tahun, hasilnya berupa int jumlah tahun terhitung sejak tahun 1900 (misalkan tahun 2008 maka di OS akan menghasilkan nilai 108 karena 2008-1900=108), Karena kita menginginkan berupa tahun masehi maka hasil ditambah 1900. berikutnya user melakukan input untuk mengisi data harian, kemudian oleh program akan di cek jika total dari input user adalah 0, maka program keluar, namun jika tidak, maka akan dibuat sebuah diagram pie, yang merefleksikan hasil inputan dari user.
Berikut ini adalah source codenya, penulis menggunkan JCreator 3.5 untuk mengompile.

//file Diagram.java
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;
import java.io.*;

public class Diagram{
public static void main(String args[]) throws IOException{
try{
Date d=new Date();
String bulan=GetBulan(d.getMonth());
int tahun=d.getYear()+1900;
BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
System.out.println(“===Program Diagram===”);
System.out.println(“Masukan Data Bertipe Numerik”);
System.out.print(“Minggu :”);
int minggu=Integer.parseInt(input.readLine());
System.out.print(“Senin :”);
int senin=Integer.parseInt(input.readLine());
System.out.print(“Selasa :”);
int selasa=Integer.parseInt(input.readLine());
System.out.print(“Rabu :”);
int rabu=Integer.parseInt(input.readLine());
System.out.print(“Kamis :”);
int kamis=Integer.parseInt(input.readLine());
System.out.print(“Jum’at :”);
int jumat=Integer.parseInt(input.readLine());
System.out.print(“Sabtu :”);
int sabtu=Integer.parseInt(input.readLine());
Pie p=new Pie();
p.MakePie(minggu,senin,selasa,rabu,kamis,jumat,sabtu,bulan,tahun);

}catch(Exception p){
}
}

static private String GetBulan(int u){
if(u==0)return(“Januari”);
if(u==1)return(“Februari”);
if(u==2)return(“Maret”);
if(u==3)return(“April”);
if(u==4)return(“Mei”);
if(u==5)return(“Juni”);
if(u==6)return(“Juli”);
if(u==7)return(“Agustus”);
if(u==8)return(“September”);
if(u==9)return(“Oktober”);
if(u==10)return(“Nopember”);
if(u==11)return(“Desember”);
return(“”);
}
}

class Pie extends JApplet {
public void MakePie(int minggu,int senin,int selasa, int rabu, int kamis, int jumat, int sabtu,String bulan, int tahun) {
JFrame frame = new JFrame();
frame.setTitle(“Laporan Bulan “+bulan+” “+tahun);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setResizable(false);
JApplet applet = new Pie();
applet.init();
String hari=getDay(minggu,senin,selasa,rabu,kamis,jumat,sabtu);
JPanel panel = new SpiroPanel(minggu,senin,selasa,rabu,kamis,jumat,sabtu, hari);
applet.getContentPane().add(panel);
frame.getContentPane().add(applet);
frame.pack();
frame.setVisible(true);
}

private String getDay(int minggu, int senin, int selasa, int rabu, int kamis, int jumat, int sabtu){
int max=0;
String day=””;
if(max<minggu){

max=minggu;
day=”Minggu”;

}

if(max<senin){
max=senin;
day=”Senin”;

}

if(max<selasa){
max=selasa;
day=”Selasa”;
}

if(max<rabu){
max=rabu;
day=”Rabu”;
}

if(max<kamis){
max=kamis;
day=”Kamis”;

}

if(max<jumat){
max=jumat;
day=”Jum’at”;
}

if(max<sabtu){
max=sabtu;
day=”Sabtu”;
}

return(day);
}
}

class SpiroPanel extends JPanel {
int minggu=0,senin=0,selasa=0,rabu=0,kamis=0,jumat=0,sabtu=0;
String hmax;
public SpiroPanel(int m,int s, int sl, int r, int k, int j, int sb,String hmaxi) {
setPreferredSize(new Dimension(330, 590));
setBackground(Color.GRAY);
minggu=m;
senin=s;
selasa=sl;
rabu=r;
kamis=k;
jumat=j;
sabtu=sb;
hmax=hmaxi;
}

public void paintComponent(Graphics grap) {
super.paintComponent(grap);
Graphics g = (Graphics)grap;
int y=minggu+senin+selasa+rabu+kamis+jumat+sabtu;
if(y==0){
JOptionPane.showMessageDialog(this,”y nol “+y,””,1);
return;
}
int mgu=0,snn,sls,rb,kms,jmt,sbt;
mgu=(minggu*360)/y;
snn=(senin*360)/y;
sls=(selasa*360)/y;
rb=(rabu*360)/y;
kms=(kamis*360)/y;
jmt=(jumat*360)/y;
sbt=360-mgu-snn-sls-rb-kms-jmt;
Font f=new Font(“”,3,15);
g.setFont(f);
g.setColor(Color.BLACK);
g.fillRoundRect(10,10,300,300,0,mgu);
g.setColor(Color.RED);
g.fillArc(10,10,300,300,0,mgu);
g.fill3DRect(10,320,20,20,true);
g.drawString(“Minggu (“+minggu+” unit )”,40,340);
g.setColor(Color.YELLOW);
g.fillArc(10,10,300,300,mgu,snn);
g.fill3DRect(10,343,20,20,true);
g.drawString(“Senin (“+senin+” unit )”,40,363);
g.setColor(Color.BLUE);
snn=snn+mgu;
g.fillArc(10,10,300,300,snn,sls);
g.fill3DRect(10,366,20,20,true);
g.drawString(“Selasa (“+selasa+” unit )”,40,386);
sls=sls+snn;
g.setColor(Color.GREEN);
g.fillArc(10,10,300,300,sls,rb);
g.fill3DRect(10,389,20,20,true);
g.drawString(“Rabu (“+rabu+” unit )”,40,409);
rb=rb+sls;
g.setColor(Color.MAGENTA);
g.fillArc(10,10,300,300,rb,kms);
g.fill3DRect(10,412,20,20,true);
g.drawString(“Kamis (“+kamis+” unit )”,40,432);
kms=kms+rb;
g.setColor(Color.ORANGE);
g.fillArc(10,10,300,300,kms,jmt);
g.fill3DRect(10,435,20,20,true);
g.drawString(“Jumat (“+jumat+” unit )”,40,455);
jmt=jmt+kms;
g.setColor(Color.CYAN);
g.fillArc(10,10,300,300,jmt,sbt);
g.fill3DRect(10,458,20,20,true);
g.drawString(“Sabtu (“+sabtu+” unit )”,40,478);
g.setColor(Color.PINK);
g.drawString(“Total — “+y+” unit”,40,500);
g.setFont(new Font(“”,5,15));
g.setColor(Color.WHITE);
g.drawString(“Maximal hari “+hmax,20,550);
}
}

Program ini dapat diintegrasikan pada program lain, dengan menambah fungsi lain sesuai kreativitas, seperti yang dilakukan penulis dengan mengintegrasikan pada program laporan hasil penjualan tiket kereta untuk satu bulan. Penulis menambahkan fungsi buatan penulis sendiri agar sinkron dengan program Diagram tersebut.
Masih banyak fungsi lain yang ada di dalam java.awt, silakan dipelajari. Selamat Berkreasi.

berikut ini contoh gambarnya…

Comments

total comments