Modul 4 Implementasi DAO + MVC
1. Pastikan project anda sebelum mid semester masih ada 2. Tambahkan 1 buah JFrame dengan nama FormDataMahasiswa sebagai view pada project anda yang sudah ada
3. Atur agar Layout dari FormDataMahasiswa menjadi BorderLayout
4. Tambahkan 2 buah Jpanel 5. Atur agar Layout dari jPanel1 menjadi FlowLayout, dan layout dari jPanel2 menjadi BorderLayout
6. Klik kanan pada jPanel1 Properties Ubah direction menjadi South Close 7. Klik kanan pada jPanel2 Properties Ubah direction menjadi Center Close 8. Tambahkan 1 buah Jtable ke jPanel2
9. Maka diinspector akan tampak seperti berikut
10. Diform tampak menjadi seperti berikut
11. Klik kanan pada FlowLayout Properties kemudian atur agar Alignment nya menjadi Right Close
12. Tambahkan 4 buah Button ke dalam jPanel1
13. Ubah properties dari button dan tabel sesuai tabel berikut
Komponen
Variabel name lama
Variabel name baru
JTabel JButton JButton JButton JButton
jTabel1 jButton1 jButton2 jButton3 jButton4
tbMahasiswa btnTambah btnUbah btnHapus btnTutup
14. Sehingga diinspector tampak seperti gambar berikut
Text
Tambah Ubah Hapus Tutup
Di tampilan seperti gambar berikut
15. Klik kanan pada tbMahasiswa, kemudian pilih Tabel Contents ...
Kemudian pilih Columns
16. Ubah count menjadi 5, kemudian atur agar value dari Title dan Type sama dengan gambar dibawah ini, apabila sudah sama klik Close
17. Tambahkan kode program yang dicetak tebal private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable tbMahasiswa; // End of variables declaration public JTable getTbMahasiswa() { return tbMahasiswa; } }
18. Tambahkan 1 buah JDialog bernama FormDetailMahasiswa sebagai View
19. Pilih Swing GUI Forms pada Categories, kemudian pilih JDialog Form pada File Types
Next beri nama FormDetailMahasiswa Finish 20. Buka kembali FormMhs anda yang tampilannya seperti berikut
Silahkan anda buat agar FormDetailMahasiswa anda memiliki desain yang sama persis dengan FormMhs (Modul 2 nomor 8 sampai 22) Sehingga FormDetailMahasiswa anda tampak seperi gambar berikut
21. Tambahkan 1 buah Jbutton di jPanel4 dari FormDetailMahasiswa
Tampak form seperti berikut
22. Ubah variabel name btnUbah menjadi btnSimpan, ubah textnya menjadi Simpan, ubah variabel name dari jButton1 menjadi btnBatal, ubah textnya menjadi Batal
Untuk formnya tampak seperti gambar berikut
23. Sekarang silahkan anda buka kelas MahasiswaImpl.java, kemudian cari method dengan nama insertMahasiswa, ketik kode program yang ditebali public int insertMahasiswa(Mhs mhs) { try { String sql = "insert into mahasiswa(nim,nama,kelas,jurusan,jenis_kelamin) values("; sql += "'" + mhs.getNim() + "','" + mhs.getNama() + "', "; sql += "'" + mhs.getKelas() + "','" + mhs.getJurusan() + "',"; if (mhs.getJenisKelamin()) { sql += "1";//bernilai true } else { sql += "0";//bernilai false } sql += ")"; return c.createStatement().executeUpdate(sql); } catch (SQLException ex) { Logger.getLogger(MahasiswaImpl.class.getName()).log(Level.SEVERE, null, ex); return -1; } }
24. Cari method dengan nama DeleteMahasiswa, ketik kode program yang ditebali public boolean deleteMahasiswa(Mhs mhs) { try { String sql = "delete from mahasiswa where nim='" + mhs.getNim() + "'"; c.createStatement().executeUpdate(sql); return true; } catch (SQLException ex) { Logger.getLogger(MahasiswaImpl.class.getName()).log(Level.SEVERE, null, ex); return false; } }
25. Silahkan anda buka kode program dari FormDetailMahasiswa, tambahkan method berikut public void setInsert(boolean insert) { txtNim.setEnabled(insert); } public JRadioButton getRbLakiLaki() { return rbLakiLaki; } public JTextField getTxtJurusan() { return txtJurusan; } public JTextField getTxtKelas() { return txtKelas; } public JTextField getTxtNama() { return txtNama; } public JTextField getTxtNim() { return txtNim; } public void setData(Mhs mhs) { txtNim.setText(mhs.getNim()); txtNama.setText(mhs.getNama()); txtJurusan.setText(mhs.getJurusan()); txtKelas.setText(mhs.getKelas()); rbLakiLaki.setSelected(mhs.getJenisKelamin()); } public void reset(){ txtNim.setText(""); txtNama.setText(""); txtJurusan.setText(""); txtKelas.setText(""); }
Hapus method main beserta isinya yang ada di FormDetailMahasiswa 26. Sekarang silahkan anda buka kelas MhsController.java, tambahkan 4 buah field berikut private FormDataMahasiswa formDataMahasiswa; private FormDetailMahasiswa formDetailMahasiswa; private DefaultTableModel dtm; private JTable table; 27. Tambahkan 2 buah import berikut import latihan2.view.FormDataMahasiswa; import latihan2.view.FormDetailMahasiswa; 28. Kemudian tambahkan 1 buah method dengan nama refresh untuk merefresh tampilan di tbMahasiswa public void refresh() { dtm.setRowCount(0); Mhs[] arrayMhs = mahasiswaImpl.getAllMahasiswa(); for (Mhs m : arrayMhs) { Vector v = new Vector(); v.add(m.getNim()); v.add(m.getNama()); v.add(m.getKelas()); v.add(m.getJurusan()); if (m.getJenisKelamin()) {//bisa juga ditulis if(m.getJenisKelamin()){ v.add("Pria"); } else { v.add("Wanita"); } dtm.addRow(v); } }
29. Tambahkan 1 buah controller untuk mendukung 2 buah view yang baru anda buat public MhsController(FormDataMahasiswa formDataMahasiswa, FormDetailMahasiswa formDetailMahasiswa) { this.formDataMahasiswa = formDataMahasiswa; this.formDetailMahasiswa = formDetailMahasiswa; this.table = formDataMahasiswa.getTbMahasiswa(); dtm = (DefaultTableModel) this.table.getModel(); mahasiswaImpl = DaoFactory.create().getMahasiswaDao(); refresh(); }
30. Tambahkan 1 buah method insertMhs public void tambahMhs(Mhs mhs) { if (formDetailMahasiswa.getTxtNim().getText().trim().length() == 0) { JOptionPane.showMessageDialog(formDetailMahasiswa, "NIM mahasiswa harus diisi"); return; } if (formDetailMahasiswa.getTxtNama().getText().trim().length() == 0) { JOptionPane.showMessageDialog(formDetailMahasiswa, "Nama mahasiswa harus diisi"); return; } mhs = new Mhs(formDetailMahasiswa.getTxtNim().getText().trim(), formDetailMahasiswa.getTxtNama().getText().trim()); mhs.setKelas(formDetailMahasiswa.getTxtKelas().getText().trim()); mhs.setJurusan(formDetailMahasiswa.getTxtJurusan().getText().trim()); mhs.setJenisKelamin(formDetailMahasiswa.getRbLakiLaki().isSelected()); if (mahasiswaImpl.insertMahasiswa(mhs) > 0) { formDetailMahasiswa.setVisible(false); formDetailMahasiswa.reset(); refresh(); } else { JOptionPane.showMessageDialog(formDetailMahasiswa, "insert gagal"); } }
31. Tambahkan 1 buah method updateMhs dengan 1 buah parameter yaitu mhs, parameter ini memiliki type Mhs, biarkan saja method updateMhs tanpa parameter yang sudah ada public void ubahMhs(Mhs mhs) { if (formDetailMahasiswa.getTxtNim().getText().trim().length() == 0) { JOptionPane.showMessageDialog(formDetailMahasiswa, "NIM mahasiswa harus diisi"); return; } if (formDetailMahasiswa.getTxtNama().getText().trim().length() == 0) { JOptionPane.showMessageDialog(formDetailMahasiswa, "Nama mahasiswa harus diisi"); return; } mhs = new Mhs(formDetailMahasiswa.getTxtNim().getText().trim(), formDetailMahasiswa.getTxtNama().getText().trim()); mhs.setKelas(formDetailMahasiswa.getTxtKelas().getText().trim()); mhs.setJurusan(formDetailMahasiswa.getTxtJurusan().getText().trim()); mhs.setJenisKelamin(formDetailMahasiswa.getRbLakiLaki().isSelected()); if (mahasiswaImpl.updateMahasiswa(mhs)) { formDetailMahasiswa.setVisible(false); formDetailMahasiswa.reset(); refresh(); } else { JOptionPane.showMessageDialog(formDetailMahasiswa, "Update gagal"); } }
32. Tambahkan 1 buah method hapusMhs public void hapusMhs() { int barisTerpilih = table.getSelectedRow(); if (barisTerpilih == -1) { JOptionPane.showMessageDialog(formDetailMahasiswa, "Pilih data yang hendak dihapus"); return; } mhs = new Mhs(table.getValueAt(barisTerpilih, 0).toString(), table.getValueAt(barisTerpilih, 1).toString()); if (mahasiswaImpl.deleteMahasiswa(mhs)) { formDetailMahasiswa.setVisible(false); refresh(); } else { JOptionPane.showMessageDialog(formDetailMahasiswa, "Delete gagal"); } }
33. Tambahkan 2 buah method berikut public void showFormTambah(){ formDetailMahasiswa.reset(); formDetailMahasiswa.setInsert(true); formDetailMahasiswa.setVisible(true); } public void showFormUbah(){ int barisTerpilih = table.getSelectedRow(); if (barisTerpilih == -1) { JOptionPane.showMessageDialog(formDetailMahasiswa, "Pilih data yang hendak diubah"); return; } mhs = new Mhs(table.getValueAt(barisTerpilih, 0).toString(), table.getValueAt(barisTerpilih, 1).toString()); mhs.setKelas(table.getValueAt(barisTerpilih, 2).toString()); mhs.setJurusan(table.getValueAt(barisTerpilih, 3).toString()); mhs.setJenisKelamin(table.getValueAt(barisTerpilih, 4).toString().equals("Pria")); formDetailMahasiswa.setData(mhs); formDetailMahasiswa.setInsert(false); formDetailMahasiswa.setVisible(true); }
34. Tambahkan field berikut pada FormDetailMahasiswa private MhsController mhsController; 35. Tambahkan method pada kelas FormDetailMahasiswa public void setMhsController(MhsController mhsController) { this.mhsController = mhsController; }
36. Tambahkan event actionPerformed pada btnSimpan, kemudian ketik kode program yang dicetak tebal private void btnSimpanActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if (txtNim.isEnabled()) { mhsController.tambahMhs(); } else { mhsController.ubahMhs(); } }
37. Tambahkan event actionPerformed pada btnBatal, kemudian ketik kode program yang dicetak tebal private void btnBatalActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: reset(); setVisible(false); }
38. Tambahkan field berikut pada FormDataMahasiswa private MhsController mhsController; 39. Tambahkan method pada FormDataMahasiswa public void setMhsController(MhsController mhsController) { this.mhsController = mhsController; }
40. Pada FormDataMahasiswa, tambahkan eventAction performed pada btnTambah,btnUbah,btnHapus dan btnTutup, kemudian ketik kode program yang dicetak tebal private void btnTambahActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: mhsController.showFormTambah(); } private void btnUbahActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: mhsController.showFormUbah(); } private void btnHapusActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: mhsController.hapusMhs(); } private void btnTutupActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: System.exit(0); }
41. Ubah method main pada kelas Main.java anda seperti kode program berikut public static void main(String[] args) { // TODO code application logic here // FormMhs formMhs = new FormMhs(); // formMhs.setVisible(true); // // FormDokumenMhs formDokumenMhs = new FormDokumenMhs(); // formDokumenMhs.setVisible(true); // // MhsController mhsController = new MhsController(formDokumenMhs, formMhs); // // formMhs.setMhsController(mhsController); FormDataMahasiswa formDataMahasiswa = new FormDataMahasiswa(); formDataMahasiswa.setVisible(true); FormDetailMahasiswa formDetailMahasiswa = new
FormDetailMahasiswa(formDataMahasiswa, true);
MhsController mhsController=new MhsController(formDataMahasiswa, formDetailMahasiswa); formDataMahasiswa.setMhsController(mhsController); formDetailMahasiswa.setMhsController(mhsController); }