Modul 4 Implementasi DAO + MVC 1. Pastikan project anda

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