Pemrograman Lanjut| 5/18/2011
1
Table of Contents DAO Pattern ................................................................................................................................................ 3 Contoh Kasus .............................................................................................................................................. 4 Diagram UML dan Database ....................................................................................................................... 4 Use Case Diagram Perpustakaan ..................................................................................................... 4 Class Diagram Entity Perpustakaan .................................................................................................. 5 Class Diagram DAO............................................................................................................................. 5 Diagram Database ............................................................................................................................... 6 Target dari perkuliahan ini adalah.......................................................................................................... 7 Memulai Project SistemPerpustakaan .................................................................................................. 7 Membuat project baru di Netbeans.................................................................................................... 7 Membuat Tampilan .................................................................................................................................. 9 Mendesain Form Utama ...................................................................................................................... 9 Mendesain Form Data Mahasiswa .................................................................................................. 16 Menghubungkan FrmMain dengan FrmDataMahasiswa ...................................................................... 23 Mengatur Main kelas ............................................................................................................................ 24 Membuat Entity ........................................................................................................................................ 25 Class Diagram Entity Perpustakaan ....................................................................................................... 25
Kelas Anggota......................................................................................................................... 26
Kelas Mahasiswa ................................................................................................................... 27
Kelas PetugasPerpus ............................................................................................................ 27
Kelas Koleksi .......................................................................................................................... 28
Kelas ItemKoleksi ................................................................................................................. 29
Kelas Transaksi ..................................................................................................................... 30
Kelas TransaksiPeminjaman .............................................................................................. 31
Kelas TransaksiPengembalian ........................................................................................... 31
Kelas Karyawan ..................................................................................................................... 31
Kelas Denda ............................................................................................................................ 32
Kelas Buku .............................................................................................................................. 33
Pemrograman Lanjut | 5/18/2011
Kode Program ....................................................................................................................................... 26
1
Pemrograman Lanjut| 5/18/2011
2
ItemTransaksi ........................................................................................................................ 34
Membuat DAO .......................................................................................................................................... 35 Diagram Database ................................................................................................................................. 35 Class Diagram DAO Perpustakaan ......................................................................................................... 36 Kode Program ....................................................................................................................................... 37
Kelas Database .......................................................................................................................... 37
Kelas AbstractDao ..................................................................................................................... 39
Kelas DaoMahasiswa ................................................................................................................. 40
Untuk DAO Selanjutnya slahkan dikembangkan sendiri ....................................................................... 42
Kelas DaoPetugasPerpus ........................................................................................................... 42
Kelas DaoPengembalian ............................................................................................................ 42
Kelas DaoPeminjaman............................................................................................................... 42
Kelas DaoItemKoleksi ................................................................................................................ 42
Kelas DaoPetugasPerpus ........................................................................................................... 42
Kelas DaoKaryawan ................................................................................................................... 42
Menghubungkan DAO dengan View ......................................................................................................... 43 Mendesain JTable ................................................................................................................................. 43 Menambahkan JDBC Driver ...................................................................................................................... 46 Mendatarkan MySQL ke Netbeans ........................................................................................................... 47 Membuat Form Input Mahasiswa ............................................................................................................. 50 Menambahkan event di Form Input Dialog Mahasiswa............................................................................ 61 Menghubungkan Form Data Mahasiswa dan Dialog Input Mahasiswa .................................................... 63
Pemrograman Lanjut | 5/18/2011
Mendesain Report .................................................................................................................................... 64
2
Pemrograman Lanjut| 5/18/2011
3
DAO Pattern Salah satu aspek dari lapisan bisnis adalah lapisan akses data yang menghubungkan layanan dengan database. Mengakses data bervariasi tergantung pada sumber data. Akses ke data persisten sangat bervariasi tergantung pada jenis penyimpanan (database, flat file, file xml, dan sebagainya) dan bahkan berbeda dari pelaksanaannya (misalnya berbeda-dialek SQL). Tujuannya adalah untuk merangkum semua akses ke data dan menyediakan interface. Ini disebut pola DAO. Dari sudut pandang aplikasi, tidak ada bedanya ketika mengakses sebuah database relasional atau memparsing file xml (menggunakan DAO). DAO ini biasanya mampu menciptakan sebuah instance dari objek data ("untuk membaca data") dan juga untuk menyimpan data sebagai sumber data. DAO Digunakan ketika
Membutuhkan akses data lebih dari satu kali dan ada kemungkinan pertukaran data antar aplikasi Menginginkan pemisahan antarmuka dengan mekanisme pengaksesan data Pada tim pengembang yang besar, memungkinkan untuk melakukan pemisahan pekerjaan
Pemrograman Lanjut | 5/18/2011
Contoh kelas diagram untuk DAO
3
Pemrograman Lanjut| 5/18/2011
4
Contoh Kasus Perpustakaan STMIK AMIKOM Yogyakarta menyewakan buku dan CD kepada mahasiswa, dosen, dan karyawan. Dimana seorang mahasiswa hanya diijinkan meminjam buku berbahasa Indonesia, CD. Sementara itu dosen diijinkan meminjam semua koleksi di perpustakaan termasuk buku asing, begitu juga karyawan. Seorang mahasiswa hanya diijinkan meminjam maksimal 3 buah koleksi, berbeda dengan dosen dan karyawan yang bisa meminjam tanpa batas. Para pengunjung perpustakaan dapat melakukan pencarian koleksi berasarkan judul, pengarang atau penerbit, melihat daftar koleksi di komputer pencarian. Prosedur peminjaman adalah dengan membawa buku yang hendak dipinjam dan menunjukkan KTM untuk mahasiswa, NIK untuk dosen dan karyawan kepada petugas perpustakaan. Mahasiswa diperbolehkan meminjam selama satu minggu, selebihnya didenda. Petugas perpustakaan bertugas melakukan pendataan buku, mencatat peminjaman dan pengembalian, menghitung denda, serta membantu mencarikan koleksi melalui mesin pencari. Para pengunjung perpustakaan dapat meminjam buku, mencari koleksi di mesin pencari dan membayar denda. Selain itu petugas perpustakaan juga dapat mencetak laporan seperti Laporan Daftar Koleksi, Laporan Transaksi Harian, Bulanan, Laporan Daftar Anggota, Laporan Pembayaran Denda. Berikut ini adalah beberapa diagram UML yang akan menjadi acuan kita dalam pengembangan Sistem Perpustakaan ini
Diagram UML dan Database
Pemrograman Lanjut | 5/18/2011
Use Case Diagram Perpustakaan
4
Pemrograman Lanjut| 5/18/2011
5
Class Diagram Entity Perpustakaan
Pemrograman Lanjut | 5/18/2011
Class Diagram DAO
5
Pemrograman Lanjut| 5/18/2011
6
Pemrograman Lanjut | 5/18/2011
Diagram Database
6
Pemrograman Lanjut| 5/18/2011
7
Target dari perkuliahan ini adalah
Memahami konsep DAO Membuat koneksi database ke mysql Merancang tampilan Menyelesaikan minimal modul pengolahan data mahasiswa Menyelesaikan minimal modul peminjaman Menyelesaikan minimal report peminjaman harian
Memulai Project SistemPerpustakaan Membuat project baru di Netbeans 1. Jalankan Netbeans Anda 2. Pilih menu File New Project
Pemrograman Lanjut | 5/18/2011
3. Pada Categories pilih Java, Project Pilih Java Application Next
7
Pemrograman Lanjut| 5/18/2011
8
4. Pada project name berinama SistemPerpustakaan
Pemrograman Lanjut | 5/18/2011
Project Location diisi dengan folder anda di lab. Beri tanda check pada Use Dedicated Folder for Storing Libraries, Create Main Class dan Set as Main Project. Pilih Finish 5. Tampilan project baru yang anda dapatkan
8
Pemrograman Lanjut| 5/18/2011
9
Membuat Tampilan Mendesain Form Utama 1. Buat 1 buah paket baru didalam paket sistemperpustakaan
Pemrograman Lanjut | 5/18/2011
2. Beri nama view untuk paket baru Finish
9
Pemrograman Lanjut| 5/18/2011
10
3. Tambahkan 1 buah JFrame didalam paket view
Pemrograman Lanjut | 5/18/2011
4. Beri nama FrmMain Finish
10
Pemrograman Lanjut| 5/18/2011
11
5. Maka anda akan mendapatkan tampilan sebagai berikut
7. Kemudian drag di tempat kosong di bagian atas
Pemrograman Lanjut | 5/18/2011
6. Pada palette pilih Swing Menus Menu Bar
11
Pemrograman Lanjut| 5/18/2011
12
8. Cari window inspector di kiri bawah
9. Silahkan tanda + pada jMenuBar1 diklik, maka anda akan mendapatkan JMenu1 dan JMenu2 10. Klik kanan pada JMenu2 kemudian pilih Edit Text
Pemrograman Lanjut | 5/18/2011
11. Ubah dari tulisan Edit menjadi Laporan
12
Pemrograman Lanjut| 5/18/2011
13
12. Ubah variabel name dari JMenu1 menjadi mnuFile kemudian pilih OK
13. Untuk JMenu2 ubah variabel namenya menjadi mnuLaporan, sehingga di inspector tampak seperti gambar berikut
Pemrograman Lanjut | 5/18/2011
14. Tambahkan MenuItem di mnuFile dengan cara klik kanan mnuFile Add From Palette Menu Item
13
Pemrograman Lanjut| 5/18/2011
14
15. Tambahkan sampai 3 jMenuItem, seperti inspector berikut ini
16. Ubah text dari jMenuItem1 menjadi Data Mahasiswa dengan cara klik kanan jMenuItem1 Edit Text
Pemrograman Lanjut | 5/18/2011
17. Untuk jMenuItem2 ubah textnya menjadi Data Karyawan, jMenuItem2 ubah textnya menjadi Data Buku
14
Pemrograman Lanjut| 5/18/2011
15
18. Ubah variabel name dari jMenuItem1 menjadi mnuDataMahasiswa dengan cara klik kanan jMenuItem1 Change Variabel Name
19. Ubah juga variabel name jMenuItem2 menjadi mnuDataKaryawan dan jMenuItem3 menjadi mnuDataBuku
Pemrograman Lanjut | 5/18/2011
20. Tambahkan 2 buah jMenuItem pada mnuLaporan, yaitu jMenuItem1 dan jMenuItem2
15
Pemrograman Lanjut| 5/18/2011
16
21. Ubah text menjadi Peminjaman dan Pengembalian
22. Ubah variabel name menjadi seperti berikut
Mendesain Form Data Mahasiswa
Pemrograman Lanjut | 5/18/2011
1. Tambahkan 1 buah JFrame didalam paket view, beri nama FrmDataMahasiswa
16
Pemrograman Lanjut| 5/18/2011
17
2. Klik kanan pada FrmDataMahasiswa, kemudian pilih menu LayoutBorderLayout
Pemrograman Lanjut | 5/18/2011
3. Tambahkan 1 buah panel di Posisi atas
17
Pemrograman Lanjut| 5/18/2011
18
4. Tambahkan 1 buah panel di posisi bawah
5. Ubah agar layout dari jPanel1 menjadi FlowLayout
Pemrograman Lanjut | 5/18/2011
6. Ubah juga agar layout dari jPanel2 menjadi FlowLayout, sama seperti langkah 5
18
Pemrograman Lanjut| 5/18/2011
19
7. Tambahkan label dan jtextfield ke jPanel1 seperti gambar berikut ini
Sehingga form seperti berikut
Pemrograman Lanjut | 5/18/2011
Sehingga di inspector tampak seperti gambar berikut
19
Pemrograman Lanjut| 5/18/2011
20
8. Tambahkan 4 buah button di jPanel2 seperti gambar berikut
Pemrograman Lanjut | 5/18/2011
Diinspector tampak seperti berikut
20
Pemrograman Lanjut| 5/18/2011
21
9. Ubah agar FlowLayout di jPanel1 aligmentnya menjadi Left
Pemrograman Lanjut | 5/18/2011
10. Lakukan hal yang sama dengan jPanel2 dengan aligment Right 11. Tambahkan 1 buah JTable di tengah
21
Pemrograman Lanjut| 5/18/2011
22
12. Atur agar seperti gambar berikut
13. Atur agar tombol seperti berikut
14. Atur agar jTextField widthnya menjadi 100,20
Pemrograman Lanjut | 5/18/2011
15. Ubah variabel name dari jTextField1 menjadi txtCari, kemudian button urut dari kiri ke kanan menjadi btnTambah, btnUbah, btnHapus, btnTutup dan tabel menjadi tbMhs sehingga di inspector menjadi seperti berikut
22
Pemrograman Lanjut| 5/18/2011
23
Menghubungkan FrmMain dengan FrmDataMahasiswa 1. Masuk ke editor dari FrmMain dengan menekan tombol Source di desain form FrmMain
2. Tambahkan implements ActionListener 3. Tambahkan import : a. import java.awt.event.ActionEvent; b. import java.awt.event.ActionListener; 4. Tambahkan method actionPerformed public void actionPerformed(ActionEvent e) { throw new UnsupportedOperationException("Not supported yet."); } 5. Sesudah pemanggilan method iniComponents() tambahkan kode program berikut mnuDataMahasiswa.addActionListener(this); sehingga kode program di Constructor menjadi seperti berikut public FrmMain() { initComponents(); mnuDataMahasiswa.addActionListener(this); }
public void actionPerformed(ActionEvent e) { if(e.getSource().equals(mnuDataMahasiswa)){ if(frmDataMahasiswa==null) frmDataMahasiswa=new FrmDataMahasiswa(); frmDataMahasiswa.setVisible(true); } }
Pemrograman Lanjut | 5/18/2011
6. Deklarasikan objek frmDataMahasiswa dengan tipe FrmDataMahasiswa seperti kode program berikut private FrmDataMahasiswa frmDataMahasiswa; 7. Lengkapi method actionPerformed seperti kode program dibawah ini
23
Pemrograman Lanjut| 5/18/2011
24
8. Sehingga kode program FrmDataMahasiswa seperti berikut package sistemperpustakaan.view; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class FrmMain extends javax.swing.JFrame implements ActionListener{ private FrmDataMahasiswa frmDataMahasiswa; public FrmMain() { initComponents(); mnuDataMahasiswa.addActionListener(this); } public void actionPerformed(ActionEvent e) { if(e.getSource().equals(mnuDataMahasiswa)){ if(frmDataMahasiswa==null) frmDataMahasiswa=new FrmDataMahasiswa(); frmDataMahasiswa.setVisible(true); } } }
Mengatur Main kelas 1. Silahkan buka kelas Main.java 2. Pada method main, tambahkan kode program yang ditebali package sistemperpustakaan;
public class Main { public static void main(String[] args) { FrmMain frmMain=new FrmMain(); frmMain.setVisible(true); } }
Pemrograman Lanjut | 5/18/2011
import sistemperpustakaan.view.FrmMain;
24
Pemrograman Lanjut| 5/18/2011
25
Membuat Entity
Pemrograman Lanjut | 5/18/2011
Class Diagram Entity Perpustakaan
25
Pemrograman Lanjut| 5/18/2011
26
Kode Program Kelas Anggota package sistemperpustakaan.entity; import java.util.Date; public class Anggota { private int id; private String nama; private String tmpLahir; private Date tglLahir; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getNama() { return nama; } public void setNama(String nama) { this.nama = nama; } public String getTmpLahir() { return tmpLahir; } public void setTmpLahir(String tmpLahir) { this.tmpLahir = tmpLahir; } public Date getTglLahir() { return tglLahir; } public void setTglLahir(Date tglLahir) { this.tglLahir = tglLahir; } }
Pemrograman Lanjut | 5/18/2011
26
Pemrograman Lanjut| 5/18/2011
27
Kelas Mahasiswa package sistemperpustakaan.entity; public class Mahasiswa extends Anggota { private String nim; private int tahunMasuk; public String getNim() { return nim; } public void setNim(String nim) { this.nim = nim; } public int getTahunMasuk() { return tahunMasuk; } public void setTahunMasuk(int tahunMasuk) { this.tahunMasuk = tahunMasuk; } } Kelas PetugasPerpus package sistemperpustakaan.entity; public class PetugasPerpus extends Karyawan { private String user; private String pwd; public String getUser() { return user; } public void setUser(String user) { this.user = user; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } }
Pemrograman Lanjut | 5/18/2011
27
Pemrograman Lanjut| 5/18/2011
Kelas Koleksi package sistemperpustakaan.entity; public class Koleksi { private int id; private String judul; private boolean cd; private boolean referensi; private ItemKoleksi[] itemKoleksi; public ItemKoleksi[] getItemKoleksi() { return itemKoleksi; } public void setItemKoleksi(ItemKoleksi[] itemKoleksi) { this.itemKoleksi = itemKoleksi; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getJudul() { return judul; } public void setJudul(String judul) { this.judul = judul; } public boolean isCd() { return cd; } public void setCd(boolean cd) { this.cd = cd; } public boolean isReferensi() { return referensi; } public void setReferensi(boolean referensi) { this.referensi = referensi; } }
Pemrograman Lanjut | 5/18/2011
28
28
Pemrograman Lanjut| 5/18/2011
Kelas ItemKoleksi package sistemperpustakaan.entity; public class ItemKoleksi { private String kode; private Koleksi koleksi; public Koleksi getKoleksi() { return koleksi; } public void setKoleksi(Koleksi koleksi) { this.koleksi = koleksi; } public String getKode() { return kode; } public void setKode(String kode) { this.kode = kode; } }
Pemrograman Lanjut | 5/18/2011
29
29
Pemrograman Lanjut| 5/18/2011
Kelas Transaksi package sistemperpustakaan.entity; import java.util.Date; public class Transaksi { private int idTransaksi; private Date tanggal; private PetugasPerpus petugasPerpus; private Anggota anggota; private ItemKoleksi[] itemKoleksi; public int getIdTransaksi() { return idTransaksi; } public void setIdTransaksi(int idTransaksi) { this.idTransaksi = idTransaksi; } public Date getTanggal() { return tanggal; } public void setTanggal(Date tanggal) { this.tanggal = tanggal; } public PetugasPerpus getPetugasPerpus() { return petugasPerpus; } public void setPetugasPerpus(PetugasPerpus petugasPerpus) { this.petugasPerpus = petugasPerpus; } public Anggota getAnggota() { return anggota; } public void setAnggota(Anggota anggota) { this.anggota = anggota; } public ItemKoleksi[] getItemKoleksi() { return itemKoleksi; } public void setItemKoleksi(ItemKoleksi[] itemKoleksi) { this.itemKoleksi = itemKoleksi; } }
Pemrograman Lanjut | 5/18/2011
30
30
Pemrograman Lanjut| 5/18/2011
31
Kelas TransaksiPeminjaman package sistemperpustakaan.entity; public class TransaksiPeminjaman extends Transaksi{ @Override public void setItemKoleksi(ItemKoleksi[] itemKoleksi) { // TODO Auto-generated method stub super.setItemKoleksi(itemKoleksi); } }
Kelas TransaksiPengembalian package sistemperpustakaan.entity; public class TransaksiPengembalian extends Transaksi{ private Denda denda; @Override public void setItemKoleksi(ItemKoleksi[] itemKoleksi) { // TODO Auto-generated method stub super.setItemKoleksi(itemKoleksi); } public Denda getDenda() { return denda; } public void setDenda(Denda denda) { this.denda = denda; } } Kelas Karyawan package sistemperpustakaan.entity; public class Karyawan extends Anggota { private String nik; public String getNik() { return nik; } public void setNik(String nik) { this.nik = nik; } }
Pemrograman Lanjut | 5/18/2011
31
Pemrograman Lanjut| 5/18/2011
Kelas Denda package sistemperpustakaan.entity; public class Denda { private int idDenda; private double nominalDenda; private int lamaTerlambat; public int getIdDenda() { return idDenda; } public void setIdDenda(int idDenda) { this.idDenda = idDenda; } public double getNominalDenda() { return nominalDenda; } public void setNominalDenda(double nominalDenda) { this.nominalDenda = nominalDenda; } public int getLamaTerlambat() { return lamaTerlambat; } public void setLamaTerlambat(int lamaTerlambat) { this.lamaTerlambat = lamaTerlambat; } }
Pemrograman Lanjut | 5/18/2011
32
32
Pemrograman Lanjut| 5/18/2011
Kelas Buku package sistemperpustakaan.entity; public class Buku extends Koleksi { private String isbn; private String penerbit; private String pengarang; public String getIsbn() { return isbn; } public void setIsbn(String isbn) { this.isbn = isbn; } public String getPenerbit() { return penerbit; } public void setPenerbit(String penerbit) { this.penerbit = penerbit; } public String getPengarang() { return pengarang; } public void setPengarang(String pengarang) { this.pengarang = pengarang; } }
Pemrograman Lanjut | 5/18/2011
33
33
Pemrograman Lanjut| 5/18/2011
ItemTransaksi package sistemperpustakaan.entity; public class ItemTransaksi { private ItemKoleksi itemKoleksi; private Transaksi transaksi; public ItemKoleksi getItemKoleksi() { return itemKoleksi; } public void setItemKoleksi(ItemKoleksi itemKoleksi) { this.itemKoleksi = itemKoleksi; } public Transaksi getTransaksi() { return transaksi; } public void setTransaksi(Transaksi transaksi) { this.transaksi = transaksi; } }
Pemrograman Lanjut | 5/18/2011
34
34
Pemrograman Lanjut| 5/18/2011
35
Membuat DAO
Pemrograman Lanjut | 5/18/2011
Diagram Database
35
Pemrograman Lanjut| 5/18/2011
36
Pemrograman Lanjut | 5/18/2011
Class Diagram DAO Perpustakaan
36
Pemrograman Lanjut| 5/18/2011
37
Kode Program
Kelas Database
Pemrograman Lanjut | 5/18/2011
package sistemperpustakaan.helper; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class Database { private Connection con; private PreparedStatement prep; private ResultSet rs; public boolean connect() { try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost:3306/perpustakaan", "root", ""); } catch (SQLException ex) { System.out.println("Error 1 : " + ex.getMessage()); return false; } catch (ClassNotFoundException ex) { System.out.println("Error 2 : " + ex.getMessage()); return false; } return true; } public Database(){ connect(); } public ResultSet getRs() { return rs; }
37
public boolean dml(String query, boolean getRow, Object... objects) { try { prep = con.prepareStatement(query); int i = 1; for (Object obj : objects) { prep.setObject(i, obj); i++; } if (getRow) { rs = prep.executeQuery(); } else { prep.executeUpdate(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); return false; } return true; } public int getGeneratedKeys() { int keys=0; try{ if(dml("SELECT LAST_INSERT_ID();",true)){ rs.next(); keys=rs.getInt("LAST_INSERT_ID()"); rs.close(); return keys; } return -1; }catch(SQLException e){ return -1; } } }
38
Pemrograman Lanjut | 5/18/2011
Pemrograman Lanjut| 5/18/2011
38
Pemrograman Lanjut| 5/18/2011
Kelas AbstractDao package sistemperpustakaan.dao; import java.sql.ResultSet; import helper.Database; public abstract class AbstractDao
{ protected Database database; protected String ss=""; protected ResultSet rs; public AbstractDao(){ database=new Database(); } public abstract boolean insert(T obj); public abstract boolean update(T obj); public abstract boolean delete(T obj); public abstract T[] findAll(); public abstract T findById(int id); }
Pemrograman Lanjut | 5/18/2011
39
39
Pemrograman Lanjut| 5/18/2011
40
Kelas DaoMahasiswa
package sistemperpustakaan.dao; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import entity.Mahasiswa; public class DaoMahasiswa extends AbstractDao<Mahasiswa> { @Override public boolean delete(Mahasiswa obj) { obj.setId(findId(obj.getNim())); ss="delete mahasiswa where idanggota=?"; if(!database.dml(ss, false, obj.getId())){ return false; } ss="delete anggota where idanggota=?"; if(!database.dml(ss, false, obj.getId())){ return false; } return true; } @Override public Mahasiswa findById(int id) { return null; }
obj.setId(database.getGeneratedKeys()); ss="insert into mahasiswa(idanggota,nim,tahunMasuk)values(?,?,?)"; if(!database.dml(ss, false, obj.getId(),obj.getNim(),obj.getTahunMasuk())){ return false; } return true; }
Pemrograman Lanjut | 5/18/2011
@Override public boolean insert(Mahasiswa obj) { ss="insert into anggota(nama,tmplahir,tgllahir)values(?,?,?);"; if(!database.dml(ss, false, obj.getNama(),obj.getTmpLahir(),obj.getTglLahir())){ return false; }
40
@Override public Mahasiswa[] findAll() { ss="select a.idAnggota,nim,nama,tmplahir,tgllahir,tahunmasuk "; ss+="from mahasiswa m "; ss+="inner join anggota a on m.idanggota=a.idanggota"; if(database.dml(ss, true)){ rs=database.getRs(); List<Mahasiswa> lstMahasiswa=new ArrayList<Mahasiswa>(); try { while(rs.next()){ Mahasiswa mahasiswa=new Mahasiswa(); mahasiswa.setId(rs.getInt("idAnggota")); mahasiswa.setNim(rs.getString("nim")); mahasiswa.setNama(rs.getString("nama")); mahasiswa.setTmpLahir(rs.getString("tmplahir")); mahasiswa.setTglLahir(rs.getDate("tgllahir")); mahasiswa.setTahunMasuk(rs.getInt("tahunmasuk")); lstMahasiswa.add(mahasiswa); } rs.close(); return lstMahasiswa.toArray(new Mahasiswa[lstMahasiswa.size()]); } catch (SQLException e) { e.printStackTrace(); return null; } } return null; } @Override public boolean update(Mahasiswa obj) { obj.setId(findId(obj.getNim())); ss="update anggota set nama=?,tmplahir=?,tgllahir=? where idanggota=?"; if(!database.dml(ss, false, obj.getNama(),obj.getTmpLahir(),obj.getTglLahir(),obj.getId())){ return false; } ss="update mahasiswa set tahunmasuk=? where idanggota=?"; if(!database.dml(ss, false, obj.getTahunMasuk(),obj.getId())){ return false; } return true; }
41
Pemrograman Lanjut | 5/18/2011
Pemrograman Lanjut| 5/18/2011
41
Pemrograman Lanjut| 5/18/2011
42
private int findId(String nim){ int result=0; try{ ss="select idAnggota from anggota a "; ss+="inner join mahasiswa m on a.idanggota=m.idanggota "; ss+="where nim=?"; if(database.dml(ss, true, nim)){ rs=database.getRs(); if(rs.next()){ result= rs.getInt("idAnggota"); } rs.close(); } return result; }catch(SQLException ex){ ex.printStackTrace(); return result; } } }
Untuk DAO Selanjutnya slahkan dikembangkan sendiri Kelas DaoPetugasPerpus Kelas DaoPengembalian Kelas DaoPeminjaman Kelas DaoItemKoleksi Kelas DaoPetugasPerpus Kelas DaoKaryawan
Pemrograman Lanjut | 5/18/2011
42
Pemrograman Lanjut| 5/18/2011
43
Menghubungkan DAO dengan View Pada bagian ini akan diberikan contoh bagaimana menghubungkan antara dao dengan view.
Mendesain JTable 1. Silahkan anda buka kelas FrmDataMahasiswa
3. Maka akan muncul Costumized Dialog, silahkan pilih Column
Pemrograman Lanjut | 5/18/2011
2. Klik kanan pada Jtable yang bernama tbMhs, kemudian pilih Table Contents
43
Pemrograman Lanjut| 5/18/2011
44
4. Ubah count yang merupakan jumlah kolom menjadi 6 yaitu untuk menampung kolom no, nim,nama, tmpLahir,tglLahir, tahunMasuk. Kemudian ubah titlenya seperti gambar berikut
6. Kemudian klik tombol close untuk menutup Costumized Dialog dan melihat hasil atau perubahan yang terjadi
Pemrograman Lanjut | 5/18/2011
Jangan lupa ubah agar Selection Model menjadi Single Selection, kemudian hilangkan tanda check pada Allo to reorder columns by drag and drop. 5. Silahkan anda pilih tab Rows, kemudian ubah nilai countnya menjadi 0 agar row diset menjadi kosong.
44
7. Silahkan anda pilih source view untuk melihat source code dari FrmDataMahasiswa 8. Deklarasikan objek dm dengan tipe DaoMahasiswa private DaoMahasiswa dm; 9. Inisialisasi objek dengan sesudah pemanggilan initComponents(); dm=new DaoMahasiswa(); 10. Tambahkan kode program berikut sesudah melakukan inisialisasi objek dm Mahasiswa[] lstMahasiswa = dm.findAll(); DefaultTableModel dtm = (DefaultTableModel) tbMhs.getModel(); int i = 1; for (Mahasiswa m : lstMahasiswa) { dtm.addRow(new Object[]{ i,m.getNim(),m.getNama(), m.getTmpLahir(),m.getTglLahir(),m.getTahunMasuk() }); i++; } 11. Mahasiswa[] lstMahasiswa=dm.findAll(); maksudnya memanggil method findAll dari objek dm dan menampungnya di array lstMahasiswa yang bertipe Mahasiswa. 12. DefaultTableModel dtm=(DefaultTableModel)tbMhs.getModel(); Memanggil method getModel dari objek tbMhs, model disini adalah tabel yang struktur kolomnya sudah kita definisikan lewat menu Table Content. Kemudian hasil pemanggilan method getModel kita konversi dengan perintah Casting ke DefaultTabelModel, dimana hasil casting ini akan kita simpan di objek dtm yang bertipe DefaultTabelModel. DefaultTabelModel Adalah sebuah kelas yang merupakan kelas default untuk melakukan pengisian JTable. 13. int i = 1; Digunakan untuk deklarasi variabel i yang nantinya akan digunakan untuk membuat nomor. 14. for ( Mahasiswa m : lstMahasiswa) Adalah cara untuk melakukan perulangan yang serupa dengan for(int i) atau while atau do while. Cara ini dipilih dikarenakan cara ini dianggap lebih sederhana untuk diimplementasikan dimana m adalah objek dengan tipe Mahasiswa yang akan menampung item dari lstMahasiswa setiap 1 kali perulangan. 15. dtm.addRow Digunakan untuk menambahkan baris ke Jtable melalui DefaultTabelModel. Method ini meminta masukan berupa Vector atau array Object (Object[]) 16. New Object[]{} Digunakan untuk menginisialisasi array objek yang nantinya akan diisi data 17. i,m.getNim(),m.getNama(), m.getTmpLahir(),m.getTglLahir(),m.getTahunMasuk() maksudnya adalah mengisi array objek yaitu sebagai berikut i, nim, nama, tempat lahir, tanggal lahir, tahun masuk.
45
Pemrograman Lanjut | 5/18/2011
Pemrograman Lanjut| 5/18/2011
45
Pemrograman Lanjut| 5/18/2011
46
18. i++ Digunakan untuk increment nilai i agar bertambah 1 tiap 1 kali perulangan
Menambahkan JDBC Driver Didalam java untuk terkoneksi dengan database menggunakan library yang yang disebut JDBC Driver. Setiap database memiliki jdbc driver sendiri – sendiri sehingga JDBC driver untuk Microsoft SQL Server hanya dapat digunakan oleh Microsoft SQL Server, tidak dapat digunakan oleh MySQL dan sebaliknya. 1. Silahkan klik kanan pada Libraries kemudian pilih Add JAR/Folder
Kemudian klik Open 3. Pastikan pada Project anda tampak seperti berikut
Pemrograman Lanjut | 5/18/2011
2. Silahkan anda cari driver mysql yang sudah anda miliki, contohnya
46
Pemrograman Lanjut| 5/18/2011
47
Mendatarkan MySQL ke Netbeans Disini kita akan meregister MySQL kedalam Netbeans agar memudahkan kita untuk mengelola database mysql. 1. Pilih tab Service di netbeans
2. Pada Databases klik kanan kemudian pilih menu Register MySQL Server
Localhost berarti mewakili ip 127.0.0.1, 3306 (SQL Server 1433) adalah port yang digunakan oleh mysql, root (SQLServer sa) adalah user tertinggi di mysql, password defaultnya kosong. Beri tance check pada Save Password kemudian klik OK
Pemrograman Lanjut | 5/18/2011
3. Maka muncul MySQL Server Properties
47
Pemrograman Lanjut| 5/18/2011
48
4. Klik kanan pada MySQL kemudian pilih Create Database
5. Maka muncul window Create MySQL Database, pada New Database Name ketik Perpustakaan, kemudian Grant Full Access to root@localhost lalu OK
Pemrograman Lanjut | 5/18/2011
6. Maka tampilan anda akan seperti berikut
48
Pemrograman Lanjut| 5/18/2011
49
7. Klik kanan kemudian pilih Execute Command
8. Silahkan jalankan Script SQL anda di SQL Command 1
Pemrograman Lanjut | 5/18/2011
9. Maka pada Services, database perpustakaan anda akan tampak seperti berikut
49
Pemrograman Lanjut| 5/18/2011
50
10. Jalankan perintah SQL berikut di SQL Command insert into anggota(nama,`tmpLahir`,`tglLahir`) values ('Kamarudin','Riau','1980/05/15'); insert into mahasiswa(`idAnggota`,nim,`tahunMasuk`) values ('1','04.11.1785','2004')
Membuat Form Input Mahasiswa Pada bagian ini kita akan memulai untuk membuat form input mahasiswa, dimana form input ini akan berguna ketika kita hendak menambah data mahasiswa dan mengubah data mahasiswa. 1. Tambahkan 1 buah JDialogForm, jika tidak ketemu pilih other kemudian Swing Gui Forms, maka akan muncul JDialogForm. Beri nama DialogInputMahasiswa
Pemrograman Lanjut | 5/18/2011
2. Atur agar layoutnya menjadi BorderLayout
50
Pemrograman Lanjut| 5/18/2011
51
3. Tambahkan 1 buah JPanel dengan posisi South
4. Atur agar layout dari jpanel menjadi FlowLayout, di inspector tampak seperti gambar berikut
Pemrograman Lanjut | 5/18/2011
Atur agar alignment dari FlowLayout di jPanel1 menjadi Right 5. Tambahkan 2 buah button di jPanel1
51
Pemrograman Lanjut| 5/18/2011
52
6. Ubah nama dari JButton 1 menjadi btnSimpan dan JButton2 menjadi btnTutup
7. Ubah text dari btnSimpan menjadi Simpan dan btnTutup menjadi Tutup
Pemrograman Lanjut | 5/18/2011
8. Tambahkan 1 buah JPanel di posisi Center
52
Pemrograman Lanjut| 5/18/2011
53
9. Atur agar layout dari JPanel2 menjadi GridBagLayout
10. Tambahkan 6 buah JLabel di jPanel2, biarkan posisi apa adanya, kita atur belakangan
Pemrograman Lanjut | 5/18/2011
11. Klik kanan kemudian pilih costumize pada tulisan GridBagLayout di inspector
53
Pemrograman Lanjut| 5/18/2011
54
12. Maka akan muncul gambar seperti berikut
Kemudian Close
Pemrograman Lanjut | 5/18/2011
13. Tarik jLabel2 agar dibawah jLabel1, jLabel3 dibawah jLabel 2 dan seterusnya
54
Pemrograman Lanjut| 5/18/2011
55
14. Tambahkan 3 buah JtextField, sehingga seperti gambar berikut
Pemrograman Lanjut | 5/18/2011
15. Kemudian masuk kembali ke GridBagLayoutCostumizer
55
Pemrograman Lanjut| 5/18/2011
56
16. Atur agar seperti gambar berikut
Pemrograman Lanjut | 5/18/2011
Lalu Close 17. Tambahkan 3 JFormattedTextField
56
Pemrograman Lanjut| 5/18/2011
57
18. Atur agar posisinya seperti gambar dibawah ini melalui GridBagLayout Costumizer
19. Sesuaikan DialogInputMahasiswa anda agar seperti gambar dibawah ini
Pemrograman Lanjut | 5/18/2011
20. Kosongkan semua text yang ada di jTextField1 sampai jTextField3 dan jFormattedTextField1 sampai jFormattedTextField3
57
Pemrograman Lanjut| 5/18/2011
58
21. Pilih Jlabel1 sampai jLabel 6, kemudian cari Properties Anchor, ubah menjadi West
Hasilnya yaitu
Pemrograman Lanjut | 5/18/2011
22. Pilih jTextField1 sampai jTextField3 dan jFormattedTextField1 sampai jFormattedTextField3, kemudian cari Properties Anchor, ubah menjadi west 23. Secara bergantian atur melalui properties agar preferred Size dari jTextField1 sampai jTextField3 dan jFormattedTextField1 sampai jFormattedTextField3 menjadi [150, 20] 24. Ubah variabel name dengan cara klik kanan jTextField1, pilih Change Variabel Name
58
Pemrograman Lanjut| 5/18/2011
Variabel name yang baru txtID txtNama txtTempatLahir txtTanggalLahir txtNIM txtTahunMasuk
Pemrograman Lanjut | 5/18/2011
25. Ubah Variabel Name seperti tabel berikut Variabel Name yang sebelumnya jTextField1 jTextField2 jTextField3 jFormattedTextField1 jFormattedTextField2 jFormattedTextField3 Di inspector tampak seperti gambar berikut
59
59
Pemrograman Lanjut| 5/18/2011
60
26. Tambahkan 1 buah Java interface
27. Beri nama DialogInputListener 28. Hasilnya kode program seperti dibawah ini package sistemperpustakaan.view; public interface DialogInputListener { } 29. Tambahkan 1 buah abstract method dengan nama refresh, sehingga kode program anda seperti dibawah ini package sistemperpustakaan.view; public interface DialogInputListener { void refresh();
30. Implements method DialogInputListener di kelas FrmDataMahasiswa sehingga tampak seperti gambar berikut (tambahkan yang dicetak tebal)
Pemrograman Lanjut | 5/18/2011
}
60
Pemrograman Lanjut| 5/18/2011
61
public class FrmDataMahasiswa extends javax.swing.JFrame implements DialogInputListener{ public void refresh() { throw new UnsupportedOperationException("Not supported yet."); } ……..(kode program selanjutnya) 31. Ubah agar method refresh seperti kode program dibawah ini (tambahkan yang dicetak tebal) public void refresh() { Mahasiswa[] lstMahasiswa = dm.findAll(); DefaultTableModel dtm = (DefaultTableModel) tbMhs.getModel(); dtm.setRowCount(0); int i = 1; for (Mahasiswa m : lstMahasiswa) { dtm.addRow(new Object[]{ i,m.getNim(),m.getNama(), m.getTmpLahir(),m.getTglLahir(),m.getTahunMasuk() }); i++; } }
Menambahkan event di Form Input Dialog Mahasiswa
private void btnTutupActionPerformed(java.awt.event.ActionEvent evt) { setVisible(false); } Event ini nantinya akan membuat FrmInputDialog Mahasiswa menghilang 4. Hapus method main di FrmInputDialogMahasiswa
Pemrograman Lanjut | 5/18/2011
1. Pada DialogInputMahasiswa deklarasikan objek listener dengan tipe DialogInputListener private DialogInputListener listener; 2. Pada DialogInptMahasiswa deklarasikan objek mahasiswa dengan tipe Mahasiswa private Mahasiswa mahasiswa; 3. Tambahkan event pada btnTutup
61
Pemrograman Lanjut| 5/18/2011
62
5. Buat 1 buah Setter untuk objek mahasiswa dan listener public void setListener(DialogInputListener listener) { this.listener = listener; } public void setMahasiswa(Mahasiswa mahasiswa) { this.mahasiswa = mahasiswa; } 6. Deklarasikan 1 buah objek daoMahasiswa dengan tipe DaoMahasiswa private DaoMahasiswa daoMahasiswa; 7. Ubah agar konstruktor DialogInputMahasiswa seperti kode program berikut public DialogInputMahasiswa(java.awt.Frame parent, DaoMahasiswa daoMahasiswa) { super(parent, true); initComponents(); this.daoMahasiswa = daoMahasiswa; } 8. Ubah agar method set mahasiswa anda seperti kode program berikut public void setMahasiswa(Mahasiswa mahasiswa) { this.mahasiswa = mahasiswa; txtID.setText(String.valueOf(mahasiswa.getId())); txtNIM.setText(mahasiswa.getNim()); txtNama.setText(mahasiswa.getNama()); txtTahunMasuk.setText(String.valueOf(mahasiswa.getTahunMasuk())); DateFormat df=new SimpleDateFormat("dd/MM/yyyy"); txtTanggalLahir.setText(df.format(mahasiswa.getTglLahir())); txtTempatLahir.setText(mahasiswa.getTmpLahir()); }
if (mahasiswa == null) { mahasiswa = new Mahasiswa(); }
11. Beri nilai untuk nama, nim dan tahun masuk mahasiswa.setNama(txtNama.getText()); mahasiswa.setNim(txtNIM.getText()); mahasiswa.setTahunMasuk(Integer.parseInt(txtTahunMasuk.getText())); mahasiswa.setTmpLahir(txtTempatLahir.getText());
Pemrograman Lanjut | 5/18/2011
9. Tambahkan action performed untuk btnSimpan. 10. Didalam method btnSimpanActionPerformed, cek, apakah objek mahasiswa masih null atau tidak, jika null maka inisialisasi
62
Pemrograman Lanjut| 5/18/2011
63
12. Lakukan pemformatan tanggal lahir DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); try { mahasiswa.setTglLahir(df.parse(txtTanggalLahir.getText())); } catch (ParseException ex) { Logger.getLogger(DialogInputMahasiswa.class.getName()).log(Level.SEVERE, null, ex); }
13. Lakukan pengecekan bila txtID masih kosong maka prosesnya adalah insert, sedangkan bila txtID sudah ada isinya maka prosesnya adalah update. Bila proses update maka bila sukses sembunyikan form dialog input mahasiswa. Munculkan pesan bila gagal. if (txtID.getText().isEmpty()) { if (daoMahasiswa.insert(mahasiswa)) { listener.refresh(); mahasiswa=null; return; } } else { if (daoMahasiswa.update(mahasiswa)) { listener.refresh(); mahasiswa=null; setVisible(false); return; } } JOptionPane.showMessageDialog(this, "Proses gagal");
Menghubungkan Form Data Mahasiswa dan Dialog Input Mahasiswa 1. Tambahkan event untuk btnTambah di FrmDataMahasiswa
2. Ubah modifier dari method findId di kelas DaoMahasiswa dari private menjadi public
Pemrograman Lanjut | 5/18/2011
private void btnTambahActionPerformed(java.awt.event.ActionEvent evt) { DialogInputMahasiswa inputMahasiswa=new DialogInputMahasiswa(this, dm); inputMahasiswa.setListener(this); inputMahasiswa.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); inputMahasiswa.setVisible(true); }
63
Pemrograman Lanjut| 5/18/2011
64
3. Tambahkan event untuk btnUbah di FrmDataMahasiswa private void btnUbahActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: int selectedRow = tbMhs.getSelectedRow(); String nim = tbMhs.getValueAt(selectedRow, 1).toString(); int id = dm.findId(nim); Mahasiswa mahasiswa = new Mahasiswa(); mahasiswa.setId(id); mahasiswa.setNim(nim); mahasiswa.setNama(tbMhs.getValueAt(selectedRow, 2).toString()); mahasiswa.setTmpLahir(tbMhs.getValueAt(selectedRow, 3).toString()); DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); try { mahasiswa.setTglLahir(df.parse( tbMhs.getValueAt(selectedRow, 4).toString())); } catch (ParseException ex) { Logger.getLogger( FrmDataMahasiswa.class.getName()).log( Level.SEVERE, null, ex); } mahasiswa.setTahunMasuk(Integer.parseInt( tbMhs.getValueAt(selectedRow, 5).toString())); DialogInputMahasiswa inputMahasiswa = new DialogInputMahasiswa(this, dm); inputMahasiswa.setMahasiswa(mahasiswa); inputMahasiswa.setListener(this); inputMahasiswa.setVisible(true); }
4. Silahkan anda coba untuk menjalankan aplikasi anda.
Mendesain Report
Pemrograman Lanjut | 5/18/2011
1. Pastikan sudah terinstall plugin ireport di netbeans anda, melalui menu tools plugin Installed, kemudian cari ireport designer
64
Pemrograman Lanjut| 5/18/2011
65
2. Buatlah tambahan 1 buah paket dengan nama report
Maka kurang lebih seperti berikut
Pemrograman Lanjut | 5/18/2011
3. Tambahkan 1 buah empty report, dengan cara klik kanan pada paket sistemperpustakaan.report kemudian pilih other. Pada categories pilih Report, pada File Types pilih Empty Report, beri nama RptMahasiswa.
65
Pemrograman Lanjut| 5/18/2011
66
4. Maka anda akan mendapatkan tampilan seperti berikut
Dan tampilan seperti berikut
Pemrograman Lanjut | 5/18/2011
5. Tambahkan 1 buah Static Text di Title
66
Pemrograman Lanjut| 5/18/2011
67
6. Silahkan anda atur agar ukuran font dan aligmentnya seperti digambar
Pemrograman Lanjut | 5/18/2011
7. Ubah melalui properties text agar tulisan Static text berubah menjadi ”Laporan Daftar Anggota”
67
Pemrograman Lanjut| 5/18/2011
68
8. Buka report inspector kemudian pada Fields tambahkan Field 4 buah field yaitu id, nama, tmlLahir, tglLahir
Sehingga tampak seperti gambar berikut
Pemrograman Lanjut | 5/18/2011
Untuk id FieldClassnya diubah melalui properties menjadi java.lang.Integer Untuk tglLahir FieldClassnya diubah melalui properties menjadi java.util.Date 9. Tambahkan 4 field tersebut ke bagian Detail 1, sehingga pada bagian Column Header akan tertambah secara otomatis nama field yang anda tambahkan
68
Pemrograman Lanjut| 5/18/2011
69
10. Rapikan agar seperti gambar berikut
Pemrograman Lanjut | 5/18/2011
11. Coba pilih pada label yang bertuliskan id, kemudian klik kanan pilih Padding and Borders
69
Pemrograman Lanjut| 5/18/2011
70
12. Pada window berikut, atur agar Line width menjadi 1
Sehingga seperti berikut
Pemrograman Lanjut | 5/18/2011
kemudian OK
70
Pemrograman Lanjut| 5/18/2011
71
13. Lakukan pada semua komponen di report anda kecuali pada Header, sehingga tampak seperti berikut
14. Melalui report inspector, atur agar Page Header, Column Footer, Page Footer dan Summary Band Heightnya menjadi 0 atau dengan cara klik kanan delete band, sehingga tampak seperti gambar berikut
Pemrograman Lanjut | 5/18/2011
Pada Report Inspector tampak seperti
71
Pemrograman Lanjut| 5/18/2011
72
15. Silahkan anda compile report anda
Cari icon 16. Pastikan anda mendapat pesan sebagai berikut
17. Pada Libraries di Project Sistem Perpustakaan anda coba klik kanan, kemudian pilih Add Libraries
Pemrograman Lanjut | 5/18/2011
18. Pada window berikut klik tombol Import
72
Pemrograman Lanjut| 5/18/2011
73
19. Coba cari Jasper Report 3.0.1, kemudian klik Import Library
22. Pastikan anda bisa menemukan libraries yang mengandung bertuliskan jasperreports-4.0.2.jar
Pemrograman Lanjut | 5/18/2011
20. Kemudian pilih Add Library 21. Pastikan pada Libraries anda seperti berikut
73
Pemrograman Lanjut| 5/18/2011
74
23. Bila tidak ketemu, maka tambahkan dulu melalui Add Jar/Folder, pilih library Jasper Report anda lalu pilih Copy to Libraries Folder Open
24. Tambahkan 1 buah paket dibawah paket sistemperpustakaan.view, beri nama report
Pemrograman Lanjut | 5/18/2011
Sehingga susunan paket anda seperti berikut
74
Pemrograman Lanjut| 5/18/2011
75
25. Tambahkan 1 buah Jframe pada paket sistemperpustakaan.view.report 26. Atur agar desainya sebagai berikut
Pada Inspector tampak seperti gambar berikut
Pemrograman Lanjut | 5/18/2011
27. Pada btnTutup tambahkan panggil method Dispose(); untuk menutup Form 28. Deklaraskan objek dm dengan tipe DaoMahasiswa 29. Sesudah pemanggilan InitComponents di konstruktor, lakukan inisialisasi objek dm
75
Pemrograman Lanjut| 5/18/2011
76
30. Pada btnRefresh tambahkan kode program berikut private void btnRefreshActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Mahasiswa[] arrMahasiswa = dm.findAll(); ArrayList<Mahasiswa> al = new ArrayList<Mahasiswa>(); for (Mahasiswa mahasiswa : arrMahasiswa) { al.add(mahasiswa); } JRDataSource ds = new JRBeanCollectionDataSource(al); try { JasperPrint jasperPrint = JasperFillManager.fillReport( getClass().getResourceAsStream( "/sistemperpustakaan/report/RptMahasiswa.jasper"), new HashMap<String, String>(), ds); JRViewer viewer = new JRViewer(jasperPrint); viewer.setFitWidthZoomRatio(); pnCenter.removeAll(); pnCenter.add(viewer); pnCenter.validate(); } catch (JRException ex) { ex.printStackTrace(); } }
31. Pada FrmMain, tambahkan 1 menu item pada menu Laporan
private void mnuDaftarAnggotaActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: FrmLaporanDataMahasiswa laporanDataMahasiswa= new FrmLaporanDataMahasiswa(); laporanDataMahasiswa.setSize(new Dimension(558, 297)); laporanDataMahasiswa.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); laporanDataMahasiswa.setVisible(true); }
Pemrograman Lanjut | 5/18/2011
32. Tambahkan event untuk memunculkan pada menu Daftar Anggota
76
Pemrograman Lanjut| 5/18/2011
77
33. Jangan lupa tambahkan commons-beanutils-1.8.0.jar pada libraries anda 34. Klik tombol ini agar file jasper anda ikut tercopy, ingat setiap kali anda mengubah susunan laporan, pastikan anda compile kemudian klik tombol ini
35. Pada output tampak seperti berikut
36. Coba anda kunjingi seperti yang dicetak tebal lewat explorer
Pemrograman Lanjut | 5/18/2011
37. Coba double klik SistemPerpustakaan.jar, seharusnya berjalan, bila tidak jalan coba anda cek lagi
77