Membuat Form Master Data Kategori dengan Java Part 2

Assalamualaikum,, pengunjung yang baik hati. dan masih setia mengikuti sesi tutorial saya kali ini. Hari ini saya akan melanjutkan sesi pembelajaran kemarin. Pada sesi sebelumnya kita sudah berhasil membuat design untuk Form Master Data Kategori Barang buat temen-temen yang belum mengikuti sesi-sesi sebelumnya silahkan pelajari dari awal yaitu dari sesi Membuat Program Inventory Barang dengan Java Netbeans. Oke langsung saja kita lanjut. Silahkan kalian buka Project yang telah kita buat pada sesi sebelumnya. 

Pada sesi sebelumnya kita sudah menambahkan Form Master Data Kategori, jadi kita sudah membuat tiga buah form yaitu form login, form menu utama, dan form data kategori. hasilnya bisa dilihat pada gambar berikut ini.

Pertama kita akan hubungkan Menu item yang ada di form menu utama dengan form data kategori sehingga ketika menu kategori di menu utama diklik akan menampilkan form data kategori. Sebelum menghubungkan form menu utama dengan form data kategori kita harus tambahkan dulu jDekstopPane kedalam area content menu utama. 

Caranya, buka form menu utama pada tab design -> pada sidebar Swing Container. klik dan tahan Dekstop Pane -> tarik dan tempatkan ke suduh kiri atas bagian menu utama -> kemudian sesuaikan ukuran nya hingga memenuhi content form menu utama.

Setelah itu masih di form menu utama pada tab Source -> tambahkan source code berikut ini setelah/dibawah baris kode -> public class menu_utama extends javax.swing.JFrame {

private final Connection conn = new koneksi().connect();
private data_kategori data_kategori;

private void initForm() {

    data_kategori = new data_kategori();

}
 

Setelah itu edit baris kode -> public menu_utama() -> menjadi seperti ini.

public menu_utama() {
    initComponents();
    initForm();
} 

Kemudian pada tanda merah yang berada pada baris perintah koneksi -> klik tanda warning merah -> kemudian klik Add import for java.sql.Connection dan juga Add import for koneksi.koneksi.

Kita buka pada tab Design -> pada menu item Data Kategori -> klik kanan Pilih Events -> Action -> actionPerformed -> kemudian tambahkan kodenya menjadi seperti ini. 

private void menuKategoriActionPerformed(java.awt.event.ActionEvent evt) {                                             
    if (!data_kategori.isVisible()) {
        jDesktopPane1.add(data_kategori);
        data_kategori.show();
    }
}   

Pada tahap ini kita akan coba Running aplikasi kita, Klik kanan di form menu_utama -> klik Run File -> maka akan muncul form Menu Utama.

Klik menu Master Data -> klik menu Data Kategori -> maka muncul Form Data Kategori.  Jika pada tahap ini masih ada error silahkan beri komentar di bawah halaman ini. 

Kita juga bisa mencoba Running aplikasi kita dari Form Login. 

Setelah kita berhasil menampilkan Form Data Kategori dari menu, kita akan aktifkan Tombol-tombol yang ada di dalam Form Data Kategori, Sebelum itu kita import dulu libarry yang dibutuhkan agar tidak ada notifikasi Merah disebelah kiri ketika kita mengetik perintah kode. 

Buka Form Data Kategori -> klik tab Source -> dibawah baris kode package tampilan; -> tambahkan kode dibawah ini sehingga perintah kodenya menjadi seperti berikut :

package tampilan;

import java.awt.Dialog;
import java.awt.event.KeyEvent;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

import koneksi.koneksi; 

Kemudian tambahkan perintah kode dibawah ini setelah baris kode berikut -> public class data_kategori extends javax.swing.JInternalFrame { . Sehingga perintah kodenya menjadi seperti ini. 

public class data_kategori extends javax.swing.JInternalFrame {

    public final Connection conn = new koneksi().connect();
    private DefaultTableModel tabmode;

    private void aktif() {
        txtKodeKategori.setEnabled(true);
        txtNamaKategori.setEnabled(true);
        txtKeterangan.setEnabled(true);
    }

    protected void kosong() {
        tanggal();
        txtKodeKategori.setText(null);
        txtNamaKategori.setText(null);
        txtKeterangan.setText(null);
    }

    public void noTable() {
        int Baris = tabmode.getRowCount();
        for (int a = 0; a < Baris; a++) {
            String nomor = String.valueOf(a + 1);
            tabmode.setValueAt(nomor + ".", a, 0);
        }
    }

    public void tanggal() {
        Date tgl = new Date();
        btnTanggal.setDate(tgl);
    }

    public void lebarKolom() {
        TableColumn kolom;
        tabelKategori.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
        kolom = tabelKategori.getColumnModel().getColumn(0);
        kolom.setPreferredWidth(40);
        kolom = tabelKategori.getColumnModel().getColumn(1);
        kolom.setPreferredWidth(100);
        kolom = tabelKategori.getColumnModel().getColumn(2);
        kolom.setPreferredWidth(100);
        kolom = tabelKategori.getColumnModel().getColumn(3);
        kolom.setPreferredWidth(120);
        kolom = tabelKategori.getColumnModel().getColumn(4);
        kolom.setPreferredWidth(130);
    }

    public void dataTable() {
        Object[] Baris = {"No", "Tanggal", "Kode Kategori", "Nama Kategori", "Keterangan"};
        tabmode = new DefaultTableModel(null, Baris);
        tabelKategori.setModel(tabmode);
        String sql = "select * from tb_kategori order by kode_kategori asc";
        try {
            java.sql.Statement stat = conn.createStatement();
            ResultSet hasil = stat.executeQuery(sql);
            while (hasil.next()) {
                String tanggal = hasil.getString("tanggal");
                String kode_kategori = hasil.getString("kode_kategori");
                String nama_kategori = hasil.getString("nama_kategori");
                String keterangan = hasil.getString("keterangan");
                String[] data = {"", tanggal, kode_kategori, nama_kategori, keterangan};
                tabmode.addRow(data);
                noTable();
                lebarKolom();
            }
        } catch (Exception e) {
        }
    }

    public void pencarian(String sql) {
        Object[] Baris = {"No", "Tanggal", "Kode Kategori", "Nama Kategori", "Keterangan"};
        tabmode = new DefaultTableModel(null, Baris);
        tabelKategori.setModel(tabmode);
        int brs = tabelKategori.getRowCount();
        for (int i = 0; 1 < brs; i++) {
            tabmode.removeRow(1);
        }
        try {
            java.sql.Statement stat = conn.createStatement();
            ResultSet hasil = stat.executeQuery(sql);
            while (hasil.next()) {
                String tanggal = hasil.getString("tanggal");
                String kode_kategori = hasil.getString("kode_kategori");
                String nama_kategori = hasil.getString("nama_kategori");
                String keterangan = hasil.getString("keterangan");
                String[] data = {"", tanggal, kode_kategori, nama_kategori, keterangan};
                tabmode.addRow(data);
                noTable();
            }
        } catch (Exception e) {

        }
    } 

Perhatikan setiap fungsi atau function yang kita buat, Pada baris kode private DefaultTableModel tabmode; ini untuk membuat variabel baru yang nantinya digunakan untuk rekayasa tabel data kategori, kemudian pada baris kode private void aktif() digunakan untuk mengaktifkan field-field yang ada pada form. pada baris kode private void kosong() digunakan untuk meresett/membersihkan field inputan, pada baris kode public void noTable() digunakan untuk penomoran di tabel data kategori ketika data sudah ada. pada baris kode public void tanggal() digunakan untuk mengesett tanggal di jDateChooser sesuai tanggal do date/tanggal sekarang. pada baris kode public void lebarKolom() digunakan untuk mengatur lebar kolom tabel data kategori. pada baris kode public void dataTable() ini adalah fungsi untuk menampilkan data kategori dari database, pada bagian ini penerapan Query SQL di eksekusi. pada baris kode public void pencarian() baris ini digunakan untuk modul pencarian data pada tabel kategori.

Oke.. setelah kita memahami perintah kode di atas kita akan panggil fungsi-fungsi baris kode diatas pada Form Data Kategori sehingga ketika form ini diaktifkan beberapa fungsi langsung berjalan. Tambahkan perintah kode berikut setelah baris kode public data_kategori() {. sehingga source code nya menjadi seperti berikut.

public data_kategori() {
    initComponents();
    dataTable();
    lebarKolom();
    aktif();
    tanggal();
    txtKodeKategori.requestFocus();
} 

Setelah itu kita akan coba Running lagi aplikasi kita -> klik kanan pada menu_utama -> Run File -> pilih menu Master Data -> Data Kategori. Maka tampilan formnya akan menjadi seperti berikut.

Selanjutnya kita akan mengaktifkan tombol Tambah -> pada form data_kategori -> klik tab Design -> klik kanan pada tombol Tambah -> klik Events -> Action -> actionPerformed . . . . 

Tambahkan baris kode dibawah ini, sehingga perintah kode nya menjadi seperti berikut.

    private void btnTambahActionPerformed(java.awt.event.ActionEvent evt) {                                          
        if (txtKodeKategori.getText().equals("")) {
            JOptionPane.showMessageDialog(null, "Kode Kategori tidak boleh kosong");
        } else if (txtNamaKategori.getText().equals("")) {
            JOptionPane.showMessageDialog(null, "Nama Kategori tidak boleh kosong");
        } else {
            String sql = "insert into tb_kategori values (?,?,?,?)";
            String tampilan = "dd-MM-yyyy";
            SimpleDateFormat fm = new SimpleDateFormat(tampilan);
            String tanggal = String.valueOf(fm.format(btnTanggal.getDate()));
            try {
                PreparedStatement stat = conn.prepareStatement(sql);
                stat.setString(1, tanggal.toString());
                stat.setString(2, txtKodeKategori.getText());
                stat.setString(3, txtNamaKategori.getText());
                stat.setString(4, txtKeterangan.getText());
                stat.executeUpdate();
                JOptionPane.showMessageDialog(null, "Data Berhasil Disimpan");
                kosong();
                dataTable();
                lebarKolom();
                txtKodeKategori.requestFocus();
            } catch (SQLException e) {
                JOptionPane.showMessageDialog(null, "Data Gagal Disimpan" + e);
            }
        }
    } 

Kemudian kita akan coba inputkan satu data dengan melakukan Running kembali aplikasi kita dari menu_utama. jika berhasil akan terinput datanya.

Selanjutnya kita akan membuat component pop up dengan jDialog untuk menampilkan data yang akan kita ubah. Caranya klik kanan pada Other Components -> klik Add Form Palette -> klik Swing Windows -> klik Dialog.

Kemudian rubah variable jDialog nya menjadi ubahKategori.

langkah selanjutnya kita akan buat design dialog ubahKategori nya menjadi seperti berikut, kalian bisa copy dari tampilan dasar form Data Kategori pada panel input Data Katagori. 

Jika sudah rubah semua variabel yang ada di dialog ubahKategori -> dengan ketentuan seperti gambar berikut.

Selanjutnya kita akan aktifkan tombol Ubah nya. namun sebelum kita aktifkan, data yang ada di table kategori harus kita tampilkan ke dalam tiap-tiap Field. untuk memasukan data dari tabel ke dalam textfield caranya -> klik kanan pada tabel kategori -> klik Events  -> Mouse -> mouseClicked.

tambahkan baris kode nya, sehingga menjadi seperti berikut.

    private void tabelKategoriMouseClicked(java.awt.event.MouseEvent evt) {                                           
        int bar = tabelKategori.getSelectedRow();
        String a = tabmode.getValueAt(bar, 0).toString();
        String b = tabmode.getValueAt(bar, 1).toString();
        String c = tabmode.getValueAt(bar, 2).toString();
        String d = tabmode.getValueAt(bar, 3).toString();
        String e = tabmode.getValueAt(bar, 4).toString();

        SimpleDateFormat date = new SimpleDateFormat("dd-MM-yyyy");
        Date dateValue = null;
        try {
            dateValue = date.parse((String) tabelKategori.getValueAt(bar, 1));
        } catch (ParseException ex) {
            Logger.getLogger(data_kategori.class.getName()).log(Level.SEVERE, null, ex);
        }

        btnTanggal.setDate(dateValue);
        btnTanggalUbah.setDate(dateValue);
        txtKodeKategori.setText(c);
        txtKodeKategoriUbah.setText(c);
        txtNamaKategori.setText(d);
        txtNamaKategoriUbah.setText(d);
        txtKeterangan.setText(e);
        txtKeteranganUbah.setText(e);
    } 

Kemudian kita aktifkan tombol Ubah nya sehingga ketika di klik akan muncul dialog Ubah Data Kategori. klik kanan pada tombol Ubah -> klik Events -> Action -> actionPerformed . . .

Kemudian tambah kan kodenya menjadi seperti berikut. 

    private void btnUbahActionPerformed(java.awt.event.ActionEvent evt) {                                        
        ubahKategori.setLocationRelativeTo(this);
        txtKodeKategoriUbah.setEditable(false);
        ubahKategori.setVisible(true);
    } 

Kemudian kita akan test dialog ubahKategori nya, Running aplikasi kita -> pada Form Data Kategori  -> klik data yang akan diubah -> klik tombol Ubah -> kalau berhasil jDialog Ubah Kategori akan tampil dan terisi datanya.

Selanjutnya kita akan fungsikan tombol Simpan  dan Cancel yang ada pada jDialog Ubah Kategori. Caranya klik kanan pada tombol Simpan -> klik Events -> Action -> actionPerformed….

Tambahkan kodenya menjadi seperti berikut.

    private void btnSimpanUbahActionPerformed(java.awt.event.ActionEvent evt) {                                              
        String sql = "update tb_kategori set tanggal=?,kode_kategori=?,nama_kategori=?,keterangan=? where kode_kategori='" + txtKodeKategoriUbah.getText() + "'";
        String tampilan = "dd-MM-yyyy";
        SimpleDateFormat fm = new SimpleDateFormat(tampilan);
        String tanggal = String.valueOf(fm.format(btnTanggalUbah.getDate()));
        try {
            PreparedStatement stat = conn.prepareStatement(sql);
            stat.setString(1, tanggal.toString());
            stat.setString(2, txtKodeKategoriUbah.getText());
            stat.setString(3, txtNamaKategoriUbah.getText());
            stat.setString(4, txtKeteranganUbah.getText());
            stat.executeUpdate();
            JOptionPane.showMessageDialog(null, "Data Berhasil Diubah");
            kosong();
            dataTable();
            lebarKolom();
            txtKodeKategori.requestFocus();
            ubahKategori.dispose();
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(null, "Data Gagal Diubah" + e);
        }
    }  

Lakukan hal yang sama pada tombol Cancel -> dengan memberikan perintah berikut.

    private void btnCancelUbahActionPerformed(java.awt.event.ActionEvent evt) {                                              
        ubahKategori.setVisible(false);
    }  

Sampai disini kita akan uji tombol Simpan nya. Coba rubah data nya jika berhasil akan tampil pesan Data Berhasil di Ubah.

Selanjutnya kita akan aktifkan tombol Bersih untuk meresett atau merefresh field inputan. Caranya klik kanan pada tombol Bersih -> Events -> Action -> actionPerformed…

Kemudian rubah baris kodenya menjadi seperti berikut ini. lalu kalian bisa uji lagi tombolnya dengan me runn aplikasinya.

    private void btnBersihActionPerformed(java.awt.event.ActionEvent evt) {                                          
        tanggal();
        kosong();
    } 

Setelah itu kita akan aktifkan juga tombol Hapus nya, dengan cara klik kanan di tombol Hapus -> Events -> Action -> actionPerformed…

Rubah baris kode nya menjadi seperti berikut. Kemudian kalian bisa uji kembali tombol hapusnya.

    private void btnHapusActionPerformed(java.awt.event.ActionEvent evt) {                                         
        int ok = JOptionPane.showConfirmDialog(null, " Apakah Anda Yakin Ingin "
            + "Menghapus Data", "Konfirmasi Dialog", JOptionPane.YES_NO_OPTION);
        if (ok == 0) {
            String sql = "delete from tb_kategori where kode_kategori='" + txtKodeKategori.getText() + "'";
            try {
                PreparedStatement stat = conn.prepareStatement(sql);
                stat.executeUpdate();
                JOptionPane.showMessageDialog(null, "Data Berhasil Dihapus");
                kosong();
                dataTable();
                lebarKolom();
                txtKodeKategori.requestFocus();
            } catch (SQLException e) {
                JOptionPane.showMessageDialog(null, "Data Gagal Dihapus" + e);
            }
        }
    }  

Jika sudah coba klik data yang akan dihapus di tabel kategori -> klik tombol Hapus -> klik Yes. Maka data akan terhapus.

Kemudian kita akan aktifkan tombol Cancel pada form Data Kategori. Klik kanan pada tombol Cancel -> Events -> Action -> actionPerformed.

Rubah baris kodenya menjadi seperti berikut ini.

    private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {                                          
        dispose();
    }  

Kali ini kita akan aktifkan textfield Pencarian, klik kanan pada textfield Pencarian -> Events -> Key -> keyTyped.

Rubah kodenya menjadi seperti berikut.

    private void txtCariKeyTyped(java.awt.event.KeyEvent evt) {                                 
        String sqlPencarian = "select * from tb_kategori where kode_kategori like '%" + txtCari.getText() + "%' or "
        + "nama_kategori like '%" + txtCari.getText() + "%' or "
        + "keterangan like '%" + txtCari.getText() + "%'";
        pencarian(sqlPencarian);
        lebarKolom();
    }  

Terakhir kita akan aktifkan tombol Cari juga. klik kanan pada tombol Cari -> Events -> Action -> actionPerformed.

Rubah kodenya menjadi seperti berikut ini.

    private void btnCariActionPerformed(java.awt.event.ActionEvent evt) {                                        
        String sqlPencarian = "select * from tb_kategori where kode_kategori like '%" + txtCari.getText() + "%' or "
        + "nama_kategori like '%" + txtCari.getText() + "%' or "
        + "keterangan like '%" + txtCari.getText() + "%'";
        pencarian(sqlPencarian);
        lebarKolom();
    } 

Alhamdulillah, pada tahap ini kita sudah selesai membuat Master Data Kategori dan mengaktifkan semua tombol dan fungsinya. Pada sesi berikutnya kita akan membuat form yang lain, namun kita akan lebih mudah karena kita akan gunakan Form Data Kategori ini untuk Form yang lain, dengan meng Copy Frame nya kemudian mengedit sesuai yang dibutuhkan.

Cobalah tambahkan satu data lagi kemudian lakukan pencarian data. Okelah kalo begitu sesi kali ini sampai disini dulu, sampai ketemu pada sesi berikut nya. Selamat Belajar, Jika ada pertanyaan silahkan isi pada kolom komentar. Terima kasih.

4 thoughts on “Membuat Form Master Data Kategori dengan Java Part 2

Leave a Reply

Your email address will not be published. Required fields are marked *