Tutorial Java Swing Implementasi MVC Dengan Database Ms. Access 2016 Part 2

Pada tutorial sebelumnya tentang Tutorial Java Swing Implementasi MVC Dengan Database Ms. Access 2016 Part 1 sudah dijelaskan 4 tahap dari 7 tahap implementasi. Pada tutorial kali ini menjelaskan kelanjutan dari tutorial sebelumnya.

5. Membuat Controller dari tiga tahap MVC untuk Tabel Mahasiswa dan Tabel Jurusan

Setelah membuat database, model dan view langkah berikutnya adalah membuat controller untuk mengontroll database. Buat class baru dengan nama MahasiswaController.java dengan source code berikut:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
/*
 * Nama File MahasiswaController.java
 * package Controller;
 */
package Controller;
 
 
import Model.MahasiswaModel;
import Model.ViewMahasiswaModel;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
 
/**
 *
 * @author jagungodak
 */
public class MahasiswaController {
 
    Connection con;
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
 
    public MahasiswaController(Connection con) {
        this.con = con;
    }
 
    public void insert(MahasiswaModel mm) {
        String sql = "insert into mahasiswa (nim,nama,alamat,tempat_lahir,tgl_lahir,jenis_kelamin,agama,kd_jurusan) "
                + "values(?,?,?,?,?,?,?,?) ";
        try {
            PreparedStatement st = con.prepareStatement(sql);
            st.setString(1, mm.getNim());
            st.setString(2, mm.getNama());
            st.setString(3, mm.getAlamat());
            st.setString(4, mm.getTempat_lahir());
            Timestamp tgl = new Timestamp(mm.getTgl_lahir().getTime());
            st.setTimestamp(5, tgl);
            st.setString(6, mm.getJenis_kelamin());
            st.setString(7, mm.getAgama());
            st.setString(8, mm.getKd_jurusan());
            st.executeUpdate();
            JOptionPane.showMessageDialog(null, "Proses Simpan BERHASIL");
        } catch (SQLException ex) {
            ex.printStackTrace();
            JOptionPane.showMessageDialog(null, "Proses Simpan Gagal");
        }
    }
 
    public void update(MahasiswaModel mm, String nim) {
        String sql = "update mahasiswa set nim=?,nama=?,alamat=?,tempat_lahir=?,tgl_lahir=?,"
                + "jenis_kelamin=?,agama=?,kd_jurusan=? where nim=? ";
        try {
            PreparedStatement st = con.prepareStatement(sql);
            st.setString(1, mm.getNim());
            st.setString(2, mm.getNama());
            st.setString(3, mm.getAlamat());
            st.setString(4, mm.getTempat_lahir());
            Timestamp tgl = new Timestamp(mm.getTgl_lahir().getTime());
            st.setTimestamp(5, tgl);
            st.setString(6, mm.getJenis_kelamin());
            st.setString(7, mm.getAgama());
            st.setString(8, mm.getKd_jurusan());
            st.setString(9, nim);
            st.executeUpdate();
            JOptionPane.showMessageDialog(null, "Proses UPDATE BERHASIL");
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Proses Update Gagal");
        }
    }
 
    public void delete(String nim) {
        String sql = "delete from mahasiswa  where nim=? ";
        try {
            PreparedStatement st = con.prepareStatement(sql);
            st.setString(1, nim);
            st.executeUpdate();
            JOptionPane.showMessageDialog(null, "Proses Hapus BERHASIL");
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Proses Hapus Gagal");
        }
    }
 
    public MahasiswaModel pilihMahasiswa(String nim) {
        String sql = "select * from mahasiswa where nim=?";
        MahasiswaModel mm = new MahasiswaModel();
        try {
            PreparedStatement st = con.prepareStatement(sql);
            st.setString(1, nim);
            ResultSet rs = st.executeQuery();
            while (rs.next()) {
                mm.setAgama(rs.getString("agama"));
                mm.setAlamat(rs.getString("alamat"));
                mm.setJenis_kelamin(rs.getString("jenis_kelamin"));
                mm.setKd_jurusan(rs.getString("kd_jurusan"));
                mm.setNama(rs.getString("nama"));
                mm.setNim(rs.getString("nim"));
                mm.setTempat_lahir(rs.getString("tempat_lahir"));
                mm.setTgl_lahir(rs.getDate("tgl_lahir"));
            }
 
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Proses  Gagal");
        }
        return mm;
    }
 
    public List<MahasiswaModel> pilihMahasiswaAll(String where) {
        String sql = "select * from mahasiswa " + where;
        List<MahasiswaModel> data = new ArrayList<>();
 
        try {
            PreparedStatement st = con.prepareStatement(sql);
            ResultSet rs = st.executeQuery();
            while (rs.next()) {
                MahasiswaModel mm = new MahasiswaModel();
                mm.setAgama(rs.getString("agama"));
                mm.setAlamat(rs.getString("alamat"));
                mm.setJenis_kelamin(rs.getString("jenis_kelamin"));
                mm.setKd_jurusan(rs.getString("kd_jurusan"));
                mm.setNama(rs.getString("nama"));
                mm.setNim(rs.getString("nim"));
                mm.setTempat_lahir(rs.getString("tempat_lahir"));
                mm.setTgl_lahir(rs.getDate("tgl_lahir"));
                data.add(mm);
            }
 
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Proses  Gagal");
        }
        return data;
    }
 
    public List<ViewMahasiswaModel> viewMahasiswaAll(String where) {
        String sql = "select * from view_mahasiswa " + where;
        List<ViewMahasiswaModel> data = new ArrayList<>();
 
        try {
            PreparedStatement st = con.prepareStatement(sql);
            ResultSet rs = st.executeQuery();
            while (rs.next()) {
                ViewMahasiswaModel mm = new ViewMahasiswaModel();
                mm.setAgama(rs.getString("agama"));
                mm.setAlamat(rs.getString("alamat"));
                mm.setJenis_kelamin(rs.getString("jenis_kelamin"));
                mm.setKd_jurusan(rs.getString("kd_jurusan"));
                mm.setNama(rs.getString("nama"));
                mm.setNim(rs.getString("nim"));
                mm.setTempat_lahir(rs.getString("tempat_lahir"));
                mm.setTgl_lahir(rs.getDate("tgl_lahir"));
                mm.setNama_jurusan(rs.getString("nama_jurusan"));
                mm.setJenjang(rs.getString("jenjang"));
                data.add(mm);
            }
 
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Proses view mahasiswa Gagal");
        }
        return data;
    }
 
}

Berikutnya buat juga class untuk tabel jurusan dengan Nama JurusanController.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/*
 * Nama File JurusanController.java
 * package Controller;
 */
package Controller;
 
import Model.JurusanModel;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
 
/**
 *
 * @author jagungodak
 */
public class JurusanController {
 
    Connection con;
 
    public JurusanController(Connection con) {
        this.con = con;
    }
 
    public void insert(JurusanModel mm) {
        String sql = "insert into jurusan (kd_jurusan,nama_jurusan,jenjang) values(?,?,?) ";
        try {
            PreparedStatement st = con.prepareStatement(sql);
            st.setString(1, mm.getKd_jurusan());
            st.setString(2, mm.getNama_jurusan());
            st.setString(3, mm.getJenjang());
            st.executeUpdate();
            JOptionPane.showMessageDialog(null, "Proses Simpan BERHASIL");
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Proses Simpan Gagal");
        }
    }
 
    public void update(JurusanModel mm, String kd) {
        String sql = "update jurusan set kd_jurusan=?,nama_jurusan=?,jenjang=? where kd_jurusan=? ";
        try {
            PreparedStatement st = con.prepareStatement(sql);
            st.setString(1, mm.getKd_jurusan());
            st.setString(2, mm.getNama_jurusan());
            st.setString(3, mm.getJenjang());
            st.setString(4, kd);
            st.executeUpdate();
            JOptionPane.showMessageDialog(null, "Proses update BERHASIL");
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Proses update Gagal");
        }
    }
 
    public void delete(String kd) {
        String sql = "delete from jurusan  where kd_jurusan=? ";
        try {
            PreparedStatement st = con.prepareStatement(sql);
            st.setString(1, kd);
            st.executeUpdate();
            JOptionPane.showMessageDialog(null, "Proses Hapus BERHASIL");
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Proses Hapus Gagal");
        }
    }
 
    public JurusanModel pilihJurusan(String kd) {
        String sql = "select * from mahasiswa where nim=?";
        JurusanModel mm = new JurusanModel();
        try {
            PreparedStatement st = con.prepareStatement(sql);
            st.setString(1, kd);
            ResultSet rs = st.executeQuery();
            while (rs.next()) {
                mm.setKd_jurusan(rs.getString("kd_jurusan"));
                mm.setNama_jurusan(rs.getString("nama_jurusan"));
                mm.setJenjang(rs.getString("jenjang"));
            }
 
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Proses  Gagal");
        }
        return mm;
    }
 
    public List<JurusanModel> pilihJurusanAll(String nim) {
        String sql = "select * from jurusan where nim=?";
        List<JurusanModel> data = new ArrayList<>();
 
        try {
            PreparedStatement st = con.prepareStatement(sql);
            st.setString(1, nim);
            ResultSet rs = st.executeQuery();
            while (rs.next()) {
                JurusanModel mm = new JurusanModel();
                mm.setKd_jurusan(rs.getString("kd_jurusan"));
                mm.setNama_jurusan(rs.getString("nama_jurusan"));
                mm.setJenjang(rs.getString("jenjang"));
                data.add(mm);
            }
 
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Proses  view jurusan Gagal");
        }
        return data;
    }
 
}

6. Membuat Event atau Action setiap Button (Tombol)

langkah selanjutnya adalah memberi aksi atau event pada setiap tombol pada clas MVCMahasiswa.java. Buka kembali file View MVCMahasiswa.java yang ada pada package view. Pada baris terakhir source code sebelum tanda } (tutup kurung kurawal) panggil object DBConnection dan buat methode untuk mengisi tabel mahasiswa dan tabel jurusan.

Berikut method isiTable yang dimaksud: (diletakan pada baris terakhir sebelum tutup kurung)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
DBConnection con = DBConnection.getInstance();
    MahasiswaController mc = new MahasiswaController(con.getKoneksi());
    JurusanController jc = new JurusanController(con.getKoneksi());
    List<ViewMahasiswaModel> data = new ArrayList<>();
 List<JurusanModel> dataJurusan = new ArrayList<>();
    ViewMahasiswaTableModel tModel;
    JurusanTableModel tModelJurusan;
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 
    public void isiTabelMahasiswa() {
        data = mc.viewMahasiswaAll("");
        tModel = new ViewMahasiswaTableModel(data);
        jTable1.setModel(tModel);
        jTable1.setRowHeight(35);
        kosong();
        loadAgama();
        loadComboJurusan();
    }
 
    public void isiTabelJurusan() {
        dataJurusan = jc.pilihJurusanAll("");
        tModelJurusan = new JurusanTableModel(dataJurusan);
        jTable2.setModel(tModelJurusan);
        jTable1.setRowHeight(35);
    }
 
    public void kosong() {
        jTextField3.setText("");//kosongkan NIM
        jTextField2.setText("");//kosongkan NAMA
        jTextField1.setText("");//Kosongkan Alamat
        jTextField4.setText("");//Kosongkan Tempat Lahir
        jDateChooser1.setDate(new Date());//Set Tanggal sekarang
        jRadioButton1.setSelected(true);
        jComboBox1.setSelectedIndex(0);//default value agama
        jComboBox2.setSelectedIndex(0);//default value kd_jurusan
    }
 
    public void loadComboJurusan() {
        //Mengambil data jurusan dari database
        DefaultComboBoxModel cmbJurusan = new DefaultComboBoxModel();
         List<JurusanModel> data = jc.pilihJurusanAll(" order by kd_jurusan");
        for (JurusanModel jm : data) {
            cmbJurusan.addElement(jm.getKd_jurusan());
        }
        jComboBox2.setModel(cmbJurusan);
    }
 
    public void loadAgama() {
        DefaultComboBoxModel cmbagama = new DefaultComboBoxModel();
        cmbagama.addElement("Islam");
        cmbagama.addElement("Hindu");
        cmbagama.addElement("Budha");
        cmbagama.addElement("Kristen");
        cmbagama.addElement("Katolik");
        jComboBox1.setModel(cmbagama);
    }

Selanjutnya panggil Methode isiTabelMahasiswa() dan isiTabelJurusan() pada Constructor dibawah initcomponent(), seperti gambar berikut:

Sampai disini, untuk melihat hasil sementara jalankan project dengan menekan F6. Jika berhasil, maka akan muncul seperti gambar berikut:

Selanjutnya, beri event pada setiap Button dengan cara klik dua kali atau Klik kanan pada button==> event ==>acction ==> actionPerformed

Event atau aksi tombol tambah mahasiswa :

loadAgama();
        loadComboJurusan();
        kosong();
        jDialog1.pack();
        jDialog1.setLocationRelativeTo(null);
        jDialog1.setVisible(true);
        jTextField3.setEnabled(true); //mengaktifkan inputNIM
        jTextField3.requestFocus(); //Auto Fokus di NIM

Event atau aksi tombol ubah mahasiswa:

int i = jTable1.getSelectedRow();//Pilih baris data mahasiswa pada tabel mahasiswa
        if (i < 0) {
            JOptionPane.showMessageDialog(null, "Pilih data mahasiswa terlebih dahulu");
        } else {
            String nim = jTable1.getValueAt(i, 0).toString();
            MahasiswaModel mm = mc.pilihMahasiswa(nim);
            jTextField3.setText(mm.getNim());
            jTextField2.setText(mm.getNama());
            jTextField1.setText(mm.getAlamat());
            jTextField4.setText(mm.getTempat_lahir());
            if (mm.getJenis_kelamin().equalsIgnoreCase("L")) {
                jRadioButton1.setSelected(true);
            } else {
                jRadioButton2.setSelected(true);
            }
            jComboBox1.setSelectedItem(mm.getAgama());
            jComboBox2.setSelectedItem(mm.getKd_jurusan());
            jTextField3.setEnabled(false);
            jDateChooser1.setDate(mm.getTgl_lahir());
            jDialog1.pack();
            jDialog1.setLocationRelativeTo(null);
            jDialog1.setVisible(true);
            jTextField2.requestFocus();
        }

Event atau aksi tombol Hapus mahasiswa:

 int i = jTable1.getSelectedRow();//Pilih baris data mahasiswa pada tabel mahasiswa
        if (i < 0) {
            JOptionPane.showMessageDialog(null, "Pilih data mahasiswa terlebih dahulu");
        } else {
            String nim = jTable1.getValueAt(i, 0).toString();
            System.out.println(nim);
            mc.delete(nim.trim());
            isiTabelMahasiswa();
        }

Event atau aksi tombol Data Jurusan:

isiTabelJurusan();
        jDialog2.pack();
        jDialog2.setLocationRelativeTo(null);
        jDialog2.setVisible(true);

Event atau aksti tombol keluar:

System.exit(1);

Buka Jdialog1, kemudain beri event/aksi untuk tombol simpan:

 if (jTextField3.getText().isEmpty()) {
            JOptionPane.showMessageDialog(null, "NIM tidak boleh kosong");
        } else {
            MahasiswaModel mm = new MahasiswaModel();
            mm.setNim(jTextField3.getText().trim());
            mm.setNama(jTextField2.getText().trim());
            mm.setAlamat(jTextField1.getText().trim());
            mm.setTempat_lahir(jTextField4.getText());
            mm.setTgl_lahir(jDateChooser1.getDate());
            if (jRadioButton1.isSelected()) {
                mm.setJenis_kelamin("L");
            } else {
                mm.setJenis_kelamin("P");
            }
            mm.setAgama(jComboBox1.getSelectedItem().toString());
            mm.setKd_jurusan(jComboBox2.getSelectedItem().toString());
            if (jTextField3.isEnabled()) {
                mc.insert(mm);
            } else {
                mc.update(mm, mm.getNim());
            }
            isiTabelMahasiswa();
            jDialog1.dispose();
        }

Event atau aksi tombol close pada jDialog1 maupun di jDialog2 :

jDialog1.dispose();

Tahapan selanjutnya adalah membuat Laporan.. http://jagungodak.web.id/2017/12/22/membuat-laporan-menggunakan-ireport-5-5-0/

Related Post

Membuat Laporan Menggunakan IReport 5.5.0 dengan D... Pada tutorial sebelumnya tentang: Tutorial Java Swing Implementasi MVC Dengan Database Ms. Access 2016 Part 1 Tutorial Java Swing Implementasi MVC D...
Menampilkan Informasi Kapasitas Hardisk pada Java Untuk menampilkan informasi kapasitas hardisk pada java menggunakan class java.io.File. Pada java 1.6 keatas terdapat method getTotalSpace(), getUsabl...
Membuat Koneksi Ms. Access menggunakan UCanAccess ... Pada tutorial kali ini, akan dijelaskan bagaimana membuat koneksi Ms. Access menggunakan UCanAccess pada java. Pertama --Download UCanAccess Library d...
Aplikasi Rumah Makan / Restaurant (MSIDRumahMakan ... Aplikasi Rumah Makan / Restaurant (MSIDRumahMakan v1.0) merupakan aplikasi/perangkat lunak yang digunakan untuk keperluan administrasi Rumah Makan, Ba...
Membuat Class DBConnection pada Java menggunakan N... Pada tutorial ini menjelaskan tentang cara membuat class  DBConnection pada java menggunakan netbeans untuk melakukan koneksi ke database MySQL maupun...
Penggunaan DateTimePicker pada Java DateTimePicker merupakan komponen yang dapat digunakan untuk memilih tanggal. salah satu contoh penggunaan datetimepicker pada java adalah form input ...
Java 8: Penggunaan Date Time dan Calender pada Jav... Pada tuturial kali ini, menjelaskan penggunaan Date Time pada Java yang menggunakan API java.until.Date dan java.until.Calender. Sebagai seorang progr...
Membuat Koneksi MySQL menggunakan JDBC Driver pada... Pada tutorial kali ini, menjelaskan tentang bagaimana membuat koneksi MySQL menggunakan JDBC Driver pada Java. Sebelum melanjutkan ke tahapan berikutn...
Software Akuntansi MSID Accounting Pro Aplikasi atau Software Akuntansi MSID Accounting Pro merupakan aplikasi akuntansi dan keuangan yang digunakan untuk membuat laporan keuangan perusahaa...
Manipulasi File pada Java Untuk melakukan manipulasi File pada Java menggunakan class java.io.File mulai dari membuat file, menghapus file, cek permision sebuah file, cek meta ...

Tutorial Terkait :

2 tanggapan untuk “Tutorial Java Swing Implementasi MVC Dengan Database Ms. Access 2016 Part 2

  1. Ping-balik: Membuat Laporan Menggunakan IReport 5.5.0 dengan Databas eMs. Access 2016 - Jagungodak

  2. Ping-balik: Tutorial Java Swing Implementasi MVC Dengan Database Ms. Access 2016 Part 1 - Jagungodak

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

13 − two =