Pemrograman Berorientasi Objek Lanjut 1
MERANCANG DATABASE PARKIR KENDARAAN
Sebagai tempat studi kasus dari aplikasi yang akan dibuat adalah parkir kendaraan. Dengan
adanya aplikasi ini, diharapkan ketika kendaraan masuk maka petugas parkir dapat mencatat
data kendaraan secara elektronis menggunakan computer, sehingga dapat memperkecil tingat
pencurian dan dapat melakukan pengecekan data sewaktu-waktu data kendaraan dibutuhkan.
Dari gambaran di atas, yang perlu anda buat adalah sebuah aplikasi yang dapat membantu
untuk pencatatan setiap transaksi yang dilakukan, mulai dari data petugas, data kendaraan,
data parkir kendaraan masuk dan parkir kendaraan keluar secara cepat.
Mendeklarasikan Kasus dalam Bentuk Bahasa Model UML
Pekerjaan membuat table akan selalu anda lakukan setelah proses analisis system selesai. Pada
buku ini dibahas analisis awalnya dari pendeklarasian UML(Unifed Modeling Language), yaitu
menggunakan Use Case Karena ini paling sering digunakan dan cocok untuk kasus tersebut.
Selanjutnya akan dilakukan mapping ke tabel secara fisik.
Gambar 1.1 Use Case Diagram Parkir Kendaraan
Pemrograman Berorientasi Objek Lanjut 2
Pengendara sebagai pelaku pemarkir kendaraan akan melakukan registrasi data kendaraan
masuk dan registrasi kendaraan keluar. Sedangkan petugas sebagai orang yang
mengoperasikan aplikasi parkir kendaraan.
Membuat Database dan Tabel
Pada gambaran sebelumnya, sekarang anda perlu memikirkan seberapa besar database yang
akan diperlukan. Dari hasil pemikiran tersebut anda akan mengira-ira berapa dan apa tabel
yang akan digunaka sebagai media penyimpanan datanya.
Membuat Database
Dari analisis kami, untuk membuat aplikasi ini kita membutuhkan 3 tabel. Terdiri atas 2 tabel
master dan 1 tabel transaksi. Ketiga tabe tersebut berada di dalam nama database dbparkir.
C:\Documents and Setting>mysql –uroot -p
Enter Password:Masukkan Password anda
Mysql> CREATE DATABASE dbparkir;
Query OK, 1 row affected (0.00 sec)
Selanjutnya, aktifkanlah database yang terbuat dengan perintah berikut:
Mysql> USE dbparir;
Database changed
Pernyataan “Database changed” di atas menandakan anda sekarang telah aktif di dalam database dbparkir.
Membuat Tabel tbljnskendaraan
Tabel Jenis Kendaraan digunakan untuk merekam data semua jenis kendaraan. Dengan cara ini, kita dapat mengelompokkan jenis kendaraan.Berikut desain tabelnya.
Tabel 1.1 Struktur Tabel tbljnskendaraan
Kolom Tipe Data Panjang
kodejenis * Char 2
jenis Varchar 40
tarif Char 10
Pemrograman Berorientasi Objek Lanjut 3
Dari desain tabel di atas, anda dapat membuat dalam MySQL menggunakan perintah berikut:
mysql> create table tbljnsjendaraan(
kodejenis char(2) not null primary key,
jenis varchar(40),
tarif char(10)
);
Setelah perintah membuat tabel di atas dijalankan, sekarang anda telah memiliki tabel baru bernama tbljnskendaraan.
Membuat Tabel tblpetugas
Tabel Jenis Kendaraan digunakan untuk merekam data semua petugas. Dengan cara ini, kita dapat mengetahui petugas jaga parkir.Berikut desain tabelnya.
Tabel 1.2 Struktur Tabel tblpetugas
Kolom Tipe Data Panjang
idpetugas * Char 4
nmpetugas Varchar 60
alamat Varchar 100
telp Varchar 15
Dari desain tabel di atas, anda dapat membuat dalam MySQL menggunakan perintah berikut:
mysql> create table tblpetugas(
idpetugas char(4) not null primary key,
nmpetugas varchar(60),
alamat varchar(100),
telp varchar(10)
);
Setelah perintah membuat tabel di atas dijalankan, sekarang anda telah memiliki tabel baru bernama tblpetugas.
Membuat Tabel tblparkir
Tabel Jenis Kendaraan digunakan untuk merekam data semua kendaraan yang parkir. Dengan cara ini, kita dapat mengetahui semua data kendaraan yang sedang parkir atau yang sudah keluar.Berikut desain tabelnya.
Pemrograman Berorientasi Objek Lanjut 4
Tabel 1.3 Struktur Tabel tblparkir
Kolom Tipe Data Panjang
notiket * Char 10
tglparkir Varchar 40
Idpetugas ** Char 4
Noplat Varchar 10
kodejenis ** Char 2
jammasuk Varchar 20
jamkeluar Varchar 20
Bayar Char 10
Sisa Char 10 Dari desain tabel di atas, anda dapat membuat dalam MySQL menggunakan perintah berikut:
mysql> create table tblparkir(
notiket char(10) not null primary key,
tglparkir varchar(40),
idpetugas char(4),
noplat varchar(10),
kodejenis char(2),
jammasuk varchar(20),
jamkeluar varchar(20),
bayar char(10),
sisa char(10)
);
Setelah perintah membuat tabel di atas dijalankan, sekarang anda telah memiliki tabel baru bernama tblparkir.
Relasi Antar Tabel
TblJnsKendaraan
kodejenis<PK>
jenis
tarif
TblPetugas
idpetugas<PK>
nmpetugas
alamat
telp
TblParkir
notiket<PK>
tglparkir
idpetugas<FK>
noplat
kodejenis<FK>
jammasuk
jamkeluar
bayar
sisa
Pemrograman Berorientasi Objek Lanjut 5
Gambar 1.2 Hubungan Antar Tabel pada dbparkir
Tanda (PK) menunjukkan kunci utama, sedangkan (FK) adalah kunci tamu dengan diwujudkan arah panahnya. Berikut bebarapa penjelasan relasi tabel tersebut.
Relasi antar tabel jenis kendaraan pada tabel parkir kendaraan
Relasi dua tabel di atas memiliki hubungan one to many, artinya jenis kendaraan bisa digunakan lebih dari sekali.
Relasi antar tabel petugas pada tabel parkir kendaraan Relasi dua tabel di atas memiliki hubungan one to many, artinya petugas bisa digunakan lebih dari sekali.
MEMBUAT APLIKASI PARKIR KENDARAAN
Mulai dari bab ini kami akan membimbing anda untuk membuat proyek lengkap, yaitu dengan objek kasus pada parkir kendaraan. Pada aplikasi yang dibuat, akan terjadi proses transaksi parkir kendaraan masuk dan kendaraan keluar. Tentunya ada proses perhitungan pembayaran jasa parkir. Dalam bonus CD buku ini, juga telah disertakan hasil studi kasus dan komponen pendukung untuk pembuatan aplikasi yang dibahas pada bab ini. Anda bisa membaca bab ini sebagai penjelasan lengkap dan langkah pembuatannya.
Dependency
Dependency ata ketergantungan adalah sebuah syarat ketersediaan sebuah tool berupa modul terpisah maupun aplikasi lain agar bisa menjalankan aplikasi yang dimaksud. Dalam hal ini setidaknya anda harus memasang Netbeans 6.0.1. Tentunya untuk bisa memasangnya juga harus anda penuhi system requirement dari aplikasi tersebut. Untuk system operasi tentunya anda bisa menggunakan Windows/Linux. Dalam hal ini kami menggunakan Windows 7 untuk uji coba. Adapun tool yang lain, yang mesti anda pasang adalah sebagai berikut.
Ketergantungan Mesin
Sistem Opersai Windows/Linux Netbeans 6.0.1 Jasper Report 2.0.4 MySQL(AppServ2.10.3 boleh menggunakan versi lain)
Pemrograman Berorientasi Objek Lanjut 6
Ketergantungan Module/com objek maupun resource lain
mysql-connector-java-5.1.6-bin untuk objek database yang siap dipakai Birosoft look and feel dan looks.jar sebagai tambahan untuk sekadar menambahkan
style atau tampilan saja(ini tidak wajib, sehingga tidak dibahas terlalu jauh agar tidak mengurangi focus buku ini).
Persiapan Instalasi dan Folder Program Kami sarankan pembaca mengikuti langkah-langkah yang ada dalam buku ini agar tidak mengalami kesulitan/salah jalan. Kalau tidak mengikuti petunjuk ini, dikhawatirkan anda bisa tersesat sejauh-jauhnya. Catatan: Anda tidak harus mengikuti langkah-langkah instalasi jika sudah memiliki versi yang sama. Dalam buku tidak terlalu banyak memberikan hal-hal yang dasar, bukan keharusan tetapi sangat dianjurkan bagi anda membaca buku edisi sebelumnya.
1. Instal netbeans 6 nama file installer-nya netbeans-6.0.1-ml-javase-windows.exe. klik ganda kemudian lanjutkan dialognya sampai selesai.
2. Instal MySQL dan tool admin lewat Browser Client. Nama filenya appserv-win32-2.5.10.exe. ikuti petunjuk dan jangan lupa untuk menyimpan nama password atau user-nya agar Anda bisa mengakses halaman admin. Jika sampai lupa, anda selamanya tidak bisa membuka database anda sendiri.
3. Siapkan folder khusus untuk membuat kode. Misalnya kami membuat folder D:\Aplikasi Parkir Kendaraan.
Membuat Koneksi Database.ini
database.ini digunakan untuk menghubungkan database MySQL dengan JAVA, database.ini dibuat menggunakan Notepade.
Berikut langkah membuat koneksi database.ini:
1. Buatlah folder dengan nama folder lib pada direktori D:\Aplikasi Parkir Kendaraan\Aplikasi Parkir Kendaraan\lib.
2. Buatlah koneksi database.ini menggunakan notepade kemudian simapan dengan nama database.ini.
Pemrograman Berorientasi Objek Lanjut 7
Gambar 1.3 Koneksi database.ini
Membuat Project
Berikut langkah membuat projek baru :
1. Bukalah editor Netbeans, lalu buat project beru melalui menu File –> New Project, sehingga muncul sebuah jendela New Project.
2. Pada kolom Categories pilih Java. Selanjutnya pada kolom projects pilih Java Desktop Application, kemudian tekan tombol Next untuk melanjutkan.
Gambar 1.4 Jendela New Project 3. Isilah Project Name (sebagai nama proyek), Project Location (folder atau lokasi
program), Application Class (nama file atau kelas), dan nama kelas utama seperti berikut ini.
Pemrograman Berorientasi Objek Lanjut 8
Gambar 1.5 Penambahan File Project
Dari gambar di atas, perhatikan isian Application Class yang terisi otomatis ketika anda memberikan nilai pada nama Project name: “Aplikasi Parkir Kendaraan”. Netbeans secara default menyiapkan paket bernama aplikasi parkir kendaraan dan kelas utama aplikasi parkir kendaraan.App. Berarti kita membuat kelas aplikasi parkir kendaraanApp berada dalam paket aplikasi parkir kendaraan.
4. Pada kolom Choose Application Shell pilih Basic Application, anda bisa menyesuaikan foldernya dengan computer anda.
5. Jiksa sudah, klik tombol Finish.
Gambar 1.6 Tampilan Pertama Project Baru
Secara default terdapat tiga kelas dalam paket aplikasi parkir kendaraan ini. Anda bisa melihat dalam jendela inspector, antara lain:
Pemrograman Berorientasi Objek Lanjut 9
AplikasiParkirKendaraanApp.java sebagai kelas utama yang pertama kali dijalankan. AplikasiParkirKendaraanAboutBox.java form info program atau tentang program. AplikasiParkirKendaraanView.java menampilkan menu.
6. Langkah selanjutnya kita akan membuat Database.java dengan cara klik kanan New ->
Java Class , kemudian masukkan kode program seperti dibawah ini.
Gambar 1.7 Membuat Java Class File
package aplikasiparkirkendaraan; import java.io.FileInputStream; import java.util.Properties; import javax.swing.JOptionPane; /** * * @author REVOLPER */ public class Database { public Properties mypanel, myLanguage; private String strNamePanel; public Database(){ } public String SettingPanel(String nmPanel){ try { mypanel = new Properties(); mypanel.load(new FileInputStream("lib/database.ini")); strNamePanel = mypanel.getProperty(nmPanel); } catch (Exception e) { JOptionPane.showMessageDialog(null,"Tidak ada koneksi","Error", JOptionPane.INFORMATION_MESSAGE); System.err.println(e.getMessage()); System.exit(0); } return strNamePanel; }
}
Pemrograman Berorientasi Objek Lanjut 10
Membuat Menu Utama
Selanjutnya kita akan memperbaiki kelas AplikasiParkirKendaraanView agar menjadi sebuah menu utama yang bisa dipakai untuk aplikasi parkir kendaraan. Langkah pertama adalah menambahkan menu, yaitu:
1. Pilih menu File pada desain form kelas AplikasiParkirKendaraanView, klik kanan pilih Add Form Palette –> Menu item.
Gambar 1.8 Penambahan Menu Baru
2. Sehingga muncul menu baru seperti pada gambar berikut.
Gambar 1.9 Tampilan Menu Baru
3. Sekarang kita bisa memindahkan posisi menu baru itu dengan melakukan drag ke atas ataupun kebawah. Untuk melakukan perubahan teks menu, klik kanan pada menu dan pilih Edit Text. Selanjutnya masukkan judul menu yang anda inginkan, misalnya Data Jenis Kendaraan.
Pemrograman Berorientasi Objek Lanjut 11
Gambar 1.10 Mengganti Text Menu
Gambar 1.11 Tampilan Menu yang Sudah Di edit
4. Untuk mengubah nama variable objeknya, klik kanan menu item. Pilih Change Variabel Name…, kemudian ketikkan nama variabelnya.
5. Sekarang, tambahkan semua kebutuhan menu, sehingga menjadi gambar berikut.
Pemrograman Berorientasi Objek Lanjut 12
Gambar 1.12 Submenu File
Gambar 1.13 Submenu Transaksi
Gambar 1.14 Submenu Report
Gambar 1.15 Submenu Help
Pemrograman Berorientasi Objek Lanjut 13
Gambar 1.16 Hierarki Semua Menu Utama
Memasang File Jar(Setting Class Path)
Memasang file jar ke dalam aplikasi adalah pekerjaan yang sangat penting, karena dengan begitu integritas dan fleksibilitas untuk pengembangan program sangat mudah. Mungkin anda pernah memahami bagaimana file dll dalam windows bekerja. Dengan adanya sebuah dll tertentu, bisa dipakai secara bersama-sama oleh aplikasi lain. Dalam aplikasi ini, kita akan memasang distribusi file sebagai komponen penghubung database. Buatlah susunan folder program dan setingan file jar yang sudah disiapkan:
1. Buatlah folder com pada folder D:\Aplikasi Parkir Kendaraan\Aplikasi Parkir Kendaraan\kemudian kopi file mysql-connector-java-5.1.6-bin.
2. Buatlah folder com pada direktori folder D:\Aplikasi Parkir Kendaraan\Aplikasi Parkir Kendaraan\src\ kemudian kopi folder BIROSOFT yang berguna sebagai skin/style program
Gambar 1.17 Folder Program
Pemrograman Berorientasi Objek Lanjut 14
Memasang Skin yang Terdapat Pada Folder BIROSOFT
1. Untuk memasang skin silahkan anda buka AplikasiParkirKendaraanApp.java 2. Masukkan Kode program seperti berikut:
public static void main(String[] args) { try { launch(AplikasiParkirKendaraanApp.class,args);
UIManager.setLookAndFeel("com.birosoft.liquid.LiquidLookAndFeel");
} catch (ClassNotFoundException ex) { System.out.println(ex); } catch (InstantiationException ex) { System.out.println(ex); } catch (IllegalAccessException ex) { System.out.println(ex); } catch (UnsupportedLookAndFeelException ex) { System.out.println(ex); } }
Catatan:pada saat anda mengetikkan perintah UIManager.setLookAndFeel(“….”) Akan tampil lambang lampu boklam silahkan anda klik kanan lampu boklam tersebut kemudian pilih Surround with try-catch.
Memasang Driver MySQL
Untuk bisa melakukan hubungan atau koneksi dengan database MySQL, Anda harus memasang driver-nya. Caranya adalah:
1. Dari jendela Project pilih Libraries kemudian klik kanan pilih Add JAR/Folder… kemudian klik Open.
Gambar 1.18 Penentuan File Driver MySQL sendiri
Pemrograman Berorientasi Objek Lanjut 15
Membuat Desain Form Data Jenis Kendaraan Sekarang saatnya membuat form data jenis kendaraan agar petugas dapat mengetahu dan menginput jenis kendaraan. Lakukan beberapa langkah berikut ini:
1. Buatlah file baru dalam paket AplikasiParkirKendaraan, dengan cara klik kanan paket AplikasiParkirKendaraan, Pilih New -> Other…, sehingga muncul jendela New File.
Gambar 1.19 Membuat Objek Baru
2. Pada kolom Categories, pilih Swing GUI Forms, pada kolom File Type pilih saja JInternalFrame Form. Kemudian klik tombol Next sehingga muncul jendela New JInternalFrame Form.
Gambar 1.20 Membuat Form JInternalFrame Form
Pemrograman Berorientasi Objek Lanjut 16
3. Pada jendela New JInternalFrame Form, isikan Frmjnskendaraan pada kotak isian Class Name, dan Package pilih aplikasiparkirkendaraan, lalu tekan tombol Finish untuk mengakhiri.
Gambar 1.21 Menentukan Nama Form JInternalFrame Form
Gambar 1.22 Desain Form Baru
4. Desainlah form yang baru anda ciptakan seperti gambar dibawah ini:
Pemrograman Berorientasi Objek Lanjut 17
Gambar 1.23 Desain Form Data Jenis Kendaraan
Syntax Program
1. Pada bagian import tambahkan dibawah baris package aplikasiparkirkendaraan sepeti kode berikut:
package aplikasiparkirkendaraan;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
2. Pada bagian public class Frmjeniskendaraan extends javax.swing.JInternalFrame tambahkan kode
berikut:
public class Frmjeniskendaraan extends javax.swing.JInternalFrame {
Database dbsetting;
String driver,database,user,pass,userLogin;
private Object tabel;
/** Creates new form Frmjeniskendaraan */
public Frmjeniskendaraan() {
initComponents();
//setting form agar pada saat di tampilkan berada pada posisi senter/tengah
Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize=this.getSize();
jTextEdit
JButton
JTable
JLabel
Pemrograman Berorientasi Objek Lanjut 18
if(frameSize.height > screenSize.height){
frameSize.height=screenSize.height;
}
if(frameSize.width > screenSize.width){
frameSize.width=screenSize.width;
}
this.setLocation((screenSize.width - frameSize.width) / 2,
(screenSize.height = screenSize.height) / 6);
//setting untuk memanggil koneksi Database.ini
dbsetting = new Database();
driver = dbsetting.SettingPanel("DBDriver");
database = dbsetting.SettingPanel("DBDatabase");
user = dbsetting.SettingPanel("DBUsername");
pass = dbsetting.SettingPanel("DBPassword");
table.setModel(tableModel);
Tabel(table, new int[]{90,400,90,});
setDefaultTable();
SetEditOff();
}
3. Buatlah kode program diatas // Variables declaration - do not modify untuk menampilkan data pada
tabel seperti berikut:
private javax.swing.table.DefaultTableModel tableModel=getDefaultTabelModel();
private void Tabel(javax.swing.JTable tb, int lebar[] ) {
tb.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
int kolom=tb.getColumnCount();
for(int i=0;i < kolom;i++) {
javax.swing.table.TableColumn tbc=tb.getColumnModel().getColumn(i);
tbc.setPreferredWidth(lebar[i]);
tb.setRowHeight(17);
}
}
private javax.swing.table.DefaultTableModel getDefaultTabelModel() {
return new javax.swing.table.DefaultTableModel(
new Object[][] {},
new String [] {"Kode Jenis","Jenis Kendaraan","Tarif"}
){
boolean[] canEdit = new boolean[]{
false, false, false, false
};
public boolean isCellEditable(int rowIndex, int columnIndex){
return canEdit[columnIndex];
Pemrograman Berorientasi Objek Lanjut 19
}
};
}
String data[]=new String[3];
private void setDefaultTable() {
String stat ="";
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "SELECT * FROM tbljnskendaraan";
ResultSet res = stt.executeQuery(SQL);
while(res.next()){
data[0] = res.getString(1);
data[1] = res.getString(2);
data[2] = res.getString(3);
tableModel.addRow(data);
}
res.close();
stt.close();
kon.close();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
4. Buatlah kode program untuk menampilkan data yang sudah tersimpan di database, letakkan
disembarang tempat yang memiliki space kosong seperti berikut ini:
int row = 0;
public void Tampil(){
row = table.getSelectedRow();
KodeJenis.setText(tableModel.getValueAt(row, 0).toString());
Jenis.setText(tableModel.getValueAt(row, 1).toString());
Tarif.setText(tableModel.getValueAt(row, 2).toString());
Save.setEnabled(false);
Update.setEnabled(true);
Delete.setEnabled(true);
SetEditOn();
}
Pemrograman Berorientasi Objek Lanjut 20
5. Buatlah perintah BersihData,SetEditOff, dan SetEditON disembarang tempat yang memiliki space kosong
seperti berikut ini:
public void BersihData(){
KodeJenis.setText("");
Jenis.setText("");
Tarif.setText("");
}
public void SetEditOff(){
KodeJenis.setEnabled(false);
Jenis.setEnabled(false);
Tarif.setEnabled(false);
}
public void SetEditOn(){
KodeJenis.setEnabled(true);
Jenis.setEnabled(true);
Tarif.setEnabled(true);
}
6. Buatlah kode program AddNew dengan mengklik kanan button AddNew ->evens -> action ->
ActionPerformed.
private void AddNewActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
BersihData();
KodeJenis.requestFocus();
Save.setEnabled(true);
Update.setEnabled(false);
Delete.setEnabled(false);
SetEditOn();
}
7. Buatlah kode program save dengan mengklik kanan button save ->evens -> action -> ActionPerformed.
private void SaveActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String KJ=KodeJenis.getText();
String J=Jenis.getText();
String T=Tarif.getText();
if ((KJ.isEmpty()) | (J.isEmpty()) |(T.isEmpty()))
{JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi");
KodeJenis.requestFocus();
}else {
Pemrograman Berorientasi Objek Lanjut 21
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "insert into tbljnskendaraan values('"+KodeJenis.getText()+"',"+
"'"+Jenis.getText()+"',"+
"'"+Tarif.getText()+"')";
stt.executeUpdate(SQL);
data[0] = KodeJenis.getText();
data[1] = Jenis.getText();
data[2] = Tarif.getText();
tableModel.insertRow(0, data);
stt.close();
kon.close();
BersihData();
Save.setEnabled(false);
SetEditOff();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
}
8. Buatlah kode program even Click dengan mengklik kanan table(grid) ->evens -> Mouse ->
MouseClicked.
private void tableMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
if (evt.getClickCount()==1) {
Tampil();
}
}
9. Buatlah kode program Update dengan mengklik kanan button Update ->evens -> action ->
ActionPerformed.
private void UpdateActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String KJ=KodeJenis.getText();
String J=Jenis.getText();
String T=Tarif.getText();
if ((KJ.isEmpty()) | (J.isEmpty()) |(T.isEmpty()))
{JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi");
KodeJenis.requestFocus();
Pemrograman Berorientasi Objek Lanjut 22
}else {
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "Update tbljnskendaraan set jenis='"+Jenis.getText()+"',"+
"tarif='"+Tarif.getText()+"'"+
"Where kodejenis='"+KodeJenis.getText()+"'";
stt.executeUpdate(SQL);
data[0] = KodeJenis.getText();
data[1] = Jenis.getText();
data[2] = Tarif.getText();
tableModel.removeRow(row);
tableModel.insertRow(row,data);
stt.close();
kon.close();
BersihData();
Save.setEnabled(false);
SetEditOff();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
}
10. Buatlah kode program Delete dengan mengklik kanan button Delete ->evens -> action ->
ActionPerformed.
private void DeleteActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "delete from tbljnskendaraan where kodejenis='"+KodeJenis.getText()+"'";
stt.executeUpdate(SQL);
data[0] = KodeJenis.getText();
data[1] = Jenis.getText();
data[2] = Tarif.getText();
tableModel.removeRow(row);
stt.close();
kon.close();
BersihData();
Delete.setEnabled(false);
Update.setEnabled(false);
Pemrograman Berorientasi Objek Lanjut 23
SetEditOff();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
11. Buatlah kode program validasi untuk kodejenis dengan cara klik kanan pada KodeJenis[jTextField] pilih
evens -> Key -> KeyTyped.
private void KodeJenisKeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
// Hanya bisa diinput 2 digit
if(KodeJenis.getText().length()>1)
evt.consume();
//hanya bisa diinput dengan angka saja
char c =evt.getKeyChar();
if(!Character.isDigit(c))
evt.consume();
}
12. Buatlah kode program validasi angka pada tarif dengan cara klik kanan pada Tarif[jTextField] pilih evens
-> Key -> KeyTyped.
private void TarifKeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
//hanya bisa diinput dengan angka saja
char c =evt.getKeyChar();
if(!Character.isDigit(c))
evt.consume();
}
13. Buatlah kode program Close dengan mengklik kanan button Close ->evens -> action -> ActionPerformed.
private void CloseActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
JOptionPane.showMessageDialog(null,"Yakiin Keluar..?","Informasi",
JOptionPane.INFORMATION_MESSAGE);
this.dispose();
}
14. Untuk menjalankan program yang sudah anda buat anda harus memanggil program di menu utama yaitu
aplikasiparkirkendaraanView.java, silahkan anda ketikkan kode program dengan cara klik kanan sub
menu Data Jenis Kendaraan pilih Evens -> Actiom -> ActionPerformed kemudian ketikkan kode program
seperti berikut:
Pemrograman Berorientasi Objek Lanjut 24
Gambar 1.24 Perintah Evens sub Menu Data Jenis Kendaraan
private void MenuKendaraanActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Frmjeniskendaraan frmjeniskendaraan=new Frmjeniskendaraan();
jDesktopPane1.add(frmjeniskendaraan, javax.swing.JLayeredPane.DEFAULT_LAYER);
frmjeniskendaraan.show();
}
15. Jalankan Program kemudian klik menu Data Jenis Kendaraan maka akan tampil seperti berikut:
Gambar 1.25 Tampilan Program Data Jenis Kendaraan
Pemrograman Berorientasi Objek Lanjut 25
Membuat Desain Form Data Petugas Sekarang saatnya membuat form data petugas untuk mengetahui siapa petugas yang sedang bertugas. Lakukan beberapa langkah berikut ini:
5. Buatlah file baru dalam paket AplikasiParkirKendaraan, dengan cara klik kanan paket AplikasiParkirKendaraan, Pilih New -> Other…, sehingga muncul jendela New File.
Gambar 1.26 Membuat Objek Baru
6. Pada kolom Categories, pilih Swing GUI Forms, pada kolom File Type pilih saja JInternalFrame Form. Kemudian klik tombol Next sehingga muncul jendela New JInternalFrame Form.
Gambar 1.27 Membuat Form JInternalFrame Form
7. Pada jendela New JInternalFrame Form, isikan Frmpetugas pada kotak isian Class Name, dan Package pilih aplikasiparkirkendaraan, lalu tekan tombol Finish untuk mengakhiri.
Pemrograman Berorientasi Objek Lanjut 26
Gambar 1.28 Menentukan Nama Form JInternalFrame Form
Gambar 1.29 Desain Form Baru
8. Desainlah form yang baru anda ciptakan seperti gambar dibawah ini:
Pemrograman Berorientasi Objek Lanjut 27
Gambar 1.30 Desain Form Data Petugas
Syntax Program
1. Pada bagian import tambahkan dibawah baris package aplikasiparkirkendaraan sepeti kode
berikut:
package aplikasiparkirkendaraan;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
2. Pada bagian public class Frmpetugas extends javax.swing.JInternalFrame tambahkan kode
berikut:
public class Frmpetugas extends javax.swing.JInternalFrame {
Database dbsetting;
String driver,database,user,pass,userLogin;
private Object tabel;
/** Creates new form Frmpetugas */
public Frmpetugas() {
initComponents();
//setting form agar pada saat di tampilkan berada pada posisi senter/tengah
Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
jTextEdit
JButton
JTable
JLabel
Pemrograman Berorientasi Objek Lanjut 28
Dimension frameSize=this.getSize();
if(frameSize.height > screenSize.height){
frameSize.height=screenSize.height;
}
if(frameSize.width > screenSize.width){
frameSize.width=screenSize.width;
}
this.setLocation((screenSize.width - frameSize.width) / 2,
(screenSize.height = screenSize.height) / 6);
//setting untuk memanggil koneksi Database.ini
dbsetting = new Database();
driver = dbsetting.SettingPanel("DBDriver");
database = dbsetting.SettingPanel("DBDatabase");
user = dbsetting.SettingPanel("DBUsername");
pass = dbsetting.SettingPanel("DBPassword");
table.setModel(tableModel);
Tabel(table, new int[]{70,250,300,70});
setDefaultTable();
SetEditOff();
}
3. Buatlah kode program diatas // Variables declaration - do not modify untuk menampilkan
data pada tabel seperti berikut:
private javax.swing.table.DefaultTableModel tableModel=getDefaultTabelModel();
private void Tabel(javax.swing.JTable tb, int lebar[] ) {
tb.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
int kolom=tb.getColumnCount();
for(int i=0;i < kolom;i++) {
javax.swing.table.TableColumn tbc=tb.getColumnModel().getColumn(i);
tbc.setPreferredWidth(lebar[i]);
tb.setRowHeight(17);
}
}
private javax.swing.table.DefaultTableModel getDefaultTabelModel() {
return new javax.swing.table.DefaultTableModel(
new Object[][] {},
new String [] {"ID Petugas","Nama Petugas","Alamat Petugas","Telpon"}
){
boolean[] canEdit = new boolean[]{
false, false, false, false
};
public boolean isCellEditable(int rowIndex, int columnIndex){
Pemrograman Berorientasi Objek Lanjut 29
return canEdit[columnIndex];
}
};
}
String data[]=new String[4];
private void setDefaultTable() {
String stat ="";
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "SELECT * FROM tblpetugas";
ResultSet res = stt.executeQuery(SQL);
while(res.next()){
data[0] = res.getString(1);
data[1] = res.getString(2);
data[2] = res.getString(3);
data[3] = res.getString(4);
tableModel.addRow(data);
}
res.close();
stt.close();
kon.close();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
4. Buatlah kode program untuk menampilkan data yang sudah tersimpan di database, letakkan
disembarang tempat yang memiliki space kosong seperti berikut ini:
int row = 0;
public void Tampil(){
row = table.getSelectedRow();
IDPetugas.setText(tableModel.getValueAt(row, 0).toString());
NMPetugas.setText(tableModel.getValueAt(row, 1).toString());
Alamat.setText(tableModel.getValueAt(row, 2).toString());
Telp.setText(tableModel.getValueAt(row, 3).toString());
Save.setEnabled(false);
Update.setEnabled(true);
Delete.setEnabled(true);
SetEditOn();
}
5. Buatlah perintah BersihData,SetEditOff, dan SetEditON disembarang tempat yang memiliki space kosong
seperti berikut ini:
Pemrograman Berorientasi Objek Lanjut 30
public void BersihData(){
IDPetugas.setText("");
NMPetugas.setText("");
Alamat.setText("");
Telp.setText("");
}
public void SetEditOff(){
IDPetugas.setEnabled(false);
NMPetugas.setEnabled(false);
Alamat.setEnabled(false);
Telp.setEnabled(false);
}
public void SetEditOn(){
IDPetugas.setEnabled(true);
NMPetugas.setEnabled(true);
Alamat.setEnabled(true);
Telp.setEnabled(true);
}
6. Buatlah kode program AddNew dengan mengklik kanan button AddNew ->evens -> action ->
ActionPerformed.
private void AddNewActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
BersihData();
IDPetugas.requestFocus();
Save.setEnabled(true);
Update.setEnabled(false);
Delete.setEnabled(false);
SetEditOn();
}
7. Buatlah kode program save dengan mengklik kanan button save ->evens -> action -> ActionPerformed.
private void SaveActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String IP=IDPetugas.getText();
String NP=NMPetugas.getText();
String A=Alamat.getText();
String T=Telp.getText();
if ((IP.isEmpty()) | (NP.isEmpty()) |(A.isEmpty() | (T.isEmpty()))) {
JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi");
IDPetugas.requestFocus();
Pemrograman Berorientasi Objek Lanjut 31
}else {
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "insert into tblpetugas values('"+IDPetugas.getText()+"',"+
"'"+NMPetugas.getText()+"',"+
"'"+Alamat.getText()+"',"+
"'"+Telp.getText()+"')";
stt.executeUpdate(SQL);
data[0] = IDPetugas.getText();
data[1] = NMPetugas.getText();
data[2] = Alamat.getText();
data[3] = Telp.getText();
tableModel.insertRow(0, data);
stt.close();
kon.close();
BersihData();
Save.setEnabled(false);
SetEditOff();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
}
8. Buatlah kode program even Click dengan mengklik kanan table(grid) ->evens -> Mouse ->
MouseClicked.
private void tableMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
if (evt.getClickCount()==1) {
Tampil();
}
}
9. Buatlah kode program Update dengan mengklik kanan button Update ->evens -> action ->
ActionPerformed.
private void UpdateActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String IP=IDPetugas.getText();
String NP=NMPetugas.getText();
String A=Alamat.getText();
Pemrograman Berorientasi Objek Lanjut 32
String T=Telp.getText();
if ((IP.isEmpty()) | (NP.isEmpty()) |(A.isEmpty() | (T.isEmpty()))) {
JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi");
IDPetugas.requestFocus();
}else {
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "Update tblpetugas set nmpetugas='"+NMPetugas.getText()+"',"+
"alamat='"+Alamat.getText()+"',"+
"telp='"+Telp.getText()+"'"+
"Where idpetugas='"+IDPetugas.getText()+"'";
stt.executeUpdate(SQL);
data[0] = IDPetugas.getText();
data[1] = NMPetugas.getText();
data[2] = Alamat.getText();
data[3] = Telp.getText();
tableModel.removeRow(row);
tableModel.insertRow(row,data);
stt.close();
kon.close();
BersihData();
Save.setEnabled(false);
SetEditOff();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
}
10. Buatlah kode program Delete dengan mengklik kanan button Delete ->evens -> action ->
ActionPerformed.
private void DeleteActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "delete from tblpetugas where idpetugas='"+IDPetugas.getText()+"'";
stt.executeUpdate(SQL);
data[0] = IDPetugas.getText();
data[1] = NMPetugas.getText();
data[2] = Alamat.getText();
Pemrograman Berorientasi Objek Lanjut 33
data[3] = Telp.getText();
tableModel.removeRow(row);
stt.close();
kon.close();
BersihData();
Delete.setEnabled(false);
Update.setEnabled(false);
SetEditOff();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
11. Buatlah kode program validasi untuk idpetugas dengan cara klik kanan pada IDPetugas[jTextField] pilih
evens -> Key -> KeyTyped.
private void IDPetugasKeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
// Hanya bisa diinput 4 digit
if(IDPetugas.getText().length()>3)
evt.consume();
//hanya bisa diinput dengan angka saja
char c =evt.getKeyChar();
if(!Character.isDigit(c))
evt.consume();
}
12. Buatlah kode program validasi angka pada telpon dengan cara klik kanan pada Telp[jTextField] pilih
evens -> Key -> KeyTyped.
private void TelpKeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
// Hanya bisa diinput 15 digit
if(Telp.getText().length()>14)
evt.consume();
//hanya bisa diinput dengan angka saja
char c =evt.getKeyChar();
if(!Character.isDigit(c))
evt.consume();
}
13. Buatlah kode program Close dengan mengklik kanan button Close ->evens -> action -> ActionPerformed.
private void CloseActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
JOptionPane.showMessageDialog(null,"Yakiin Keluar..?","Informasi",
JOptionPane.INFORMATION_MESSAGE);
Pemrograman Berorientasi Objek Lanjut 34
this.dispose();
}
14. Untuk menjalankan program yang sudah anda buat anda harus memanggil program di menu utama yaitu
aplikasiparkirkendaraanView.java, silahkan anda ketikkan kode program dengan cara klik kanan sub
menu Data Petugas pilih Evens -> Actiom -> ActionPerformed kemudian ketikkan kode program seperti
berikut:
Gambar 1.31 Perintah Evens sub Menu Data Petugas
private void MenuPetugasActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Frmpetugas frmpetugas=new Frmpetugas();
jDesktopPane1.add(frmpetugas, javax.swing.JLayeredPane.DEFAULT_LAYER);
frmpetugas.show();
}
15. Jalankan Program kemudian klik menu Data Petugas maka akan tampil seperti berikut:
Gambar 1.32 Tampilan Program Data Petugas
Pemrograman Berorientasi Objek Lanjut 35
Membuat Desain Form Data Parkir Kendaraan Masuk Sekarang saatnya membuat form data petugas untuk mengetahui siapa petugas yang sedang bertugas. Lakukan beberapa langkah berikut ini:
9. Buatlah file baru dalam paket AplikasiParkirKendaraan, dengan cara klik kanan paket AplikasiParkirKendaraan, Pilih New -> Other…, sehingga muncul jendela New File.
Gambar 1.33 Membuat Objek Baru
10. Pada kolom Categories, pilih Swing GUI Forms, pada kolom File Type pilih saja JInternalFrame Form. Kemudian klik tombol Next sehingga muncul jendela New JInternalFrame Form.
Gambar 1.34 Membuat Form JInternalFrame Form
Pemrograman Berorientasi Objek Lanjut 36
11. Pada jendela New JInternalFrame Form, isikan Frmparkirmasuk pada kotak isian Class Name, dan Package pilih aplikasiparkirkendaraan, lalu tekan tombol Finish untuk mengakhiri.
Gambar 1.35 Menentukan Nama Form JInternalFrame Form
Gambar 1.36 Desain Form Baru
12. Desainlah form yang baru anda ciptakan seperti gambar dibawah ini:
Pemrograman Berorientasi Objek Lanjut 37
Gambar 1.37 Desain Form Data Parkir Kendaraan Masuk
Syntax Program
1. Pada bagian import tambahkan dibawah baris package aplikasiparkirkendaraan sepeti kode
berikut:
package aplikasiparkirkendaraan;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.Date;
2. Pada bagian public class Frmpetugas extends javax.swing.JInternalFrame tambahkan kode
berikut:
public class Frmparkirmasuk extends javax.swing.JInternalFrame {
Database dbsetting;
String driver,database,user,pass,userLogin;
private Object tabel;
/** Creates new form Frmparkirmasuk */
jTextEdit
JButton
JTable
JLabel
jTextEdit
Pemrograman Berorientasi Objek Lanjut 38
public Frmparkirmasuk() {
initComponents();
// Setting untuk mengatur posisi form
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = this.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
this.setLocation((screenSize.width - frameSize.width) / 2,
(screenSize.height = screenSize.height) / 14);
//setting untuk memanggil koneksi Database.ini
dbsetting = new Database();
driver = dbsetting.SettingPanel("DBDriver");
database = dbsetting.SettingPanel("DBDatabase");
user = dbsetting.SettingPanel("DBUsername");
pass = dbsetting.SettingPanel("DBPassword");
table.setModel(tableModel);
Tabel(table, new int[]{70, 90, 70, 70, 70, 70, 70, 70, 70, 70, 70});
setDefaultTable();
TampilComboPetugas();
TampilComboKendaraan();
}
3. Buatlah kode program diatas // Variables declaration - do not modify untuk menampilkan
data pada tabel seperti berikut:
private javax.swing.table.DefaultTableModel tableModel=getDefaultTabelModel();
private void Tabel(javax.swing.JTable tb, int lebar[] ) {
tb.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
int kolom=tb.getColumnCount();
for(int i=0;i < kolom;i++) {
javax.swing.table.TableColumn tbc=tb.getColumnModel().getColumn(i);
tbc.setPreferredWidth(lebar[i]);
tb.setRowHeight(17);
}
}
private javax.swing.table.DefaultTableModel getDefaultTabelModel() {
return new javax.swing.table.DefaultTableModel(
new Object[][] {},
Pemrograman Berorientasi Objek Lanjut 39
new String [] {"No.Tiket","Tanggal","ID Petugas","Nomor Plat","Kode Jenis","Jam Masuk","Jam
Keluar","Bayar","Sisa"}
){
boolean[] canEdit = new boolean[]{
false, false, false, false
};
public boolean isCellEditable(int rowIndex, int columnIndex){
return canEdit[columnIndex];
}
};
}
String data[]=new String[9];
private void setDefaultTable() {
String stat ="";
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "SELECT * FROM tblparkir";
ResultSet res = stt.executeQuery(SQL);
while(res.next()){
data[0] = res.getString(1);
data[1] = res.getString(2);
data[2] = res.getString(3);
data[3] = res.getString(4);
data[4] = res.getString(5);
data[5] = res.getString(6);
data[6] = res.getString(7);
data[7] = res.getString(8);
data[8] = res.getString(9);
tableModel.addRow(data);
}
res.close();
stt.close();
kon.close();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
4. Buatlah kode program TampilComboKendaraan, letakkan disembarang tempat yang memiliki
space kosong, seperti berikut ini :
public void TampilComboKendaraan(){
Pemrograman Berorientasi Objek Lanjut 40
try {
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "SELECT * FROM tbljnskendaraan";
ResultSet res = stt.executeQuery(SQL);
while(res.next()){
KodeJenis.addItem(res.getString("kodejenis"));
}
} catch (SQLException ex) {
}
}
5. Buatlah kode program untuk menampilkan data kombo kendaraan dengan cara klik Evens -> Item ->
ItemStateCanged.
private void KodeJenisItemStateChanged(java.awt.event.ItemEvent evt) {
// TODO add your handling code here:
try {
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "SELECT * FROM tbljnskendaraan where kodejenis='"+
KodeJenis.getSelectedItem().toString()+"'";
ResultSet res = stt.executeQuery(SQL);
res.absolute(1);
Jenis.setText(res.getString("jenis"));
Tarif.setText(res.getString("tarif"));
} catch (SQLException ex) {
}
}
6. Buatlah kode program TampilComboPetugas, letakkan disembarang tempat yang memiliki
space kosong, seperti berikut ini :
public void TampilComboPetugas(){
try {
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "SELECT * FROM tblpetugas";
ResultSet res = stt.executeQuery(SQL);
while(res.next()){
IDPetugas.addItem(res.getString("idpetugas"));
}
} catch (SQLException ex) {
Pemrograman Berorientasi Objek Lanjut 41
}
}
7. Buatlah kode program untuk menampilkan data kombo kendaraan dengan cara klik Evens -> Item ->
ItemStateCanged.
private void IDPetugasItemStateChanged(java.awt.event.ItemEvent evt) {
// TODO add your handling code here:
try {
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "SELECT * FROM tblpetugas where idpetugas='"+
IDPetugas.getSelectedItem().toString()+"'";
ResultSet res = stt.executeQuery(SQL);
res.absolute(1);
NMPetugas.setText(res.getString("nmpetugas"));
} catch (SQLException ex) {
}
}
8. Buatlah kode program untuk menampilkan data yang sudah tersimpan di database, letakkan
disembarang tempat yang memiliki space kosong seperti berikut ini:
int row = 0;
public void Tampil(){
row = table.getSelectedRow();
NoTiket.setText(tableModel.getValueAt(row, 0).toString());
TglParkir.setText(tableModel.getValueAt(row, 1).toString());
IDPetugas.setSelectedItem(tableModel.getValueAt(row, 2).toString());
NoPlat.setText(tableModel.getValueAt(row, 3).toString());
KodeJenis.setSelectedItem(tableModel.getValueAt(row, 4).toString());
JamMasuk.setText(tableModel.getValueAt(row, 5).toString());
JamKeluar.setText(tableModel.getValueAt(row, 6).toString());
Bayar.setText(tableModel.getValueAt(row, 7).toString());
Sisa.setText(tableModel.getValueAt(row, 8).toString());
Save.setEnabled(false);
Update.setEnabled(true);
Delete.setEnabled(true);
}
9. Buatlah perintah BersihData disembarang tempat yang memiliki space kosong seperti berikut ini:
public void BersihData(){
TglParkir.setText("");
Pemrograman Berorientasi Objek Lanjut 42
NoTiket.setText("");
NoPlat.setText("");
KodeJenis.setSelectedIndex(0);
Jenis.setText("");
Tarif.setText("");
JamMasuk.setText("");
JamKeluar.setText("");
Bayar.setText("");
Sisa.setText("");
}
10. Buatlah kode program AddNew dengan mengklik kanan button AddNew ->evens -> action ->
ActionPerformed.
private void AddNewActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
BersihData();
TanggalOtomatis();
IDPetugas.requestFocus();
Save.setEnabled(true);
}
11. Buatlah kode program save dengan mengklik kanan button save ->evens -> action -> ActionPerformed.
private void SaveActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String NT=NoTiket.getText();
String TGP=TglParkir.getText();
String IDP=IDPetugas.getSelectedItem().toString();
String NP=NoPlat.getText();
String KJ=KodeJenis.getSelectedItem().toString();
String JM=JamMasuk.getText();
if ((NT.isEmpty()) | (TGP.isEmpty()) |(IDP.isEmpty())|(NP.isEmpty()|(KJ.isEmpty()|(JM.isEmpty()))))
{JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi");
KodeJenis.requestFocus();
}else {
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "insert into tblparkir values('"+NoTiket.getText()+"',"+
"'"+TglParkir.getText()+"',"+
Pemrograman Berorientasi Objek Lanjut 43
"'"+IDPetugas.getSelectedItem()+"',"+
"'"+NoPlat.getText()+"',"+
"'"+KodeJenis.getSelectedItem()+"',"+
"'"+JamMasuk.getText()+"',"+
"'"+JamKeluar.getText()+"',"+
"'"+Bayar.getText()+"',"+
"'"+Sisa.getText()+"')";
stt.executeUpdate(SQL);
data[0] = NoTiket.getText();
data[1] = TglParkir.getText();
data[2] = IDPetugas.getSelectedItem().toString();
data[3] = NoPlat.getText();
data[4] = KodeJenis.getSelectedItem().toString();
data[5] = JamMasuk.getText();
data[6] = JamKeluar.getText();
data[7] = Bayar.getText();
data[8] = Sisa.getText();
tableModel.insertRow(0, data);
stt.close();
kon.close();
BersihData();
Save.setEnabled(false);
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
}
12. Buatlah kode program even Click dengan mengklik kanan table(grid) ->evens -> Mouse ->
MouseClicked.
private void tableMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
if (evt.getClickCount()==1) {
Tampil();
}
}
13. Buatlah kode program Update dengan mengklik kanan button Update ->evens -> action ->
ActionPerformed.
private void UpdateActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String NT=NoTiket.getText();
String TGP=TglParkir.getText();
String IDP=IDPetugas.getSelectedItem().toString();
Pemrograman Berorientasi Objek Lanjut 44
String NP=NoPlat.getText();
String KJ=KodeJenis.getSelectedItem().toString();
String JM=JamMasuk.getText();
if ((NT.isEmpty()) | (TGP.isEmpty())|(IDP.isEmpty()) | (NP.isEmpty()|(KJ.isEmpty()|(JM.isEmpty()))))
{JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi");
KodeJenis.requestFocus();
}else {
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "Update tblparkir Set tglparkir='"+TglParkir.getText()+"',"+
"idpetugas='"+IDPetugas.getSelectedItem()+"',"+
"noplat='"+NoPlat.getText()+"',"+
"kodejenis='"+KodeJenis.getSelectedItem()+"',"+
"jammasuk='"+JamMasuk.getText()+"',"+
"jamkeluar='"+JamKeluar.getText()+"',"+
"bayar='"+Bayar.getText()+"',"+
"sisa='"+Sisa.getText()+"'"+
"Where notiket='"+NoTiket.getText()+"'";
stt.executeUpdate(SQL);
data[0] = NoTiket.getText();
data[1] = TglParkir.getText();
data[2] = IDPetugas.getSelectedItem().toString();
data[3] = NoPlat.getText();
data[4] = KodeJenis.getSelectedItem().toString();
data[5] = JamMasuk.getText();
data[6] = JamKeluar.getText();
data[7] = Bayar.getText();
data[8] = Sisa.getText();
tableModel.removeRow(row);
tableModel.insertRow(row,data);
stt.close();
kon.close();
BersihData();
Save.setEnabled(false);
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
}
Pemrograman Berorientasi Objek Lanjut 45
14. Buatlah kode program Delete dengan mengklik kanan button Delete ->evens -> action ->
ActionPerformed.
private void DeleteActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "delete from tblparkir where notiket='"+NoTiket.getText()+"'";
stt.executeUpdate(SQL);
data[0] = NoTiket.getText();
data[1] = TglParkir.getText();
data[2] = IDPetugas.getSelectedItem().toString();
data[3] = NoPlat.getText();
data[4] = KodeJenis.getSelectedItem().toString();
data[5] = JamMasuk.getText();
data[6] = JamKeluar.getText();
data[7] = Bayar.getText();
data[8] = Sisa.getText();
tableModel.removeRow(row);
stt.close();
kon.close();
BersihData();
Save.setEnabled(false);
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
15. Buatlah kode program validasi untuk notiket dengan cara klik kanan pada NoTiket[jTextField] pilih evens
-> Key -> KeyTyped.
private void NoTiketKeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
// Hanya bisa diinput 2 digit
if(NoTiket.getText().length()>9)
evt.consume();
//hanya bisa diinput dengan angka saja
char c =evt.getKeyChar();
if(!Character.isDigit(c))
evt.consume();
}
16. Buatlah kode program validasi angka pada nopol dengan cara klik kanan pada NoPol[jTextField] pilih
evens -> Key -> KeyTyped.
Pemrograman Berorientasi Objek Lanjut 46
private void NoPlatKeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
// Hanya bisa diinput 10 digit
if(NoPlat.getText().length()>9)
evt.consume();
}
17. Buatlah kode program Close dengan mengklik kanan button Close ->evens -> action -> ActionPerformed.
private void CloseActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
JOptionPane.showMessageDialog(null,"Yakiin Keluar..?","Informasi",
JOptionPane.INFORMATION_MESSAGE);
this.dispose();
}
18. Buatlah kode program untuk menampilkan tanggal secara otomatis disembarang tempat yang memiliki
space kosong seperti berikut :
public void TanggalOtomatis(){
Date tanggal = new Date();
JamMasuk.setText(""+ (String.format("%1$tH:%1$tM:%1$tS",tanggal)));
TglParkir.setText(""+ (String.format("%1$td:%1$tb:%1$tY",tanggal)));
}
19. Untuk menjalankan program yang sudah anda buat anda harus memanggil program di menu utama yaitu
aplikasiparkirkendaraanView.java, silahkan anda ketikkan kode program dengan cara klik kanan sub
menu Data Parkir Kendaraan Masuk pilih Evens -> Actiom -> ActionPerformed kemudian ketikkan kode
program seperti berikut:
Gambar 1.38 Perintah Evens sub Menu Data Parkir Kendaraan Masuk
Pemrograman Berorientasi Objek Lanjut 47
private void MenuParkirINActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Frmparkirmasuk frmparkirmasuk=new Frmparkirmasuk(); jDesktopPane1.add(frmparkirmasuk, javax.swing.JLayeredPane.DEFAULT_LAYER); frmparkirmasuk.show();
}
20. Jalankan Program kemudian klik menu Data Parkir Kendaraan Masuk maka akan tampil seperti berikut:
Gambar 1.39 Tampilan Program Data Parkir Kendaraan Masuk
Membuat Desain Form Data Parkir Kendaraan Keluar Sekarang saatnya membuat form data petugas untuk mengetahui siapa petugas yang sedang bertugas. Lakukan beberapa langkah berikut ini:
1. Buatlah file baru dalam paket AplikasiParkirKendaraan, dengan cara klik kanan paket AplikasiParkirKendaraan, Pilih New -> Other…, sehingga muncul jendela New File.
Pemrograman Berorientasi Objek Lanjut 48
Gambar 1.40 Membuat Objek Baru
2. Pada kolom Categories, pilih Swing GUI Forms, pada kolom File Type pilih saja JInternalFrame Form. Kemudian klik tombol Next sehingga muncul jendela New JInternalFrame Form.
Gambar 1.41 Membuat Form JInternalFrame Form
3. Pada jendela New JInternalFrame Form, isikan Frmparkirkeluar pada kotak isian Class Name, dan Package pilih aplikasiparkirkendaraan, lalu tekan tombol Finish untuk mengakhiri.
Pemrograman Berorientasi Objek Lanjut 49
Gambar 1.42 Menentukan Nama Form JInternalFrame Form
Gambar 1.43 Desain Form Baru
4. Desainlah form yang baru anda ciptakan seperti gambar dibawah ini:
Pemrograman Berorientasi Objek Lanjut 50
Gambar 1.44 Desain Form Data Parkir Kendaraan Keluar
Syntax Program
1. Pada bagian import tambahkan dibawah baris package aplikasiparkirkendaraan sepeti kode
berikut:
package aplikasiparkirkendaraan;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.Date;
2. Pada bagian public class Frmparkirkeluar extends javax.swing.JInternalFrame tambahkan kode
berikut:
public class Frmparkirkeluar extends javax.swing.JInternalFrame {
Database dbsetting;
String driver,database,user,pass,userLogin;
private Object tabel;
/** Creates new form Frmparkirkeluar */
public Frmparkirkeluar() {
initComponents();
// Setting untuk mengatur posisi form
Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize=this.getSize();
jTextEdit
JButton
jTextEdit
JLabel
jButton
Pemrograman Berorientasi Objek Lanjut 51
if(frameSize.height > screenSize.height){
frameSize.height=screenSize.height;
}
if(frameSize.width > screenSize.width){
frameSize.width=screenSize.width;
}
this.setLocation((screenSize.width - frameSize.width) / 2,
(screenSize.height = screenSize.height) / 14);
//setting untuk memanggil koneksi Database.ini
dbsetting = new Database();
driver = dbsetting.SettingPanel("DBDriver");
database = dbsetting.SettingPanel("DBDatabase");
user = dbsetting.SettingPanel("DBUsername");
pass = dbsetting.SettingPanel("DBPassword");
NoPlat.setEnabled(false);
NoTiket.setEnabled(false);
}
3. Buatlah perintah BersihData disembarang tempat yang memiliki space kosong seperti berikut ini:
public void BersihData(){
TglParkir.setText("");
NoTiket.setText("");
IDPetugas.setText("");
NMPetugas.setText("");
NoPlat.setText("");
KodeJenis.setText("");
Jenis.setText("");
Tarif.setText("");
JamMasuk.setText("");
JamKeluar.setText("");
Bayar.setText("");
Sisa.setText("");
}
4. Buatlah kode program AddNew dengan mengklik kanan button AddNew ->evens -> action ->
ActionPerformed.
private void AddNewActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
BersihData();
NoTiket.requestFocus();
Update.setEnabled(true);
NoPlat.setEnabled(true);
NoTiket.setEnabled(true);
}
Pemrograman Berorientasi Objek Lanjut 52
5. Buatlah kode program Update dengan mengklik kanan button Update ->evens -> action ->
ActionPerformed.
private void UpdateActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String NT=NoTiket.getText();
String NP=NoPlat.getText();
String JK=JamKeluar.getText();
String BYR=Bayar.getText();
if ((NT.isEmpty())|(NP.isEmpty()|(JK.isEmpty()|(BYR.isEmpty())))) {
JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi");
KodeJenis.requestFocus();
}else {
try {
Class.forName(driver);
Connection kon = DriverManager.getConnection(database,user,pass);
Statement stt = kon.createStatement();
String SQL = "Update tblparkir Set tglparkir='"+TglParkir.getText()+"',"+
"idpetugas='"+IDPetugas.getText()+"',"+
"noplat='"+NoPlat.getText()+"',"+
"kodejenis='"+KodeJenis.getText()+"',"+
"jammasuk='"+JamMasuk.getText()+"',"+
"jamkeluar='"+JamKeluar.getText()+"',"+
"bayar='"+Bayar.getText()+"',"+
"sisa='"+Sisa.getText()+"'"+
"Where notiket='"+NoTiket.getText()+"'";
stt.executeUpdate(SQL);
stt.close();
kon.close();
BersihData();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
}
6. Buatlah kode program padat jtextfield NoPolat klik kanan pilih events -> charet -> charetUpdate
private void NoPlatCaretUpdate(javax.swing.event.CaretEvent evt) {
// TODO add your handling code here:
try {
Connection kon = DriverManager.getConnection(database,user,pass);
Pemrograman Berorientasi Objek Lanjut 53
Statement stt = kon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "SELECT * FROM tblparkir where noplat='"+ NoPlat.getText().toString()+"'"+
"and notiket='"+NoTiket.getText().toString()+"'";
ResultSet res = stt.executeQuery(SQL);
res.absolute(1);
TglParkir.setText(res.getString("tglparkir"));
IDPetugas.setText(res.getString("idpetugas"));
KodeJenis.setText(res.getString("kodejenis"));
JamMasuk.setText(res.getString("jammasuk"));
JamKeluar.setText(res.getString("jamkeluar"));
Bayar.setText(res.getString("bayar"));
Sisa.setText(res.getString("sisa"));
} catch (SQLException ex) {
}
}
7. Buatlah kode program validasi untuk notiket dengan cara klik kanan pada NoTiket[jTextField] pilih evens
-> Key -> KeyTyped.
private void NoTiketKeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
// Hanya bisa diinput 10 digit
if(NoTiket.getText().length()>9)
evt.consume();
//hanya bisa diinput dengan angka saja
char c =evt.getKeyChar();
if(!Character.isDigit(c))
evt.consume();
}
8. Buatlah kode program validasi angka pada nopol dengan cara klik kanan pada NoPol[jTextField] pilih
evens -> Key -> KeyTyped.
private void NoPlatKeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
// Hanya bisa diinput 10 digit
if(NoPlat.getText().length()>9)
evt.consume();
}
9. Buatlah kode program Close dengan mengklik kanan button Close ->evens -> action -> ActionPerformed.
private void CloseActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
JOptionPane.showMessageDialog(null,"Yakiin Keluar..?","Informasi",
JOptionPane.INFORMATION_MESSAGE);
Pemrograman Berorientasi Objek Lanjut 54
this.dispose();
}
10. Buatlah kode program untuk menampilkan tanggal secara otomatis disembarang tempat yang memiliki
space kosong seperti berikut :
public void TanggalOtomatis(){
Date tanggal = new Date();
JamKeluar.setText(""+ (String.format("%1$tH:%1$tM:%1$tS",tanggal)));
}
11. Buatlah kode program AddNew1 dengan mengklik kanan button AddNew ->evens -> action ->
ActionPerformed
private void AddNew1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
TanggalOtomatis();
}
12. Untuk menjalankan program yang sudah anda buat anda harus memanggil program di menu utama yaitu
aplikasiparkirkendaraanView.java, silahkan anda ketikkan kode program dengan cara klik kanan sub
menu Data Parkir Kendaraan Keluar pilih Evens -> Actiom -> ActionPerformed kemudian ketikkan kode
program seperti berikut:
Gambar 1.45 Perintah Evens sub Menu Data Parkir Kendaraan Keluar
private void MenuParkirOUTActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Frmparkirkeluar frmparkirkeluar=new Frmparkirkeluar(); jDesktopPane1.add(frmparkirkeluar, javax.swing.JLayeredPane.DEFAULT_LAYER); frmparkirkeluar.show(); }
Pemrograman Berorientasi Objek Lanjut 55
13. Jalankan Program kemudian klik menu Data Parkir Kendaraan Keluar maka akan tampil seperti berikut:
Gambar 1.46 Tampilan Program Data Parkir Kendaraan Keluar
Membuat ToolBar Pada Menu Utama
ToolBar adalah tombol berbentuk ikon atau yang dikenal dengan speed button atau Short Cut
yang biasanya terletak di bawah menu utama. Tombol ini bisa langsung membawa pengguna ke
jendela tertentu hanya dengan sekali klik saja. Sehingga tombol ini hampir pasti ada di setiap
aplikasi. Untuk membuta, masuk dalam form aplikasiparkirkendaraanView dan lakukan
langkah-langkah berikut :
1. Tambahkan JToolBar pada container mainPanel, perhatikan petunjuk berikut.
Pemrograman Berorientasi Objek Lanjut 56
Gambar 1.47 Menambah ToolBar
Gambar 1.48 Menambah Tombo pada ToolBar
2. Selanjutnya tambahkan JBUtton pada ToolBar (lihat gambar dibawah). Untuk
menampilkan ikon, ubah propertis ikon (klik pada tombol ).
Gambar 1.49 Memilih Icon
Anda bisa mengambil ikon dealm paket/folder yang sudah anda siapkan sebelumnya. Sebagai contoh, sebelumnya telah memasukkan file-file gambar dalam folder icon, file-file icon tersebut bisa dipakai. Tentunya bisa membuat sendiri gambar-gambar ikon yang lebih menarik dan cocok. Pilih define as a Resource (menjadikan sebagai file dalam resource) tidak perlu dipih. Tekan
tombol OK pada jendela icon.
Pemrograman Berorientasi Objek Lanjut 57
Hapus properti Text pada JButton tersebut, berikan variable namanya
SubMenuJenisKendaraan.
3. Berikan event klik pada jenis kendaraan dengan cara klik kanan, lalu pilih
SubMenuJenisKendaraan -> Events -> Action -> actionPerformed.
Selanjutnya masukkan perintah berikut:
private void SubMenuJenisKendaraanActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Frmjeniskendaraan frmjeniskendaraan=new Frmjeniskendaraan();
jDesktopPane1.add(frmjeniskendaraan, javax.swing.JLayeredPane.DEFAULT_LAYER);
frmjeniskendaraan.show();
}
Gambar 1.50 Tombol pada ToolBar
4. Lakukan hal yang sama untuk membuat tombol Petugas,Kendaraan Parkir Masuk, Kendaraan Parkir Keluar, dan Report. Sehingga toolbar menjadi seperti gambar di atas.
5. Berikut event pada tombol Petugas: private void SubMenuPetugasActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Frmpetugas frmpetugas=new Frmpetugas(); jDesktopPane1.add(frmpetugas, javax.swing.JLayeredPane.DEFAULT_LAYER); frmpetugas.show();
}
6. Berikut event pada tombol Parkir Kendaraan Masuk: private void SubMenuParkirKendaraanINActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Frmparkirmasuk frmparkirmasuk=new Frmparkirmasuk(); jDesktopPane1.add(frmparkirmasuk, javax.swing.JLayeredPane.DEFAULT_LAYER); frmparkirmasuk.show(); }
7. Berkut event pada tombol Parkir Kendaraan Keluar:
Pemrograman Berorientasi Objek Lanjut 58
private void SubMenuParkirKendaraanOUTActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Frmparkirkeluar frmparkirkeluar=new Frmparkirkeluar(); jDesktopPane1.add(frmparkirkeluar, javax.swing.JLayeredPane.DEFAULT_LAYER); frmparkirkeluar.show(); }
8. Berikut event pada tombol Report: private void SubMenuReportActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: FrmReport frmReport=new FrmReport(); jDesktopPane1.add(frmReport, javax.swing.JLayeredPane.DEFAULT_LAYER); frmReport.show(); }
Sampai saat ini pembuatan aplikasi bisa dikatakan selesai.
MEMBUAT LAPORAN
Jika program aplikasi sudah selesai dibuat, kini giliran kita membuat halaman laporan dari
semua data yang ada. Berikut selengkapnya.
Mengenal JasperReport
JasperReport adalah sebuah tool yang sangat powerfull untuk membuat laporan dalam bentuk
PDF,HTML,XLS,RTF,ODT,CSV,TXT dan XML. Dengan kemampuan dan fleksibilitasnya yang sangat
tinggi, anda bisa membuat berbagai laporan berbentuk Chart, Crosstabs, Subreport, dan
kemampuan lain yang anda butuhkan.
Komponen yang Digunakan Untuk Membuat Report :
Silahkan klik kanan Libraries pilih Add JAR/Folder maka akan tampil seperti berikut:
Pemrograman Berorientasi Objek Lanjut 59
Gambar 1.51 direktory Add JAR/Folder
Adapun file-file Jasper Report Engine yang harus dipilih adalah sebagai berikut:
Jasperreport-2.0.5.jar pada direktori d:\Aplikasi Parkir
Kendaraan\aplikasiparkirkendaraan\lib
Commons-beanutils-1.7.jar pada direktori d:\Aplikasi Parkir
Kendaraan\aplikasiparkirkendaraan\lib
Commons-collections-2.1.jar pada direktori d:\Aplikasi Parkir
Kendaraan\aplikasiparkirkendaraan\lib
Commons-digester-1.7.jar pada direktori d:\Aplikasi Parkir
Kendaraan\aplikasiparkirkendaraan\lib
Commons-logging-1.0.2.jar pada direktori d:\Aplikasi Parkir
Kendaraan\aplikasiparkirkendaraan\lib
Commons-logging-api-1.0.2.jar pada direktori d:\Aplikasi Parkir
Kendaraan\aplikasiparkirkendaraan\lib
Commons-javaflow-20060411.jar pada direktori d:\Aplikasi Parkir
Kendaraan\aplikasiparkirkendaraan\lib
Jdt-compiler-3.1.1.jar pada direktori d:\Aplikasi Parkir
Kendaraan\aplikasiparkirkendaraan\lib
Setelah anda mengambil semua file yang dibutuhkan seperti diatas maka langkah selanjutnya
anda harus melakukan pengidentifikasian berkas jrxml pada NetBeans dengan cara berikut:
Buka menu tools -> Options, sehingga muncul jendela Options. Pada jendela tersebut
klik Advanced Option, sehingga muncul jendela Advanced Options.
Pemrograman Berorientasi Objek Lanjut 60
Dalam jendela Advanced Options, perhatikan sebelah kiri, pilih pada node IDE
Configuration -> System -> Object Types -> XML Objects.
Masih pada jendela Advanced Options, lihat jendela bagian kanan. Ada properti
Extensions anda MIME Types, tekan pada tombol… yang ada di sampingnya, sehingga
muncul jendela XML Object – Extensions and MIME Types. Pada kotak isian item,
masukkan jrxml, kemudian tean Add, sehingga jrxml tersebut masuk dalam daftar item
List, lalu klik tombol OK. Dan tutup jendela-jendela Options tersebut.
Gambar 1.52 Berkas yang Dikenali Editor NetBeans
Mengenal IReports IReport adalah sebuah tool yang digunakan untuk membuat desain laporan pada JasperReports. Artinya, dengan fasilitas ini anda bisa membuat report dengan drag and drop, bahkan secara otomatis (wizard). Sama dengan JasperReports, program ini lagi-lagi open source. Pembuat program ini adalah Giulio Toffoli pada tahun 2005. Anda bisa mendapatkan informasi dan distribusi filenya pada alamat http://ireport.sourceforget.net.
Instalasi IReport dan Konfigurasi Databasenya
Untuk menginstal IReport sebelumnya anda harus mempunya file install JasperReport, jika
sudah ada silahkan klik ganda file IReport-nb-0.9.1-windows-installer.exe. ini adalah distribusi
yang mendukung NetBeans. Jadi, sangat memudahkan pengguna NetBeans.
Pemrograman Berorientasi Objek Lanjut 61
Gambar 1.53 Jendela Permulaan Pemasangan IReport
Gambar 1.54 Jendela Lisensi IReport
Pemrograman Berorientasi Objek Lanjut 62
Gambar 1.55 Jendela Pemilihan Feature IReport
Gambar 1.56 Jendela Lokasi Program File IReport Silahkan anda lanjutkan dengan mengklik tombol Next dan ikuti semua dialognya sampai selesai. Jalankan program iReport dengan cara masuk ke dalam Start menu Windows. Pilih JasperSoft -> iReport-nb-0.9.1 -> iReport-nb-0.9.1, sehingga muncul jendela pembuka seperti pada gambar berkut diikuti dengan halaman utama
Pemrograman Berorientasi Objek Lanjut 63
Gambar 1.57 Jendela Splash Screen IReport
Gambar 1.58 Tampilan IReport
Setelah tampil jendela menu iReport anda harus memanggil koneksi mysql-connector-java-5.1.6-bin dengan cara klik Tools -> Options -> classpath klik tombol Add JAR silahkan anda ambil komponen mysql-connector-java-5.1.6-bin seperti gambar berikut:
Pemrograman Berorientasi Objek Lanjut 64
Gambar 1.59 Tampilan Add JAR/Path to the classpath
Gambar 1.60 Tampilan Komponen yang sudah dipanggil
Gambar di atas adalah jendela iReport pertama kali. Sebelum membuat laporan, buatlah dulu
sebuah koneksi agar bisa membuka database anda. Dengan cara: pilih menu Tool -> Report
Datasource, sehingga muncul jendela seperti gambar berkut.
Pemrograman Berorientasi Objek Lanjut 65
Gambar 1.61 Jendela Daftar Konfigurasi Koneksi
Selanjutnya tekan tombol New pada sebelah kanan, sehingga muncul jendela seperti gambar berikut.
Gambar 1.62 Pemilihan JDBC
Selanjutnya, pilih Database JDBC dan klik tombol Next, Sehingga muncul jendela seperti pada gambar berikut.
Pemrograman Berorientasi Objek Lanjut 66
Gambar 1.63 Pengisian Konfigurasi Database
Untuk memastikan hasil dari koneksi database yang sudah dibuat klik tombol Test jika benar maka akan tampil seperti gambar dibawah:
Gambar 1.64 Testing Koneksi Database
Pemrograman Berorientasi Objek Lanjut 67
Membuat Laporan Setelah anda selesai membuat koneksi database langkah selanjutnya silahkan anda membuat laporan seperti berikut
1. Klik File -> Report Wizard maka akan tampil seperti gambar dibawah :
Gambar 1.65 Tampilan New Report
2. Ubahlah Report Name dan Location untuk menentukan dimana anda akan meletakkan laporan.
3. Kemudian Klik tombol Next untuk melanjutkan perintah seperti gambar dibawah:
Gambar 1.66 Tampilan New Report steps 2
Pemrograman Berorientasi Objek Lanjut 68
4. Ubahlah Connection / Data Source sesuai dengan koneksi yang anda buat , kemudian silahkan anda is Query seperti gambar dibawah ini:
Gambar 1.67 Tampilan Query
5. Klik tombol Next maka akan tampil seperti gambar dibawah ini:
Gambar 1.68 Tampilan Hasil Query
Pemrograman Berorientasi Objek Lanjut 69
6. Klik tombol Next seperti Gambar dibawah :
Gambar 1.69 Tampilan Hasil Query
7. Klik tombo Next dan silahkan anda isi Group1 dengan notiket dan Group2 dengan noplat seperti gambar dibawah :
Gambar 1.70 Tampilan Group Report
8. Klik tombol Next maka akan tampil pilihan Layout/jenis report yang anda inginkan seperti gambar dibawah ini:
Pemrograman Berorientasi Objek Lanjut 70
Gambar 1.71 Tampilan Layout Report
Gambar 1.72 Tampilan Report
9. Untuk melihat hasil tekan Preview maka akan tampil seperti gambar dibawah ini:
Pemrograman Berorientasi Objek Lanjut 71
Gambar 1.73 Tampilan Report Preview
10. Setelah selesai membuat report yang pertama silahkan anda membuat report kedua, untuk report yang kedua kita tidak menggunakan report wizard tetapi kita akan coba membuat report secara manual.
11. Klik File -> New Empty Report maka akan tampil seperti gambar dibawah ini:
Gambar 1.74 Tampilan New Report
12. Isilah Report Name dan Location sama seperti anda membuat report yang pertama kemudian klik tombol Next maka akan tampil seperti gambar dibawah ini:
Pemrograman Berorientasi Objek Lanjut 72
Gambar 1.75 Tampilan New Report Kosong
13. Kemudian setelah tampil report kosong tekan icon sebelah Preview kemudian isikan Query seperti gambar dibawah ini:
Gambar 1.76 Tampilan Query
Pemrograman Berorientasi Objek Lanjut 73
14. Setelah selesal silahkan anda masuk ke Report Inspector kemudian anda pilih Parameter klik kanan pilih Add Parameter setelah terbentuk Parameter1 silahkan anda ubah dengan cara meRename kemudian anda ubah menjadi NoTiket setelah selesai anda mengubah nama parameter silahkan anda anda pilih Propertis pilih Default Value Expression kemudian anda isikan angka sesua dengan notiket yang sudah anda simpan kedatabase. Kemudian silahkan anda disain seperti gambar dibawah ini:
Gambar 1.77 Tampilan Report
15. Klik File -> New Empty Report maka akan tampil seperti gambar dibawah ini:
Gambar 1.78 Tampilan Report Preview
Pemrograman Berorientasi Objek Lanjut 74
Membuat Desain Form Report Sekarang saatnya membuat form report untuk mengetahui siapa petugas yang sedang bertugas. Lakukan beberapa langkah berikut ini:
1. Buatlah file baru dalam paket AplikasiParkirKendaraan, dengan cara klik kanan paket AplikasiParkirKendaraan, Pilih New -> Other…, sehingga muncul jendela New File.
Gambar 1.74 Membuat Objek Baru
2. Pada kolom Categories, pilih Swing GUI Forms, pada kolom File Type pilih saja JInternalFrame Form. Kemudian klik tombol Next sehingga muncul jendela New JInternalFrame Form.
Gambar 1.75 Membuat Form JInternalFrame Form
3. Pada jendela New JInternalFrame Form, isikan Frmreport pada kotak isian Class Name, dan Package pilih aplikasiparkirkendaraan, lalu tekan tombol Finish untuk mengakhiri.
Pemrograman Berorientasi Objek Lanjut 75
Gambar 1.76 Menentukan Nama Form JInternalFrame Form
Gambar 1.77 Desain Form Baru
4. Desainlah form yang baru anda ciptakan seperti gambar dibawah ini:
Pemrograman Berorientasi Objek Lanjut 76
Gambar 1.78 Desain Form Data Report
Syntax Program
1. Pada bagian import tambahkan dibawah baris package aplikasiparkirkendaraan sepeti kode
berikut:
package aplikasiparkirkendaraan;
import java.util.HashMap;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.JOptionPane;
jButton
jButton
JLabel
jButton
Pemrograman Berorientasi Objek Lanjut 77
2. Pada bagian public class FrmReport extends javax.swing.JInternalFrame tambahkan kode
berikut:
public class FrmReport extends javax.swing.JInternalFrame {
Database dbsetting;
String driver,database,user,pass,userLogin;
private Object tabel;
/** Creates new form FrmReport */
public FrmReport() {
initComponents();
// Setting untuk mengatur posisi form
Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize=this.getSize();
if(frameSize.height > screenSize.height){
frameSize.height=screenSize.height;
}
if(frameSize.width > screenSize.width){
frameSize.width=screenSize.width;
}
this.setLocation((screenSize.width - frameSize.width) / 2,
(screenSize.height = screenSize.height) / 8);
//setting untuk memanggil koneksi Database.ini
dbsetting = new Database();
driver = dbsetting.SettingPanel("DBDriver");
database = dbsetting.SettingPanel("DBDatabase");
user = dbsetting.SettingPanel("DBUsername");
pass = dbsetting.SettingPanel("DBPassword");
}
3. Buatlah kode program CetakALL dengan mengklik kanan button AddNew ->evens -> action ->
ActionPerformed.
private void CetakALLActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try{
String NamaFile="src/report/RptParkirAll.jasper";
HashMap parameter = new HashMap();
Class.forName(driver);
Connection con = DriverManager.getConnection(database,user,pass);
File reportfile = new File(NamaFile);
JasperReport jasperReport =(JasperReport)JRLoader.loadObject(reportfile.getPath());
JasperPrint jasperPrint =JasperFillManager.fillReport(jasperReport, parameter, con);
JasperViewer.viewReport(jasperPrint,false);
Pemrograman Berorientasi Objek Lanjut 78
JasperViewer.setDefaultLookAndFeelDecorated(true);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Data tidak dapat dicetak !",
"Cetak Data",JOptionPane.ERROR_MESSAGE);
}
}
4. Buatlah kode program CetakKode dengan mengklik kanan button AddNew ->evens -> action ->
ActionPerformed.
private void CetakKodeActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try{
String NamaFile="src/report/RptParkirPerkode.jasper";
HashMap parameter = new HashMap();
parameter.put("NoTiket",NoTiket.getText());
Class.forName(driver);
Connection con = DriverManager.getConnection(database,user,pass);
File reportfile = new File(NamaFile);
JasperReport jasperReport =(JasperReport)JRLoader.loadObject(reportfile.getPath());
JasperPrint jasperPrint =JasperFillManager.fillReport(jasperReport, parameter, con);
JasperViewer.viewReport(jasperPrint,false);
JasperViewer.setDefaultLookAndFeelDecorated(true);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Data tidak dapat dicetak !",
"Cetak Data",JOptionPane.ERROR_MESSAGE);
}
}
5. Buatlah kode program Close dengan mengklik kanan button AddNew ->evens -> action ->
ActionPerformed.
private void CloseActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
this.dispose();
}
Top Related