CRUD pada Java dengan JTable

By | Mei 27, 2018

Pada percobaan kali ini saya membuat aplikasi untuk CRUD *Create, Read, Update, Delete* pada Java dengan menggunakan JTable. untuk editor bisa menggunakan editor GUI seperti netBeans, atau editor text misalnya Notepad++, Sublime, eclipse, dll.

Langsung saja, berikut adalah kode lengkap nya :


import javax.swing.*;
import javax.swing.table.*;
import java.sql.*;
import java.awt.event.*;

public class CRUD extends JFrame implements ActionListener, MouseListener{
//Membentuk Komponen
JButton bt1 = new JButton("Simpan");
JButton bt2 = new JButton("New");
JButton bt3 = new JButton("Edit");
JButton bt4 = new JButton("Hapus");
JButton bt5 = new JButton("Reset");
JLabel lb1 = new JLabel("NIS");
JLabel lb2 = new JLabel("Nama");
JLabel lb3 = new JLabel("Alamat");
JScrollPane sp1 = new JScrollPane();
JTable tabel1 = new JTable();
JTextField tf1 = new JTextField("");
JTextField tf2 = new JTextField("");
JTextField tf3 = new JTextField("");
Connection con = null;
Statement stm;
ResultSet rs;
String sql;
Object obj[][];
int jumlah = 0;

/** Constructor */
public CRUD() {
//Mengatur Form
setSize(435, 400);
setTitle(":: Form Inputan Data ::");
setLayout(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);

lb1.setBounds(10, 30, 40, 14);
add(lb1);

tf1.setBounds(50, 30, 160, 20);
add(tf1);

lb2.setBounds(10, 50, 40, 14);
add(lb2);

tf2.setBounds(50, 50, 160, 20);
add(tf2);

lb3.setBounds(10, 70, 40, 14);
add(lb3);

tf3.setBounds(50, 70, 160, 20);
add(tf3);

bt1.setBounds(10, 120, 90, 23);
bt1.addActionListener(this);
add(bt1);

bt5.setBounds(310, 120, 80, 23);
bt5.addActionListener(this);
add(bt5);

//tabel1.setCellSelectionEnabled(false);
tabel1.setModel(new DefaultTableModel(
new Object [][] {
{null, null, null}
},
new String [] {
"NIS", "Nama", "Alamat"
}
));
tabel1.addMouseListener(this);

sp1.setBounds(10, 150, 380, 160);
sp1.setViewportView(tabel1);
add(sp1);

bt2.setBounds(100, 120, 70, 23);
add(bt2);
bt2.addActionListener(this);

bt3.setBounds(170, 120, 60, 23);
bt3.addActionListener(this);
add(bt3);

bt4.setBounds(230, 120, 80, 23);
bt4.addActionListener(this);
add(bt4);

tampil();

bt1.setEnabled(true);
bt2.setEnabled(false);
bt3.setEnabled(false);
bt4.setEnabled(false);
bt5.setEnabled(true);
}

public void actionPerformed(ActionEvent ev){
String aksi = ev.getActionCommand();
if(aksi.equals("Simpan")){
if(!tf1.getText().equals("") && !tf2.getText().equals("") && !tf3.getText().equals("")){
simpan();
tampil();
bersih();
}else{
JOptionPane.showMessageDialog(null, "Data tidak boleh ada yang kosong !!");
}
}else if(aksi.equals("New")){
bt1.setEnabled(true);
bt2.setEnabled(false);
bt3.setEnabled(false);
bt4.setEnabled(false);
bt5.setEnabled(true);

bersih();
}else if(aksi.equals("Edit")){
if(!tf1.getText().equals("")){
edit();
tampil();
bersih();

bt1.setEnabled(true);
bt2.setEnabled(false);
bt3.setEnabled(false);
bt4.setEnabled(false);
bt5.setEnabled(true);
}
}else if(aksi.equals("Hapus")){
if(tf1.getText().equals("")){
JOptionPane.showMessageDialog(null, "Pilih dulu data yang akan di hapus !!");
}else if(JOptionPane.showConfirmDialog(null, "Apakah mau di hapus?", "Konfirmasi", JOptionPane.OK_CANCEL_OPTION) == 0){
hapus();
tampil();
bersih();
}
}else if(aksi.equals("Reset")){
bersih();
}
}

public void mouseClicked(MouseEvent ev) {
tf1.setText(tabel1.getValueAt(tabel1.getSelectedRow(), 0).toString());
tf2.setText(tabel1.getValueAt(tabel1.getSelectedRow(), 1).toString());
tf3.setText(tabel1.getValueAt(tabel1.getSelectedRow(), 2).toString());

tf1.setEnabled(false);

bt1.setEnabled(false);
bt2.setEnabled(true);
bt3.setEnabled(true);
bt4.setEnabled(true);
bt5.setEnabled(false);
}

public void mouseExited(MouseEvent ev){}
public void mouseEntered(MouseEvent ev){}
public void mouseReleased(MouseEvent ev){}
public void mousePressed(MouseEvent ev){}

public void bersih(){
tf1.setText("");
tf2.setText("");
tf3.setText("");

tf1.setEnabled(true);
}

public void koneksi(){
String db = "crud";
try{
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/"+db, "root", "");
//JOptionPane.showMessageDialog(null, "Koneksi ke db : "+db+" berhasil ");
}catch(Exception ex){
JOptionPane.showMessageDialog(null, "Koneksi gagal karena "+ex.getMessage());
}
}

public void tampil(){
koneksi();
try{
sql = "SELECT count(*) FROM siswa";
stm = con.createStatement();
rs = stm.executeQuery(sql);
while(rs.next()){
jumlah = rs.getInt(1);
}

obj = new Object[jumlah][3];

sql = "SELECT * FROM siswa ORDER BY nis ASC";
stm = con.createStatement();
rs = stm.executeQuery(sql);
int a = 0;
while(rs.next()){
obj[a][0] = rs.getString(1);
obj[a][1] = rs.getString(2);
obj[a][2] = rs.getString(3);
a++;
}
tabel1.setModel(new DefaultTableModel(
obj, new String [] {
"NIS", "Nama", "Alamat"
}
));
}catch(Exception ex){
JOptionPane.showMessageDialog(null, "View gagal karena "+ex.getMessage());
}
}

public void simpan(){
koneksi();
try{
sql = "INSERT INTO siswa VALUES('"+tf1.getText()+"', '"+tf2.getText()+"', '"+tf3.getText()+"')";
stm = con.createStatement();
stm.executeUpdate(sql);
}catch(Exception ex){
JOptionPane.showMessageDialog(null, "Save gagal karena "+ex.getMessage());
}
}

public void edit(){
koneksi();
try{
sql = "UPDATE siswa SET nama = '"+tf2.getText()+"', alamat = '"+tf3.getText()+"' WHERE nis = '"+tf1.getText()+"'";
stm = con.createStatement();
stm.executeUpdate(sql);
}catch(Exception ex){
JOptionPane.showMessageDialog(null, "Gagal update karena "+ex.getMessage());
}
}

public void hapus(){
koneksi();
try{
sql = "DELETE FROM siswa WHERE nis = '"+tf1.getText()+"'";
stm = con.createStatement();
stm.executeUpdate(sql);
}catch(Exception ex){
JOptionPane.showMessageDialog(null, "Gagal delete karena "+ex.getMessage());
}
}

public static void main(String args[]) {
new CRUD().setVisible(true);
}
}

Baris 1 – 4 merupakan import untuk memanggil beberapa method yang dibutuhkan :

import javax.swing.*;
import javax.swing.table.*;
import java.sql.*;
import java.awt.event.*;

Baris 6 merupakan deklarasi class bernama CRUD, baris 7 – 26 untuk deklarasi awal komponen yang akan di tambahkan ke form :

...
public class CRUD extends JFrame implements ActionListener, MouseListener{
//Membentuk Komponen
JButton bt1 = new JButton("Simpan");
JButton bt2 = new JButton("New");
JButton bt3 = new JButton("Edit");
JButton bt4 = new JButton("Hapus");
JButton bt5 = new JButton("Reset");
JLabel lb1 = new JLabel("NIS");
JLabel lb2 = new JLabel("Nama");
JLabel lb3 = new JLabel("Alamat");
JScrollPane sp1 = new JScrollPane();
JTable tabel1 = new JTable();
JTextField tf1 = new JTextField("");
JTextField tf2 = new JTextField("");
JTextField tf3 = new JTextField("");
Connection con = null;
Statement stm;
ResultSet rs;
String sql;
Object obj[][];
int jumlah = 0;
...

Baris 29 – 97 adalah Constructor dari Class CRUD :

.....
/** Constructor */
public CRUD() {
//Mengatur Form
setSize(435, 400);
setTitle(":: Form Inputan Data ::");
setLayout(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);

lb1.setBounds(10, 30, 40, 14);
add(lb1);</pre>
tf1.setBounds(50, 30, 160, 20);
add(tf1);

lb2.setBounds(10, 50, 40, 14);
add(lb2);

tf2.setBounds(50, 50, 160, 20);
add(tf2);

lb3.setBounds(10, 70, 40, 14);
add(lb3);

tf3.setBounds(50, 70, 160, 20);
add(tf3);

bt1.setBounds(10, 120, 90, 23);
bt1.addActionListener(this);
add(bt1);

bt5.setBounds(310, 120, 80, 23);
bt5.addActionListener(this);
add(bt5);

//tabel1.setCellSelectionEnabled(false);
tabel1.setModel(new DefaultTableModel(
new Object [][] {
{null, null, null}
},
new String [] {
"NIS", "Nama", "Alamat"
}
));
tabel1.addMouseListener(this);

sp1.setBounds(10, 150, 380, 160);
sp1.setViewportView(tabel1);
add(sp1);

bt2.setBounds(100, 120, 70, 23);
add(bt2);
bt2.addActionListener(this);

bt3.setBounds(170, 120, 60, 23);
bt3.addActionListener(this);
add(bt3);

bt4.setBounds(230, 120, 80, 23);
bt4.addActionListener(this);
add(bt4);

tampil();

bt1.setEnabled(true);
bt2.setEnabled(false);
bt3.setEnabled(false);
bt4.setEnabled(false);
bt5.setEnabled(true);
}

.....

Baris 99 – 140 merupakan event tombol untuk melakukan Tambah, Baru, Edit, Hapus, Reset :

.....

public void actionPerformed(ActionEvent ev){
String aksi = ev.getActionCommand();
if(aksi.equals("Simpan")){
if(!tf1.getText().equals("") && !tf2.getText().equals("") && !tf3.getText().equals("")){
simpan();
tampil();
bersih();
}else{
JOptionPane.showMessageDialog(null, "Data tidak boleh ada yang kosong !!");
}
}else if(aksi.equals("New")){
bt1.setEnabled(true);
bt2.setEnabled(false);
bt3.setEnabled(false);
bt4.setEnabled(false);
bt5.setEnabled(true);

bersih();
}else if(aksi.equals("Edit")){
if(!tf1.getText().equals("")){
edit();
tampil();
bersih();

bt1.setEnabled(true);
bt2.setEnabled(false);
bt3.setEnabled(false);
bt4.setEnabled(false);
bt5.setEnabled(true);
}
}else if(aksi.equals("Hapus")){
if(tf1.getText().equals("")){
JOptionPane.showMessageDialog(null, "Pilih dulu data yang akan di hapus !!");
}else if(JOptionPane.showConfirmDialog(null, "Apakah mau di hapus?", "Konfirmasi", JOptionPane.OK_CANCEL_OPTION) == 0){
hapus();
tampil();
bersih();
}
}else if(aksi.equals("Reset")){
bersih();
}
}

.....

Berikut adalah source code lengkap nya yang bisa di download :

Download Contoh CRUD Java

pada file tersebut terdapat 2 file antara lain “CRUD.java” dan “crud.sql”. crud.sql merupakan database MySQL silahkan import ke database dengan nama “crud”. cara menjalankanya silahkan compile crud.java kemudian run dengan perintah java.

Tinggalkan Balasan

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