JCalendar adalah library (pustaka) untuk mengolah data tanggal. Library ini secara asal tidak ada dalam Palette bawaan Netbeans. Namun, anda bisa menambahkannya dengan cara mendownloadnya di internet. Beberapa alamat situs tempat mendownload komponen JCalendar di antaranya :
- http://flib.sourceforge.net/JCalendar/doc/index.html
- http://www.ziddu.com/download/13147900/jcalendar.rar.html
Jika mendownload dari ziddu tersebut, anda harus me-rename file dari jcalendar.rar menjadi jcalendar.jar.
Berikut ini adalah contoh aplikasi sederhana input data yang juga meliputi tanggal lahir. Komponen JDateChooser akan digunakan pada aplikasi ini.
User bisa memasukkan data mahasiswa NIM, Nama, beserta tanggal lahirnya serta melakukan proses pencarian, edit, dan hapus data. Ketika NIM diinputkan kemudian ditekan tombol ENTER, maka program akan mencari data NIM tersebut di database dan jika ada akan ditampilkan nama dan tanggal lahirnya. Jika ada data yang akan diubah: nama atau tanggal lahir, bisa segera diubah, kemudian ditekan tombol Edit.
Rancangan JFrame Form
Database dan Tabel
Nama Database : data_mhs
Nama Tabel : mhs_tgl_lahir
Libraries Project
Jangan lupa menyertakan libraries Connector ke MySQL pada Project, sehingga pada project aplikasi ini akan terdapat 3 libraries:
JDK 1.6 (default)
JCalendar : karena penggunaan JDateChooser pada tanggal lahir
MySQL JDBC Driver
Pembuatan Method ‘Bersih’
Pada aplikasi ini kita juga belajar membuat method sendiri yang kita beri nama Bersih. Tujuan method ini adalah untuk membersihkan tulisan pada komponen JTextField dan JDateChooser sehingga siap diisi dengan data baru.
Sisipkan kode berikut dalam kode program kita:
private void Bersih(){
private void Bersih(){
txt_nim.setText("");
txt_nama.setText("");
tgl_lahir.setDate(null);
txt_nim.requestFocus();
}
Kode Import (Bagian Atas)
// untuk KeyPress Event pada txt_nim
import java.awt.event.KeyEvent;
// untuk KeyPress Event pada txt_nim
import java.awt.event.KeyEvent;
// untuk akses ke database
import java.sql.* ;
// untuk memformat tanggal
import java.text.SimpleDateFormat;
// untuk tampilan pesan dengan JOptionPane
import javax.swing.JOptionPane;
Kode pada tombol Simpan
String tampilan ="yyyy-MM-dd" ;
SimpleDateFormat fm = new SimpleDateFormat(tampilan);
String tanggal = String.valueOf(fm.format(tgl_lahir.getDate()));
try {
// Setting Driver MySQL
Class.forName("com.mysql.jdbc.Driver") ;
// Buat Connection cn Connection cn = DriverManager.getConnection("jdbc:mysql:" + "///data_mhs","root","");
Statement smt = cn.createStatement();
String sql = "insert into mhs_tgl_lahir (nim,nama,tgl_lahir) values " + "
('" + txt_nim.getText()+"','" + txt_nama.getText() +"'," + " '" + tanggal + "') " ;
('" + txt_nim.getText()+"','" + txt_nama.getText() +"'," + " '" + tanggal + "') " ;
smt.executeUpdate(sql);
Bersih();
} catch (Exception e) {
e.printStackTrace();
}
Bersih();
} catch (Exception e) {
e.printStackTrace();
}
Penjelasan Kode :
Format penyimpanan tanggal di MySQL adalah : 4 digit tahun – 2 digit bulan-2 digit tanggal. Karena itu, dibuat format terlebih dahulu dengan kode :
String tampilan ="yyyy-MM-dd" ; SimpleDateFormat fm = new SimpleDateFormat(tampilan);
String tampilan ="yyyy-MM-dd" ; SimpleDateFormat fm = new SimpleDateFormat(tampilan);
Variabel tanggal adalah variabel untuk menyimpan ke field tgl_lahir di MySQL. Pengisian data variabel tanggal dengan kode:
String tanggal = String.valueOf(fm.format(tgl_lahir.getDate()));
String tanggal = String.valueOf(fm.format(tgl_lahir.getDate()));
Kode pada KeyPress Event txt_nim
if (evt.getKeyCode()==KeyEvent.VK_ENTER) {
if (evt.getKeyCode()==KeyEvent.VK_ENTER) {
try {
// Setting Driver MySQL
Class.forName("com.mysql.jdbc.Driver") ;
// Buat Connection cn
Connection cn = DriverManager.getConnection("jdbc:mysql:" + "///data_mhs","root","");
Statement smt = cn.createStatement();
String sql = "select * from mhs_tgl_lahir where nim ='" + txt_nim.getText()+"' " ;
ResultSet rs = smt.executeQuery(sql);
if (rs.next()) {
txt_nama.setText(rs.getString("nama"));
tgl_lahir.setDate(rs.getDate("tgl_lahir"));
} else {
JOptionPane.showMessageDialog(this,"Data Tidak Ada","Informasi",JOptionPane.INFORMATION_MESSAGE);
JOptionPane.showMessageDialog(this,"Data Tidak Ada","Informasi",JOptionPane.INFORMATION_MESSAGE);
Bersih() ; }
} catch (Exception e) {
e.printStackTrace();
}
}
Kode pada tombol Edit
String tampilan ="yyyy-MM-dd" ;
SimpleDateFormat fm = new SimpleDateFormat(tampilan);
String tanggal = String.valueOf(fm.format(tgl_lahir.getDate()));
try {
// Setting Driver MySQL
Class.forName("com.mysql.jdbc.Driver") ;
// Buat Connection cn
Connection cn = DriverManager.getConnection("jdbc:mysql:" + "///data_mhs","root","");
Statement smt = cn.createStatement();
String sql = "update mhs_tgl_lahir set nama = '" + txt_nama.getText() +"', "
+ " tgl_lahir = '" + tanggal + "' where nim = '" + txt_nim.getText()+"'";
smt.executeUpdate(sql);
Bersih();
} catch (Exception e) {
e.printStackTrace();
}
Penjelasan :
Mekanisme edit data adalah: user memasukkan NIM mahasiswa yang akan diedit datanya, kemudian menekan tombol Enter. Selanjutnya, data nama atau tanggal diubah sesuai dengan yang diinginkan. Kemudian, ditekan tombol Edit.
Kode pada tombol Hapus
try {
// Setting Driver MySQL
Class.forName("com.mysql.jdbc.Driver") ;
// Buat Connection cn
Connection cn = DriverManager.getConnection("jdbc:mysql:" + "///data_mhs","root","");
Statement smt = cn.createStatement();
String sql = "delete from mhs_tgl_lahir where nim = '" + txt_nim.getText()+"'";
smt.executeUpdate(sql);
Bersih();
} catch (Exception e) {
e.printStackTrace();
}
Hasil Program
NB : Tampilan sesuai dengan keinginan kamu :)