78
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

  • Upload
    aris27

  • View
    188

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Pemrograman berorientasi-objek

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

Page 2: Pemrograman berorientasi-objek

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

Page 3: Pemrograman berorientasi-objek

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.

Page 4: Pemrograman berorientasi-objek

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

Page 5: Pemrograman berorientasi-objek

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)

Page 6: Pemrograman berorientasi-objek

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.

Page 7: Pemrograman berorientasi-objek

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.

Page 8: Pemrograman berorientasi-objek

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:

Page 9: Pemrograman berorientasi-objek

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; }

}

Page 10: Pemrograman berorientasi-objek

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.

Page 11: Pemrograman berorientasi-objek

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.

Page 12: Pemrograman berorientasi-objek

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

Page 13: Pemrograman berorientasi-objek

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

Page 14: Pemrograman berorientasi-objek

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

Page 15: Pemrograman berorientasi-objek

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

Page 16: Pemrograman berorientasi-objek

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:

Page 17: Pemrograman berorientasi-objek

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

Page 18: Pemrograman berorientasi-objek

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];

Page 19: Pemrograman berorientasi-objek

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();

}

Page 20: Pemrograman berorientasi-objek

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 {

Page 21: Pemrograman berorientasi-objek

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();

Page 22: Pemrograman berorientasi-objek

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);

Page 23: Pemrograman berorientasi-objek

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:

Page 24: Pemrograman berorientasi-objek

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

Page 25: Pemrograman berorientasi-objek

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.

Page 26: Pemrograman berorientasi-objek

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:

Page 27: Pemrograman berorientasi-objek

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

Page 28: Pemrograman berorientasi-objek

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){

Page 29: Pemrograman berorientasi-objek

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:

Page 30: Pemrograman berorientasi-objek

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();

Page 31: Pemrograman berorientasi-objek

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();

Page 32: Pemrograman berorientasi-objek

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();

Page 33: Pemrograman berorientasi-objek

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);

Page 34: Pemrograman berorientasi-objek

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

Page 35: Pemrograman berorientasi-objek

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

Page 36: Pemrograman berorientasi-objek

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:

Page 37: Pemrograman berorientasi-objek

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

Page 38: Pemrograman berorientasi-objek

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[][] {},

Page 39: Pemrograman berorientasi-objek

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(){

Page 40: Pemrograman berorientasi-objek

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) {

Page 41: Pemrograman berorientasi-objek

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("");

Page 42: Pemrograman berorientasi-objek

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()+"',"+

Page 43: Pemrograman berorientasi-objek

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();

Page 44: Pemrograman berorientasi-objek

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());

}

}

}

Page 45: Pemrograman berorientasi-objek

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.

Page 46: Pemrograman berorientasi-objek

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

Page 47: Pemrograman berorientasi-objek

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.

Page 48: Pemrograman berorientasi-objek

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.

Page 49: Pemrograman berorientasi-objek

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:

Page 50: Pemrograman berorientasi-objek

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

Page 51: Pemrograman berorientasi-objek

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);

}

Page 52: Pemrograman berorientasi-objek

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);

Page 53: Pemrograman berorientasi-objek

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);

Page 54: Pemrograman berorientasi-objek

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(); }

Page 55: Pemrograman berorientasi-objek

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.

Page 56: Pemrograman berorientasi-objek

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.

Page 57: Pemrograman berorientasi-objek

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:

Page 58: Pemrograman berorientasi-objek

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:

Page 59: Pemrograman berorientasi-objek

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.

Page 60: Pemrograman berorientasi-objek

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.

Page 61: Pemrograman berorientasi-objek

Pemrograman Berorientasi Objek Lanjut 61

Gambar 1.53 Jendela Permulaan Pemasangan IReport

Gambar 1.54 Jendela Lisensi IReport

Page 62: Pemrograman berorientasi-objek

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

Page 63: Pemrograman berorientasi-objek

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:

Page 64: Pemrograman berorientasi-objek

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.

Page 65: Pemrograman berorientasi-objek

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.

Page 66: Pemrograman berorientasi-objek

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

Page 67: Pemrograman berorientasi-objek

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

Page 68: Pemrograman berorientasi-objek

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

Page 69: Pemrograman berorientasi-objek

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:

Page 70: Pemrograman berorientasi-objek

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:

Page 71: Pemrograman berorientasi-objek

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:

Page 72: Pemrograman berorientasi-objek

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

Page 73: Pemrograman berorientasi-objek

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

Page 74: Pemrograman berorientasi-objek

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.

Page 75: Pemrograman berorientasi-objek

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:

Page 76: Pemrograman berorientasi-objek

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

Page 77: Pemrograman berorientasi-objek

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);

Page 78: Pemrograman berorientasi-objek

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();

}