Membuat Form Master Data Barang Dengan Java

Hi,, apa kabar temen-temen semua??. Oke,, seperti yang sudah saya sudah jelaskan pada tutorial sebelumnya yaitu Bagaimana Cara Membuat Form Master Data Kategori Barang dengan Java Netbeans. Kali ini saya akan melanjutkan tutorial Cara Membuat Program Inventory Barang Dengan Java Netbeans. Buat temen-temen yang belum mengikuti sesi pertama silahkan ikuti tutorialnya dari awal yah. Baik, broo. Kali ini kita akan membuat Form Data Barang dimana form ini akan dihubungkan juga dengan Data Kategori barang. Namun pada sesi kali ini kita akan gunakan Form Data Kategori dengan cara mengcopy file .java nya. Pada form master data barang ini kita akan membuat list kategori untuk memilih data kategori dengan JDialog, Kemudian juga untuk tombol ubah akan kita arahkan ke Dialog Ubah Data Barang menggunakan JDialog juga, dan didalam JDialog Ubah Data Barang tersebut juga akan dibuatkan tombol untuk mencari dan memilih Kategori Barang. Jadi pada kasus ini kita akan buat Form Data Barang dan tiga buah JDialog. Untuk hasilnya kurang lebih seperti gambar berikut.

Langsung saja, buka project yang sudah kalian buat kemarin. Pada JInternalFrame data_kategori.java -> klik kanan -> Refactor -> Copy. 

Kemudian pada field New Nama -> rubah namanya menjadi data_barang -> Klik Refactor. Maka JInternalFrame data_barang.java sudah dibuat. Tinggal kita edit sesuai kebutuhan.

Setelah frame data_barang.java berhasil di copy, kita rubah dulu tittle di properties nya. Pastikan design yang terbuka adalah data_barang, Klik kanan pada JInternalFrame -> pada kolom tittle rubah menjadi “Data Barang” -> Close. Maka tittle frame sudah berubah menjadi Data Barang.

Kemudian rubah label Pengolahan Data Kategori menjadi Pengolahan Data Barang, rubah label Kode Kategori menjadi Kode Barang dan Nama Kategori menjadi Nama Barang, selanjutnya rubah variable field Kode Barang menjadi txtKodeBarang, rubah variable field Nama Barang menjadi txtNamaBarang, rubah variable Tabel Data Barang menjadi tabelBarang. Caranya klik kanan di component text_field nya -> Change Variable Name.

Selanjutnya kita akan menambahkan dua Inputan lagi dibawah field Nama Barang yaitu untuk field Kode Kategori dan Jumlah Barang. Pertama tekan dan tahan tombol CTRL -> Klik Label Nama Barang dan Field txtNamaBarang -> kemudian klik kanan di salah satu component itu -> pilih Duplicate. 

Setelah berhasil diduplicate, Rubah Label yang diduplicate menjadi Kode Kategori dan rubah variable text_field nya menjadi txtKodeKategori. 

Kemudian kita akan duplicate lagi label dan text_field nya dari field kode kategori, caranya sama. Setelah berhasil diduplicate rubah label nya menjadi  Jumlah dan rubah variable text_field nya menjadi txtJumlahBarang.

Kemudian kita tambahkan tombol disebelah kanan text_field txtKodeKategori, yang fungsinya untuk menampilkan JDialog list kategori. Rubah ukuran text_field txtKodeKategori seperti gambar di bawah. Ambil JButton dan tempatkan dibawah label Keterangan agar bagian lain tidak berubah ukurannya, kemudian klik kanan di JButton -> Edit Text rubah text nya menjadi kosong -> Change Variable Name nya menjadi btnKodeKategori. 

Selanjutnya sesuaikan ukuran button nya agar bisa muat di samping text_field txtKodeKategori. tempatkan button nya disamping field txtKodeKategori.

Kemudian di btnKodeKategori klik kanan -> Properties -> klik tombol […] -> pilih packages gambar -> pilih file gambar -> klik OK -> kmudian klik Close di dialog Properties.

Baiklah temen-temen, kita sudah berhasil mendesign tampilan Form Data Barang, untuk tampilannya kurang lebih seperti berikut ini. 

Setelah design frame sudah dibuat, kita akan Buat tombol menu item di Form Menu Utama. Silahkan buka Frame menu_utama.java -> pilih tab Source -> tambahkan Source codenya menjadi seperti dibawah ini.

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

private void initForm() {

    data_kategori = new data_kategori();
    data_barang = new data_barang();

} 

Kemudian kita tambahkan menu item di Form Menu Utama, pada form menu_utama.java klik tab Design ->- klik menu Master Data -> klik Data Kategori -> Klik Kanan dan pilih Copy -> Paste -> Menu item berhasil dicopy -> Edit text nya menjadi Data Barang -> Rubah Variable menu item nya menjadi menuBarang -> klik dua kali pada menu item Data Barang untuk membuat Action -> paste potongan kode dibawah ini didalam method -> private void menuBarangActionPerformed. Sehingga kodenya menjadi seperti berikut.

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

Jika sudah kita coba lakukan Test Run apakah menu nya sudah berjalan dan form data barang sudah bisa ditampilkan apa belum -> klik kanan pada form menu_utama.java -> Run File -> pilih menu Master Data -> klik Data Barang. Jika berhasil Form Data Barang Akan Tampil. 

Kita buka tab Source -> Perhatikan pada method private void aktif, dan private void kosong. Karena kita menambahkan Text Field untuk Kode Kategori di form Data Barang. Kita juga tambahkan kondisi untuk text field txtKodeKategori pada method aktif dan kosong Agar field Kode Kategori ini bisa digunakan di form Data Barang.  Buat kodenya menjadi seperti berikut.

private void aktif() {
    txtKodeBarang.setEnabled(true);
    txtNamaBarang.setEnabled(true);
    txtKodeKategori.setEnabled(true);
    txtJumlahBarang.setEnabled(true);
    txtKeterangan.setEnabled(true);
}

protected void kosong() {
    tanggal();
    txtKodeBarang.setText(null);
    txtNamaBarang.setText(null);
    txtKodeKategori.setText(null);
    txtJumlahBarang.setText(null);
    txtKeterangan.setText(null);
} 

Pada method noTable(), tanggal(), lebarKolom() sementara kita biarkan dulu. Kita akan rubah method dataTable(). Karena kita akan membuat data table untuk tabel barang, kita sesuaikan Object dan datanya. Rubah menjadi seperti berikut. 

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

Rubah juga pada method pencarian(String sql). Sesuaikan kodenya menjadi seperti berikut.

public void pencarian(String sql) {
    Object[] Baris = {"No", "Tanggal", "Kode Part", "Nama Part", "Keterangan"};
    tabmode = new DefaultTableModel(null, Baris);
    tabelBarang.setModel(tabmode);
    int brs = tabelBarang.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_part = hasil.getString("kode_part");
            String nama_part = hasil.getString("nama_part");
            String keterangan = hasil.getString("keterangan");
            String[] data = {"", tanggal, kode_part, nama_part, keterangan};
            tabmode.addRow(data);
            noTable();
        }
    } catch (Exception e) {

    }
} 

Setelah method diatas sudah dibuat kita akan fungsikan tombol pencarian untuk Kode Kategori. Pertama buat dulu design frame nya dengan jDialog -> klik kanan di Other Components Menu Navigator -> Add From Palette -> Swing Windows -> Dialog -> buat namanya menjadi “listKategori” dan rubah Tittle nya menja List Data Kategori

Kemudian buat design nya menjadi seperti berikut, dengan ukuran Frame (450, 460). Terdiri dari satu buah Label, text field, dan tabel. dan Tabel nya dibuat menjadi tiga kolom. Kolom 1 untuk Nomor, Kolom 2 untuk Kode Kategori dan kolom 3 untuk Nama Kategori.

Selanjutnya kita definisikan Model Table nya untuk tabel list kategori ini kita definisikan sebagai tabmode2, tambahkan kode setelah baris kode public final connection pada bagian atas kode, menjadi seperti berikut.

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

Kemudian kita buat penomoran untuk list kategori ini dengan membuat method untuk list kategori ini kita namakan methodnya menjadi noTable2(). Tambahkan method berikut ini setelah method noTable()

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

Kemudian kita buat method untuk mengatur lebar kolom list kategori dengan nama lebarKolom2(). Tambahkan kode berikut setelah method lebarKolom().

public void lebarKolom2() {
    TableColumn column2;
    tabelKategori.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
    column2 = tabelKategori.getColumnModel().getColumn(0);
    column2.setPreferredWidth(40);
    column2 = tabelKategori.getColumnModel().getColumn(1);
    column2.setPreferredWidth(150);
    column2 = tabelKategori.getColumnModel().getColumn(2);
    column2.setPreferredWidth(200);
} 

Setelah itu kita buat method data table dengan nama dataTable2() untuk menampilkan data kategori ke dalam JDialog listKategori.  Tambahkan kode berikut setelah method dataTable(). Pada method dataTable2() ini juga kita load method noTable2() dan lebarKolom2() agar ketika data ditampilkan Nomor dan Lebar kolomnya bisa berjalan.

public void dataTable2() {
    Object[] Baris = {"No", "Kode Kategori", "Nama Kategori"};
    tabmode2 = new DefaultTableModel(null, Baris);
    tabelKategori.setModel(tabmode2);
    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 kode_kategori = hasil.getString("kode_kategori");
            String nama_kategori = hasil.getString("nama_kategori");
            String[] data = {"", kode_kategori, nama_kategori};
            tabmode2.addRow(data);
            noTable2();
            lebarKolom2();
        }
    } catch (Exception e) {
    }
} 

Setelah kita membuat method data table List Kategori selanjutnya kita buat method pencarian2(String sql) untuk membuat fungsi pencarian yang akan di implementasikan pada text field txtCariKategori. Tambahkan kode berikut setelah method pencarian(String sql). Pada method ini juga kita load method noTable2() dan lebarKolom2(). sehingga pada saat data dilakukan pencarian penomoran akan menyesuaikan jumlah data yang terecord dalam pencarian.

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

    }
} 

Tahap berikutnya kita kembali membukan internal fram data_barang pada bagian Design kita aktifkan tombol cari (btnKodeKategori) pada Field Kode Kategori  -> klik kanan pada tombol btnKodeKategori -> Events -> Action -> actionPerformed .

Kemudian tambahkan kode berikut didalam btnKodeKodeKategoriActionPerformed. Pada method ini kita panggil method dataTable2() dan lebarKolom2(). kemudian kita tampilkan jDialog List Kategori.

private void btnKodeKategoriActionPerformed(java.awt.event.ActionEvent evt) {                                                
    dataTable2();
    lebarKolom2();
    listKategori.setLocationRelativeTo(this);
    listKategori.setVisible(true);
} 

Setelah kita berhasil menampilkan list data kategori, kita fungsikan field pencariannya. Klik kanan pada field txtCariKategori -> Events -> Key -> KeyTyped. 

Tambahkan kode berikut di dalam eventKeyTyped nya menjadi sperti berikut.

private void txtCariKategoriKeyTyped(java.awt.event.KeyEvent evt) {                                         
    String sqlPencarian2 = "select * from tb_kategori where kode_kategori like '%" + txtCariKategori.getText() + "%' or "
                + "nama_kategori like '%" + txtCariKategori.getText() + "%'";
    pencarian2(sqlPencarian2);
    lebarKolom2();
} 

Setelah data berhasil di tampilkan dan berhasil dilakukan pencarian, selanjutnya kita tambahkan Event Mouse pada tabelKategori sehingga pada saat data yang dicari di klik Otomatis langsung mengisi ke field Kode Kategori yang ada pada Frame Data Barang. Langkahnya klik kanan pada tabelKategori -> Events -> Mouse -> mouseClicked. 

Tambahkan kode berikut sehingga menjadi seperti berikut.

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

    txtKodeKategori.setText(c);
    listKategori.dispose();
    txtJumlahBarang.requestFocus();
} 

Oke,, Selanjutnya kita akan aktifkan tombol Tambah di from Data Barang. Klik Kanan di tombol Tambah -> Events ->Action -> actionPerformed[….]. Kemudian rubah kodenya menjadi seperti ini.

private void btnTambahActionPerformed(java.awt.event.ActionEvent evt) {                                          
if (txtKodeBarang.getText().equals("")) {
    JOptionPane.showMessageDialog(null, "Kode Barang tidak boleh kosong");
} else if (txtNamaBarang.getText().equals("")) {
    JOptionPane.showMessageDialog(null, "Nama Barang tidak boleh kosong");
} else if (txtKodeKategori.getText().equals("")) {
    JOptionPane.showMessageDialog(null, "Kode Kategori tidak boleh kosong");
} else if (txtJumlahBarang.getText().equals("")) {
    JOptionPane.showMessageDialog(null, "Jumlah tidak boleh kosong");
}  else {
    String sql = "insert into tb_barang 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, txtKodeBarang.getText());
        stat.setString(3, txtNamaBarang.getText());
        stat.setString(4, txtKodeKategori.getText());
        stat.setString(5, txtJumlahBarang.getText());
        stat.setString(6, txtKeterangan.getText());
        stat.executeUpdate();
        JOptionPane.showMessageDialog(null, "Data Berhasil Disimpan");
        kosong();
        dataTable();
        lebarKolom();
        txtKodeBarang.requestFocus();
    } catch (SQLException e) {
        JOptionPane.showMessageDialog(null, "Data Gagal Disimpan" + e);
    }
}
} 

6 thoughts on “Membuat Form Master Data Barang Dengan Java

Leave a Reply

Your email address will not be published.