Praktikum Java Semester 7: Part 1
Praktikum Java Semester 7: Part 2
Praktikum Java Semester 7: Part 3
Praktikum Java Semester 7: Part 4
Praktikum Java Semester 7: Part 5

Pembuatan Frame di NetBeans sangat dimudahkan oleh fitur visualnya, namun karena ada beberapa fitur yang akan memiliki method yang sama dan menghindari pengulangan coding maka terlebih dahulu dipersiapkan templatenya.

Pada pengelolaan data master akan dipersiapkan 2 (dua) frame untuk tiap table, yaitu View Frame yang fungsinya untuk menampilkan table, dan Add Frame yang fungsinya untuk tambah dan ubah data. Maka dibuat dulu Interface-nya

Buka package template dan didalamnya buat interface ViewFrameInterface, isikan dengan

public interface ViewFrameInterface {
    abstract void refresh();
    abstract void buildTable(ArrayList<Object> list);
}

berikutnya buat interface AddFrameInterface, isikan dengan

public interface AddFrameInterface {
    abstract boolean dataKosong();
    abstract void simpanTambah();
    abstract void simpanUbah();
}

Frame yang dibuat akan berupa custom yang tidak memiliki window sehingga supaya seragam kita buat dulu custom framenya, masih didalam package template buat sebuah class CustomFrame, dan isikan dengan

public class CustomFrame extends javax.swing.JFrame{
    public void customShow() {
        this.dispose();
        this.setUndecorated(true);
        this.setLocationRelativeTo(null);
        this.setVisible(true);
    }
}

Buat package view.admin.jenisbarang dan didalamnya buat sebuah frame dengan nama JenisBarangViewFrame dan atur sedemikian rupa sehingga tampil seperti gambar berikut

UseCaseDiagram

  1. JPanel: Properties->background: [102,16,242]
  2. JLabel
  3. JLabel
  4. JTextField: tfCari
  5. JButton: btCari
  6. JTable: tbJenisbarang
  7. JButton: btBatal
  8. JButton: btHapus
  9. JButton: btUbah
  10. JButton: btTambah
  11. JButton: btTutup

tbJenisbarang bisa diatur dengan cara klik kanan -> TableContents -> pilih tab Columns -> isi title sesuai dengan kebutuhan -> pilih tab Rows -> atur agar Count bernilai 0

Pindah ke bagian Source , ubah deklarasi class frame ini dari

public class JenisBarangViewFrame extends javax.swing.JFrame{

menjadi

public class JenisBarangViewFrame extends CustomFrame
   implements ViewFrameInterface{

Implements abstract methodnya dan pada method buildTable isikan dengan

@Override
public void buildTable(ArrayList<Object> list) {
    DefaultTableModel model = (DefaultTableModel) tbJenisbarang.getModel();
    Object[] row = new Object[2];

    model.setRowCount(0);

    if (list.size() > 0) {
        for (int i = 0; i < list.size(); i++) {
            JenisBarang jenisBarang = (JenisBarang) list.get(i);
            row[0] = jenisBarang.getId();
            row[1] = jenisBarang.getNamaJenisBarang();
            model.addRow(row);
        }
    }
}

Pada method refresh isikan dengan

@Override
public void refresh() {
    tfCari.setText("");
    Database db = new Database();
    JenisBarang jenisBarang = new JenisBarang(db.getConnection());
    ArrayList<Object> list = jenisBarang.read();
    if(!list.isEmpty()){
        buildTable(list);
    }
}

Pindah ke bagian Design, klik pada frame dan cari pada window Properties tab Events, scroll kebawah pada posisi windowActivated, pilih comboboxnya sehingga tercipta method formWindowActivated, dan isikan dengan

private void formWindowActivated(java.awt.event.WindowEvent evt) {                                     
    refresh();
}

Kembali ke bagian Design, klik dua kali pada btBatal, dan isikan dengan

private void btBatalActionPerformed(java.awt.event.ActionEvent evt) {                                        
    refresh();
}     

Kembali ke bagian Design, klik dua kali pada btTutup, dan isikan dengan

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

Kembali ke bagian Design, klik dua kali pada btCari, dan isikan dengan

private void btCariActionPerformed(java.awt.event.ActionEvent evt) {                                       
        
    String keyword = tfCari.getText();
    if(!keyword.equals("")){
        Database db = new Database();
        Connection con = db.getConnection();

        JenisBarang jenisBarang = new JenisBarang(con);
        ArrayList<Object> list = jenisBarang.search(keyword);
        if(!list.isEmpty()){
            buildTable(list);
        }else{
            JOptionPane.showMessageDialog(null, "Data tidak ditemukan");
        }
    }else{
        JOptionPane.showMessageDialog(null, "Isi kata kunci pencarian");
    }
}    

Kembali ke bagian Design, klik dua kali pada btHapus, dan isikan dengan

private void btHapusActionPerformed(java.awt.event.ActionEvent evt) {                                        
        
    int barisTerpilih = tbJenisBarang.getSelectedRow();

    if(barisTerpilih >= 0){
        int pilihan = JOptionPane.showConfirmDialog(null, 
            "Yakin hapus?", 
            "Konfirmasi", 
            JOptionPane.YES_NO_OPTION);
    
        if(pilihan == 0){
            
            TableModel model = tbJenisbarang.getModel();
            int id = (int) model.getValueAt(barisTerpilih, 0);
            
            Database db = new Database();
            Connection con = db.getConnection();

            JenisBarang jb = new JenisBarang(con);
            jb.setId(id);
            jb.delete();
        }
    }else{
        JOptionPane.showMessageDialog(null, "Pilih dulu datanya");
    }
    
}   

Oke, sebagian fitur sudah diisi, untuk tombol tambah dan ubah diperlukan AddFrame yang akan dibahas pada part berikutnya.

Praktikum Java Semester 7: Part 1
Praktikum Java Semester 7: Part 2
Praktikum Java Semester 7: Part 3
Praktikum Java Semester 7: Part 4
Praktikum Java Semester 7: Part 5