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
1
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 kodejenis * jenis tarif
Tipe Data Char Varchar Char
Panjang 2 40 10
Pemrograman Berorientasi Objek Lanjut
2
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 idpetugas * nmpetugas alamat telp
Tipe Data Char Varchar Varchar Varchar
Panjang 4 60 100 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
3
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 TblPetugas
TblParkir
idpetugas
notiket
nmpetugas
tglparkir
alamat
idpetugas
telp
noplat
TblJnsKendaraan kodejenis jenis tarif
kodejenis jammasuk jamkeluar bayar sisa
Pemrograman Berorientasi Objek Lanjut
4
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
5
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-win322.5.10.exe. ikuti petunjuk dan jangan lupa untuk menyimpan nama password atau usernya 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
6
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
7
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
8
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
9
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
10
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
11
Gambar 1.12 Submenu File
Gambar 1.13 Submenu Transaksi
Gambar 1.14 Submenu Report
Gambar 1.15 Submenu Help
Pemrograman Berorientasi Objek Lanjut
12
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
13
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
14
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
15
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
16
jTextEdit
JLabel
JTable
JButton
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();
Pemrograman Berorientasi Objek Lanjut
17
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
18
} }; } 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
19
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
20
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 MouseClicked.
dengan mengklik kanan table(grid) ->evens -> Mouse ->
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
21
}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
22
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
23
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
24
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
25
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
26
jTextEdit
JLabel
JTable
JButton
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();
Pemrograman Berorientasi Objek Lanjut
27
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
28
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
29
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
30
}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 MouseClicked.
dengan mengklik kanan table(grid) ->evens -> Mouse ->
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
31
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
32
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
33
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
34
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
35
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
36
jTextEdit
JLabel
JTable
jTextEdit
JButton
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 */
Pemrograman Berorientasi Objek Lanjut
37
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
38
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
39
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
40
} } 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
41
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
42
"'"+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 MouseClicked.
dengan mengklik kanan table(grid) ->evens -> Mouse ->
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
43
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
44
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
45
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
46
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
47
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
48
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
49
jTextEdit
JLabel
jButton jTextEdit
JButton
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();
Pemrograman Berorientasi Objek Lanjut
50
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.
4.
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(""); } 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
51
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
52
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
53
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
54
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
55
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
56
Hapus properti Text SubMenuJenisKendaraan.
pada
JButton
tersebut,
berikan
variable
namanya
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
57
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
58
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
59
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
60
Gambar 1.53 Jendela Permulaan Pemasangan IReport
Gambar 1.54 Jendela Lisensi IReport
Pemrograman Berorientasi Objek Lanjut
61
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
62
Gambar 1.57 Jendela Splash Screen IReport
Gambar 1.58 Tampilan IReport Setelah tampil jendela menu iReport anda harus memanggil koneksi mysql-connector-java5.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
63
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
64
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
65
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
66
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
67
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
68
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
69
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
70
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
71
Gambar 1.75 Tampilan New Report Kosong 13. Kemudian setelah tampil report kosong tekan icon Query seperti gambar dibawah ini:
sebelah Preview kemudian isikan
Gambar 1.76 Tampilan Query
Pemrograman Berorientasi Objek Lanjut
72
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
73
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
74
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
75
jButton JLabel
jButton jButton
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;
Pemrograman Berorientasi Objek Lanjut
76
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
77
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(); }
Pemrograman Berorientasi Objek Lanjut
78