MODUL PRAKTIKUM BHS PEMROGRAMAN IV JAVA

MODUL PRAKTIKUM
BAHASA PEMROGRAMAN IV
(JAVA)

OLEH :
KHARISMAN KHOLID HUDAYA, M.KOM

DAFTAR ISI

BAB I

: LINGKUNGAN PEMROGRAMAN JAVA

BAB II : JTEXTFIELD, JOPTIONPANE DAN KONVERSI DATA
BAB III : PENCABANGAN
BAB IV : JCOMBOBOX, JLIST, DAN JTABLE
BAB V : PERULANGAN
BAB VI : AKSES KE DATABASE
BAB VII : PENGOLAHAN DATA TANGGAL, GAMBAR, DAN NUMERIK DESIMAL

BAB I

LINGKUNGAN PEMROGRAMAN JAVA
Tujuan :
1. Memahami Software yang Dibutuhkan untuk Memprogram Java
2. Memahami Cara Membuat Project
3. Memahami Cara Kerja Sederhana untuk JLabel, JTextField, dan JButton

1.1 SOFTWARE YANG DIBUTUHKAN
Pemrograman desktop berbasis database dengan Java membutuhkan software-software:
1. JDK (Java Development Kit)
Software ini harus diinstal pertama kali. Di dalamnya terdapat Java Runtime Environment
(JRE) untuk menerjemahkan file .java menjadi kode yang dipahami oleh komputer.
2. IDE (Integrated Development Environment)
Banyak terdapat IDE untuk Java. Di antara yang terkenal dan gratis adalah Eclipse dan
Netbeans. Praktikum kita menggunakan Netbeans.
3. DBMS (DataBase Management System)
DBMS yang digunakan bisa berupa Microsoft Access atau MySQL.
4. Connector ke DBMS
Jika yang digunakan adalah DBMS MySQL, dibutuhkan Connector ke MySQL. Ada 2 jenis
connector:
a. Connector dalam bentuk file jar.

File ini yang akan dimasukkan ke dalam library project pada Netbeans.
b. Connector dalam bentuk instalasi executable (ODBC Connector).
File ini diinstal terlebih dahulu, kemudian akan bisa digunakan pada saat menggunakan
ODBC. Contoh: File bernama mysql-connector-odbc-3.51.12-win32
1.2 BERKENALAN DENGAN NETBEANS

Netbeans yang digunakan dalam praktikum ini adalah Netbeans 6.0.1. Secara umum, tidak
ada perbedaan mendasar dengan versi-versi lain sebelum atau setelahnya.
1.2.1 Menjalankan Netbeans

Gambar 1.1
Start Program Netbeans
Tampilan awal splash screen

Gambar 1.2
Splash Screen Netbeans
1.2.2 Area Netbeans

Gambar 1.3
Area Netbeans

Netbeans memiliki area utama dalam 3 bagian:
1. Bagian Kiri : Area Project, Navigator dan File
Bagian ini akan berisi navigasi file-file Java yang akan dirancang.
2. Bagian Tengah
Bagian ini adalah bagian perancangan JFrame (form).
3. Bagian Kanan
Bagian ini adalah bagian Palette dan Properties. Palette berisi object-object yang akan
diletakkan pada JFrame, sedangkan Properties berisi tempat setting nilai untuk tiap
object tersebut.
4. Bagian Bawah
Berupa Output program. Pesan kesalahan atau keberhasilan kompilasi ditunjukkan pada
bagian ini.
Java memiliki banyak window, bisa diaktifkan atau dinonaktifkan melalui menu Window

Gambar 1.4
Menu Window
1.2.3 Memulai Contoh Project
Berikut kita akan membuat project pertama, membuat program yang sangat sederhana.
Project ini akan terdiri dari 1 JFrame, dan 3 object : JLabel, JTextField, dan JButton. Aplikasi yang
dirancang adalah menampilkan pesan : Selamat Mulai Belajar Java. Pesan tersebut ditampilkan

di JTextField, setelah tombol JButton ditekan.
Langkah-langkahnya adalah:
1. Pilih File > New Project

Gambar 1.5
Pilihan File> New Project
selanjutnya akan tampil jendela New Project

Gambar 1.6
Jendela New Project
tekan tombol Next. Isikan pada Project Name : ProjPertama. Arahkan file penyimpanan dengan
menekan tombol Browse di samping Project Location. Silakan arahkan pada direktori dan folder
yang dituju. Hilangkan tanda centang pada Set as Main Project dan Create Main Class.

Gambar 1.7
Jendela Name dan Location
tekan tombol Finish, sehingga Project baru sudah tercipta. Nampak di bagian kiri pada bagian
Project telah ada ProjPertama

Gambar 1.8

Project baru ProjPertama tercipta
2. Klik kanan, pada ProjPertama kemudian pilih New > JFrame Form

Gambar 1.9
Pembuatan JFrame Form baru
muncul tampilan jendela baru Name and Location. Isikan pada Class Name : TampilanSelamat.
Isian Class Name tidak boleh ada spasi atau diawali dengan angka.

Gambar 1.10
Name and Location New JFrame
Klik tombol Finish. Muncul tampilan desain form (JFrame). Ada 2 tab: Source dan Design. Source
untuk menampilkan Coding, sedangkan Design menampilkan desain form.

Gambar 1.11
Desain Form Awal
3. Pada Palette (di sebelah kanan) bagian Swing Controls, pilihlah JLabel, kemudian letakkan
pada JFrame (form).

Gambar 1.12
Label pada Swing Controls


Gambar 1.13
Meletakkan JLabel pada JFrame
4. Ubahlah tulisan pada JLabel dengan cara: klik kanan pada JLabel > Edit Text. Ganti
tulisannya menjadi Tampilan Pesan
5. Pilihlah JTextField pada Palette> Swing Controls, dan letakkan pada JFrame:

Gambar 1.14 Meletakkan JTextField pada JFrame
6. Ubahlah variable name pada JTextField tersebut dengan cara: klik kanan pada TextField,
kemudian pilih Change Variable Name menjadi : txt_pesan.
7. Kosongkan tulisan yang tertera pada JTextField, dengan cara : klik kanan > Edit Text. Hapus
teksnya. JTextField akan mengecil, atur kembali sesuai lebar yang diinginkan.
8. Letakkan JButton ke dalam JFrame:

Gambar 1.15
Meletakkan JButton pada JFrame
9. Ubahlah tulisan pada JButton menjadi : Tampilkan Pesan. Dengan cara: klik kanan pada
JButton > Edit Text

Gambar 1.16

Desain Form Lengkap
10. Buatlah Event pada JButton dengan cara: klik kanan pada JButton > Events > Action >
actionPerformed

Akan dihasilkan code baru:
private void Button1ActionPerformed(java.awt.event.ActionEvent evt)
{
// TODO add your handling code here:
}

11. Isilah Kode berikut:
txt_pesan.setText("Selamat Mulai Belajar Java");
sehingga keseluruhan kode untuk tombol itu adalah:
private void Button1ActionPerformed(java.awt.event.ActionEvent evt)
{
txt_pesan.setText(“Selamat Mulai Belajar Java”);
}
12. Jalankan program dengan perintah: Shift + F6

BAB II

JTEXTFIELD, JOPTIONPANE, dan KONVERSI TIPE DATA
Tujuan :
1. Memahami cara kerja JTextField dan JOptionPane serta menggunakannya dalam aplikasi
sederhana
2. Memahami konversi data String ke Integer dan sebaliknya
2.1 Karakteristik JTextField
JTextField adalah komponen yang bisa digunakan untuk menginputkan data dan untuk menampilkan
data. Data yang bisa dioperasikan oleh JTextField hanyalah yang bertipe String. Method yang
digunakan adalah:
a. Input/ membaca data  getText()
b. Output/ menampilkan data  setText()
c. Mengarahkan fokus kursor pada JTextField  requestFocus()
2.2 Demo JTextField (Input dan Output)
Berikut ini adalah program aplikasi sederhana dengan satu JFrame form untuk membaca data yang
diinputkan pada sebuah JTextField, kemudian setelah ditekan tombol JButton data tersebut ditampilkan
pada JTextField yang lain. Secara umum, langkah-langkah mendesain form, mengubah variable name, dan
mengatur propertiesnya sama dengan seperti yang dijabarkan pada BAB II.
Ada 2 JTextField :
a.


Bagian atas setelah tulisan ‘Masukka Na a A da’).
Variable name-nya adalah input_nama. Berfungsi membaca data yang diinputkan, sebelum
dipindah ke JTextField yang di bawah.

b.

Bagian bawah setelah tulisan ‘Na a A da adalah’).
Variable name-nya adalah tampil_nama. Setelah tombol Proses ditekan, menampilkan tulisan
nama yang sama dengan yang diinputkan di JTextField atas

Gambar 2.1 Sebelum ditekan tombol Proses

Gambar 2.2 Setelah ditekan tombol Proses
Kode untuk Tombol Proses adalah :
private void tmbProsesActionPerformed(java.awt.event.ActionEvent evt) {
tampil_nama.setText(input_nama.getText());
}
Satu baris kode tersebut berfungsi untuk menampilkan tulisan pada JTextField input_nama (bagian atas)
ke JTextField tampil_nama (di bagian bawah).
2.3 Demo JOptionPane

Contoh sebelumnya adalah menginputkan nama pada JTextField dan menampilkan nama yang sama ke
JTextField lain. Berikut ini adalah contoh aplikasi sederhana untuk menunjukkan cara kerja JOptionPane.
JOptionPane berfungsi untuk menampilkan pesan.
Tampilan Hasil Program yang Dirancang

Gambar 2.3 Tampilan Sebelum Tombol Ditekan

Gambar 2.4 Tampilan Pesan
Kode pada Tombol Ta pilka Pesa Na a
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
javax.swing.JOptionPane.showMessageDialog(this,"Nama yang diinputkan : "+input_nama.getText(),
"Pesan",javax.swing.JOptionPane.INFORMATION_MESSAGE);
}
Catatan :
Kode di atas bisa diringkas menjadi :
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
JOptionPane.showMessageDialog(this,"Nama yang diinputkan : "+input_nama.getText(),
"Pesan", JOptionPane.INFORMATION_MESSAGE);
}
Namun, pada bagian paling atas harus ditambahkan kode:

import javax.swing.JOptionPane;
2.4 Konversi Tipe Data
JTextField hanya bisa menampung data bertipe String. Karena itu, jika diperlukan sebuah proses artimatik
seperti penjumlahan, pengurangan, perkalian, atau pembagian yang melibatkan JTextField harus ada
proses konversi tipe data.
Konversi dari String ke Integer
a = Integer.parseInt(b)
pada kode di atas, a bertipe Integer, sedangkan b bertipe String
Konversi dari Integer ke String
a = String.valueOf(b)
pada kode di atas, a bertipe String, sedangkan b bertipe Integer.
Contoh Aplikasi Sederhana Menghitung Luas Persegi Panjang
Aplikasi berikut ini untuk menghitung luas persegi panjang berdasarkan input panjang dan lebar dari
user.

Gambar 2.5 Aplikasi Hitung Luas Persegi Panjang
Kode pada Tombol Hitung Luas
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
int p,l, Luas ;
p = Integer.parseInt(txt_panjang.getText()) ;
l = Integer.parseInt(txt_lebar.getText()) ;
Luas = p * l;
txt_luas.setText(String.valueOf(Luas));
}
CATATAN TAMBAHAN UNTUK JTEXTFIELD
Selain menggunakan tombol, kita juga bisa menggunakan KeyPress Event pada JTextField. Cara membuat
Eventnya adalah aktifkan JTextField, kemudian klik kanan > Events > Key > keyPressed

Gambar 2.6 KeyPress Event

Pada bagian atas, harus ditambahkan kode berikut:

import java.awt.event.KeyEvent;
Kode yang ingin dijalankan setelah tombol Enter ditekan hendaknya ada di dalam lingkup :
if (evt.getKeyCode()==KeyEvent.VK_ENTER) {
…………………………………………………….
}
Untuk mengecek apakah JTextField masih kosong atau tidak bisa menggunakan perintah:

if t t1.getTe t .equals
atau
if (txt1.getText().isEmpty())
secara detail, aturan penggunaan pencabangan if akan dibahas pada BAB III, Ins aAllah….
LATIHAN
1.

Buatlah aplikasi sederhana untuk menghitung usia seseorang berdasarkan tahun lahir yang
diinputkan.

2.

Buatlah aplikasi sederhana untuk menghitung transaksi penjualan sederhana. User menginputkan
jumlah barang dan harga barang kemudian secara otomatis dihitung total yang harus dibayar.
Selanjutnya user memasukkan nominal uang yang dibayarkan, dan secara otomatis ditampilkan
nominal uang kembalian.

BAB III
PENCABANGAN

Tujuan :
Mampu memahami logika dan syntax pencabangan pada Java
3.1 Pencabangan Dua Kemungkinan
Pencabangan 2 kemungkinan
Syntax :
if (kondisi)
statement-1
else
statement-2
Artinya, jika kondisi terpenuhi statement-1 akan dijalankan, namun bila tidak, statement-2 yang
akan dijalankan.
Contoh Aplikasi Penyeleksian Usia berdasarkan : Dewasa atau Belum Dewasa
Skenario
User memasukkan angka usia, kemudian akan ditampilkan pesan: DEWASA, jika lebih dari atau
sama dengan 17, dan akan tampil pesan: BELUM DEWASA jika kurang dari itu.

Gambar 3.1 Aplikasi Usia dengan if dua kemungkinan
JTextField yang digunakan memiliki variable name : txt_usia dan txt_kategori
Kode untuk Tombol Proses
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

int usia = Integer.parseInt(txt_usia.getText());
if (usia>=17 ) {
txt_kategori.setText("DEWASA") ;
} else {
txt_kategori.setText("BELUM DEWASA");
}
}
3.2 Pencabangan Lebih Dari 2 Kemungkinan
Syntax :
if (syarat-1)
statement-1
else if (syarat-2)
statement-2
else if (syarat-3)
statement-3
……………………..
else
statement-n
Contoh Aplikasi Penyeleksian Kategori Usia (BALITA, ANAK-ANAK, REMAJA, DEWASA,
LANSIA)
Sama dengan contoh sebelumnya, hanya saja kategori usia tidak hanya DEWASA dan BELUM
DEWASA, namun lebih banyak dengan ketentuan:
0 – 5 tahun

: BALITA

6-12 tahun

: ANAK-ANAK

13-17 tahun

: REMAJA

18-50 tahun

: DEWASA

Lebih dari 50 tahun

: LANSIA

Gambar 3.2 Aplikasi Penyeleksian Kondisi Lebih Dari 2
Kode untuk Tombol Proses
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
int usia = Integer.parseInt(txt_usia.getText());
if (usia >=50) {
txt_kategori.setText("LANSIA");
} else if (usia >17 ) {
txt_kategori.setText("DEWASA");
} else if (usia >12) {
txt_kategori.setText("REMAJA");
} else if (usia >5) {
txt_kategori.setText("ANAK-ANAK");
} else {
txt_kategori.setText("BALITA");
}
}
LATIHAN :
1. Buatlah aplikasi untuk mengkonversi nilai angka ke nilai huruf dengan ketentuan:
80 - 100

:A

75 – 79

: B+

70 - 74

:B

65 – 69

: C+

60 – 64

:C

55 – 59

: D+

50 – 54

:D

< 50

:E

2. Buat program untuk menentukan gaji seorang karyawan berdasarkan waktu/jam
kerjanya, dengan aturan bahwa batasan jam kerja normal adalah 50 sampai 60
jam/minggu dengan upah Rp.5000/jam. Jika lebih dari batas tersebut, maka kelebihan
perjamnya dibayar Rp 7500/jam. Tetapi jika jam kerjanya kurang dari 50 jam/minggu,
maka dikenakan potongan Rp.2500/jam nya. (Input : jam kerja/minggu, dan output :
total gaji)

BAB IV
JCOMBOBOX, JLIST, DAN JTABLE
Tujuan :
Mampu memahami cara kerja JComboBox, JList, JTable, serta menerapkannya dalam aplikasi
4.1 Kesamaan JComboBox, JList, dan JTable
Ketiga komponen yang dibahas pada bab ini memiliki kesamaan dalam hal:
1. Menggunakan model untuk menampung data.
2. Menampilkan data yang telah ditampung oleh model.

Gambar 4.1 Aliran Data – Model - Komponen

Namun, jenis model untuk masing-masing komponen tersebut berbeda.
Komponen

Jenis Model

JComboBox

DefaultComboBoxModel

JList

DefaultListModel

JTable

DefaultTableModel

Tabel 4.1 Jenis Model pada Tiap Komponen

4.2 JComboBox
IMPORT
import javax.swing.DefaultComboBoxModel;
DEKLARASI MODEL
DefaultComboBoxModel mdlc = new DefaultComboBoxModel() ;
KODE MENAMBAH DAN MENGHAPUS DATA

// Menambah Data
mdlc.addElement( “1 );
jComboBox1.setModel(mdlc) ;
// Menghapus 1 Data
mdl.removeElementAt(i);
jComboBox1.setModel(mdl);
// Menghapus Seluruh Data
mdlc.removeAllElements();
MEMBACA DAN MENAMPILKAN DATA
getSelectedItem().toString()  membaca data dalam String
setSelectedItem()  menampilkan data
4.3 JLIST
IMPORT
import javax.swing.DefaultListModel;
DEKLARASI MODEL
DefaultListModel mdl = new DefaultListModel() ;
KODE MENAMBAH, MENGHAPUS, dan MEMILIH DATA
// menambahkan data
mdl.addElement( “1 );
jList1.setModel(mdl) ;
// Memilih Isi JList yang sesuai
jList1.setSelectedValue(nama, rootPaneCheckingEnabled);
// Menghapus 1 Data
mdl.remove(i) ;
jList1.setModel(mdl);

// Menghapus seluruh Isi List
mdl.removeAllElements();
// Memilih Option Tertentu
JList1.setSelected(nama,rootPaneCheckingEnabled) ;
// Menampilkan isi List yang dipilih
txt_nim.setText(jList1.getSelectedValue().toString());
4.4 JTable
IMPORT
import javax.swing.table.DefaultTableModel;
DEKLARASI MODEL
DefaultTableModel mdl = new DefaultTableModel(kolom,baris) ;
INISIALISASI
int baris = 0 ;
static Object kolom[] = {" NIM ", " Nama

"} ;

DefaultTableModel mdl = new DefaultTableModel(kolom,baris) ;
MENAMBAHKAN DATA DARI JTEXTFIELD
mdl.addRow(new Object [] {txtkd_brg.getText(),txtnama_brg.getText(),txthrg_beli.getText(),
txthrg_jual.getText(),txtstock.getText(),txtstock_min.getText()} ) ;
jTable1.setModel(mdl) ;
MENGHAPUS DATA
baris_grid = jTable1.getSelectedRow() ;
mdl.removeRow(baris_grid) ;
jTable1.setModel(mdl) ;
LATIHAN :
Buatlah suatu aplikasi sederhana input data mahasiswa dengan komponen JComboBox dan JList.

BAB V
PERULANGAN
TUJUAN :
Memahami logika dan syntax perulangan pada Java
5.1 Perulangan dengan for
Syntax :
for (nilai_awal; kondisi; step) {
statement
}
Contoh:
Perulangan dari 1 sampai 10
for (i=1 ; i New >
JFrame Form

Gambar 6.23 Pembuatan JFrame Form Baru

5. Isikan pada Class Name : Input_MHS

Gambar 6.24 Pembuatan Class Input_MHS.java

Klik tombol Finish, sehingga akan muncul tampilan desain form
6. Aturlah tata letak ada form (JFrame) sehingga seperti Gambar 6.25

Gambar 6.25

Komponen

Nama

JTextField

txt_nim

JTextField

txt_nama

JButton

tmbSimpan

JButton

tmbEdit

JButton

tmbHapus

7. Buatlah Event keyPressed di txt_nim (untuk proses pencarian NIM). Klik kanan pada
txt_nim > Events > Key > keyPressed

Gambar 6.26 Pembuatan keyPressed Event pada txt_nim

8. Klik kanan pada bagian Libraries project > Add Library

Gambar 6.27 Add Library Project

9. Pada bagian Library, pilihlah MySQL JDBC Driver, kemudian klik tombol Add Library

Gambar 6.28 Menambahkan Library MySQL JDBC Driver

10. Library MySQL JDBC Driver sudah ditambahkan pada project

Gambar 6.29 MySQL JDBC Driver Sudah Masuk di Library Project

11. Klik tab Source pada perancangan form

Gambar 6.30 Tab Source Input_MHS.java

12. Pada bagian atas, ketikkan kode :
import java.awt.event.KeyEvent;
import java.sql.* ;

Gambar 6.31 Ketik import java.sql.* ;

13. Isikan kode pencarian pada keyPressed Event di txt_nim (langkahnya seperti pada Gambar
6.26 di atas)

private void txt_nimKeyPressed(java.awt.event.KeyEvent evt) {
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","");
// Buat Statement
Statement smt = cn.createStatement();
// Buat ResultSet
ResultSet rs = smt.executeQuery
("SELECT * FROM mhs where nim='"+txt_nim.getText()+"' ");
if (rs.next()) {
txt_nama.setText(rs.getString("nama"));

} else {
// tampilkan pesan
javax.swing.JOptionPane.showMessageDialog(this,"Data Tidak Ada",
"Pesan",javax.swing.JOptionPane.INFORMATION_MESSAGE);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
14. Buatlah Event pada tombol Simpan (Klik kanan tombol Simpan > Events > Action >
actionPerformed)

private void tmbSimpanActionPerformed(java.awt.event.ActionEvent evt) {
try {
Class.forName("com.mysql.jdbc.Driver") ;
Connection cn =
DriverManager.getConnection("jdbc:mysql:"+
"///data_mhs","root","" );
Statement smt = cn.createStatement();
smt.executeUpdate(
"insert into mhs (nim,nama) values" +
" ('"+txt_nim.getText()+"'," +
"'"+txt_nama.getText()+"') ");

txt_nim.setText("");
txt_nama.setText("");
txt_nim.requestFocus();
} catch (Exception e) {
e.printStackTrace();
}
}
15. Buatlah Event pada tombol Edit (Klik kanan tombol Edit > Events > Action >
actionPerformed)
private void tmbEditActionPerformed(java.awt.event.ActionEvent evt) {
try {
Class.forName("com.mysql.jdbc.Driver") ;
Connection cn =
DriverManager.getConnection("jdbc:mysql:"+

"///data_mhs","root","" );
Statement smt = cn.createStatement();
smt.executeUpdate(
"update mhs set nama ='"+txt_nama.getText()+"' " +
"where nim ='"+txt_nim.getText()+"' ") ;
txt_nim.setText("");
txt_nama.setText("");
txt_nim.requestFocus();
} catch (Exception e) {
e.printStackTrace();
}
}
16. Buatlah Event pada tombol Hapus (Klik kanan tombol Edit > Events > Action >
actionPerformed)
private void tmbHapusActionPerformed(java.awt.event.ActionEvent evt) {
try {
Class.forName("com.mysql.jdbc.Driver") ;
Connection cn =
DriverManager.getConnection("jdbc:mysql:"+
"///data_mhs","root","" );
Statement smt = cn.createStatement();
smt.executeUpdate(
" delete from mhs where nim ='"+txt_nim.getText()+"' ") ;
txt_nim.setText("");
txt_nama.setText("");
txt_nim.requestFocus();

} catch (Exception e) {
e.printStackTrace();
}
}
LATIHAN
Buatlah aplikasi sederhana input data buku yang meliputi Kode Buku, Judul, Penulis, dan
Penerbit.

BAB 7
PENGOLAHAN DATA TANGGAL, GAMBAR, DAN NUMERIK DESIMAL
7.1 Pengolahan Data Tanggal dengan JCalendar
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.
Bisa saja bersamaan dengan berlalunya waktu, alamat situs tersebut berubah, namun anda
tetap bisa mencarinya dengan bantuan mesin pencari (search engine) dengan mengetikkan kata
kunci : “download jcalendar.jar”.
Menambahkan JCalendar pada Libraries Netbeans
Langkah-langkah untuk menambahkan JCalendar pada Libraries Netbeans adalah:
1. Pada menu, pilih Tools > Libraries

Gambar 7.1 Menu Tools>Libraries

2. Akan muncul tampilan Library Manager seperti Gambar 7.2

Gambar 7.2 Library Manager

3. Klik tombol New Library… sehingga muncul tampilan New Library. Pada isian Library
Name isikan JCalendar seperti Gambar 7.3

Gambar 7.3 Tampilan New Library

Klik tombol OK
4. Akan muncul kembali tampilan Library Manager, dan Library JCalendar sudah masuk dalam
daftar Libraries (sebelah kiri)

Gambar 7.4 JCalendar sudah masuk dalam Libraries

5. Klik tombol Add Jar/Folder di sebelah kanan, anda akan diminta untuk mengarahkan pada
folder tempat library JCalendar berada (jcalendar-1.3.2)

Gambar 7.5 Browse JAR/Folder

Klik tombol Add JAR/Folder

Gambar 7.6 Alamat jcalendar-1.3.2.jar sudah masuk dalam Library Classpath

Jika diperlukan, tambahkan juga Javadoc untuk referensi tambahan tentang kegunaan dan fungsi
suatu method.
Klik tab Javadoc kemudian klik tombol Add ZIP/Folder

Gambar 7.7 Tab Javadoc dipilih

akan muncul tampilan pencarian folder dan arahkan ke tempat di mana jcalendar-1.3.2-javadoc
berada.

Gambar 7.8 Pemilihan file jcalendar-1.3.2-javadoc.jar

Klik Add ZIP/Folder.
Selanjutnya, klik OK. JCalendar dan dokumentasinya (javadoc) sudah terdaftar dalam libraries.
Menambahkan JDateChooser dalam Palette
Jika kita perhatikan Pallete (pilihan object di sebelah kanan) Netbeans secara asal tidak ada
komponen JDateChooser untuk menangani data tanggal (Date),seperti pada Gambar 10.9.

Gambar 7.9 Palette (Swing Controls) Default Tidak Ada JDateChooser

Kita akan menambahkan JDateChooser (komponen) untuk mengisikan tanggal pada Pallete –
Swing Controls. Langkah-langkahnya:
1. Pilih Menu Tools > Pallete > Swing/AWT Components

Gambar 7.10 Menu Tools>Palette>Swing/AWT Components

2. Akan muncul tampilan Palette Manager

Gambar 7.11 Palette Manager

3. Klik tombol Add from Library sehingga muncul tampilan Install Components to Palette

Gambar 7.12 Tampilan Install Components to Palette

Pilih JCalendar, kemudian klik Next

4. Akan muncul tampilan seperti Gambar 7.13. Pilih JDateChooser, kemudian klik Next

Gambar 7.13 Memilih Komponen JCalendar

5. Pilih Pallete‟s Category dengan Swing Control, kemudian klik Finish

Gambar 7.14 Memilih Palette’s Category

Jika ada tampilan Pallete Manager, klik Close.
Hasilnya, JDateChooser akan menjadi anggota baru dalam Pallete Swing Controls

Gambar 7.15 JDateChooser sudah terdaftar

Aplikasi Input Data dengan Tanggal Lahir

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

Gambar 7.16 Desain JFrame Form

Database dan Tabel
Nama Database

: data_mhs

Nama Tabel

: mhs_tgl_lahir
Nama
Field

Tipe Data

Lebar

nim

VarChar

8

nama

VarChar

25

tgl_lahir

Date

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

Gambar 7.17 Tiga Libraries dalam Project

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(){
txt_nim.setText("");
txt_nama.setText("");
tgl_lahir.setDate(null);
txt_nim.requestFocus();
}

Kode Import (Bagian Atas)
import java.awt.event.KeyEvent;
// untuk KeyPress Event pada txt_nim
import java.sql.* ;
// untuk akses ke database
import java.text.SimpleDateFormat;
// untuk memformat tanggal
import javax.swing.JOptionPane;
// untuk tampilan pesan dengan 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 + "') " ;
smt.executeUpdate(sql);
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);

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()));

Kode pada KeyPress Event txt_nim
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);
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();
}

10.2 Pengolahan Data Gambar
Kadangkala dalam membangun sebuah aplikasi dibutuhkan pengolahan data gambar. Berikut ini
akan ditunjukkan aplikasi sederhana pengolahan database yang juga menyertakan data gambar.
Ada 2 cara menyimpan data gambar ke dalam database:
1. Menyimpan file gambar langsung dalam database, dan tipe field pada database MySQL
adalah BLOB dengan variannya (TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB, dan
semisalnya).
Cara ini menyebabkan file gambar akan terintegrasi langsung dalam database dan tidak
tersimpan dalam folder-folder di harddisk. Kelebihan: data gambar lebih aman tersimpan,
namun kerugiannya, jika data banyak, akan memberatkan kinerja database.
2. Menyimpan alamat (path) penyimpanan gambar dalam harddisk.
Kelebihan : tidak memberatkan database. Kekurangan: jika folder tempat file gambar
terhapus, maka data gambar hilang.
Penulis pernah mengerjakan pembuatan sistem informasi perpustakaan daerah. Awalnya,
penulis menggunakan cara pertama, namun ternyata setelah koleksi buku ribuan, performa
database terasa melambat. Akhirnya penulis berpindah menggunakan cara ke-dua, namun harus
terlebih dahulu membuat aplikasi kecil perantara untuk mengekstrak isi gambar dari database
menjadi file-file yang nantinya akan disimpan dalam folder tertentu.
Contoh aplikasi pengolahan data gambar yang akan kita buat berikut ini menggunakan cara kedua.
Aplikasi Pengolahan Data Gambar

Gambar 7.18 Aplikasi Data Buku dengan Gambar

User memasukkan kode buku, judul, penulis, dan penerbit, kemudian menekan tombol Browse
untuk mencari alamat file gambar di komputer. Setelah file dipilih, otomatis gambar file tersebut
akan ditampilkan di sebelah kanan. Alamat file gambar tersebut ditampilkan pada JTextField
txt_gambar. Contoh alamat gambar:
C:\Gambar\dive_into_python.jpg.
Komponen yang digunakan untuk menampilkan gambar adalah Canvas yang harus diletakkan di
dalam Panel. Pada saat ditekan tombol Browse, akan muncul jendela pencarian file. Jendela
pencarian File tersebut menggunakan komponen JFileChooser. Komponen JFileChooser pada
kasus kita tidak ditampakkan, hanya muncul saat pengkodean.
Selain menggunakan Canvas, bisa saja kita menampilkan gambar dengan JLabel. Namun,
ukuran gambar yang akan ditampilkan adalah fixed (tetap). Jika dimensi gambar lebih besar dari
ukuran JLabel yang dipersiapkan, maka tampilan gambar akan membesar sesuai ukuran
sebenarnya. Hal itu tentunya akan merusak layout pada JFrame secara keseluruhan.
Kelebihannya jika menggunakan JLabel, kodenya lebih sederhana.
Jika menggunakan Canvas, ada banyak kode yang ditambahkan untuk mengatur agar tampilan
gambar sesuai dengan ukuran Canvas pada JFrame. Meski dimensi file gambar sangat besar,
namun ia akan tetap cukup ditampilkan pada Canvas. Kekurangannya adalah: jika ukuran file
gambar lebih kecil dari ukuran Canvas maka ia akan ditampilkan apa adanya, sehingga akan
terlihat ada ruang kosong pada Canvas yang tidak terpenuhi.
Desain JFrame

Gambar 7.19 Desain JFrame Aplikasi dgn gambar

Canvas (canvas1) diletakkan di dalam Panel (panel1) dengan ukuran yang sama. Caranya,
letakkan terlebih dahulu Panel, dan atur ukurannya, selanjutnya letakkanlah Canvas, dan atur
ukurannya seluas ukuran Panel.
Komponen Panel dan Canvas berada pada kelompok AWT pada Palette

Gambar 7.20 Komponen Panel dan Canvas pada AWT

Desain Database dan Tabel
Nama Database

: akses_database

Nama Tabel

: buku_gambar
Field

Type

Collation

kd_buku

Varchar(3)

latin1_swedish_ci

judul

Varchar(25)

latin1_general_ci

penulis

Varchar(25)

latin1_general_ci

penerbit

Varchar(25)

latin1_general_ci

gambar

Varchar(60)

latin1_swedish_ci

Catatan : field gambar Collation-nya harus disetting menjadi latin1_swedish_ci untuk
menyimpan alamat folder.
Kode Import
Pada aplikasi ini diperlukan import beberapa package yang digunakan pada kode. Kode untuk
import :
import java.awt.Canvas;
// Komponen Canvas
import java.awt.Graphics;
// Pengolahan grafik
import java.awt.Image;
// Komponen Image
import java.awt.event.KeyEvent;
// KeyPress Event pada txtkd_buku
import java.io.File;
// Pengolahan file tombol Browse
import java.net.URL;
// Di Class Painter method setImage
import java.sql.* ;
// akses ke database
import javax.swing.JFileChooser;
// pemilihan file tombol Browse
import javax.swing.JOptionPane;
// menampilkan pesan

import javax.swing.filechooser.FileFilter;
// Filter file
import javax.swing.filechooser.FileNameExtensionFilter;
// Filter ekstensi file

Kode-kode yang Ditambahkan
Ada beberapa kode yang ditambahkan selain Event-event pada tombol dan KeyPress pada
txtkd_buku. Kode-kode tambahan tersebut terbagi menjadi 2 :
1. Kode di bawah initComponents()
2. Kode pembuatan Class Painter dan method cetak()
Kode di bawah initComponents()
Kode yang terletak di bawah initComponents() adalah kode yang akan dieksekusi pada saat
pertama kali di jalankan. Kode itu terletak pada Constructor. Constructor adalah pendefinisian
parameter awal pada suatu class. Sebagai contoh, JFrame yang kita buat adalah sebuah class
dengan nama buku_gambar.java. Constructor asalnya adalah sebagai berikut:
public buku_gambar() {
initComponents();
}

Kode constructor biasanya ada di bagian atas setelah kode-kode tentang import.
Secara asal, tidak ada kode di bawah initComponents. Namun, pada aplikasi ini ada kode-kode
tambahan, sehingga kode Constructornya menjadi seperti berikut :
public buku_gambar() {
initComponents();
folder = System.getProperty("user.dir") + File.separator + "images";
//folder = getClass().getResource("").getFile().toString() + "images";
cetak(folder);
new File(folder).mkdir();
}

CATATAN
Ada 2 tempat meletakkan kode yang akan dieksekusi pada saat form pertama kali dijalankan :
1. Diletakkan di bawah initComponents().
2. Buat Event componentShown pada JFrame : Klik kanan pada JFrame > Events >Components
> componentShown
Pada bahasa pemrograman lain, eventnya sama dengan LoadEvent atau ActivateEvent
Kode pembuatan Class Painter dan method cetak()
Kode untuk pembuatan Class Painter dan method cetak diletakkan di bagian bawah kode berikut:
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new buku_gambar().setVisible(true);
}
});
}

Kode yang ditambahkan adalah :
private void cetak(String str) {
System.out.println(str);
}
public class Painter extends Canvas {
Image image;
public void setImage(String file) {
URL url = null;
try {
url = new File(file).toURI().toURL();

} catch (Exception ex) {
cetak(ex.toString());
}
image = getToolkit().getImage(url);
repaint();
}
public void paint(Graphics g) {
try {
double d = image.getHeight(this) / this.getHeight();
double w = image.getWidth(this) / d;
double x = this.getWidth() / 2 - w / 2;
g.drawImage(image, (int) x, 0, (int) (w), this.getHeight(), this);
} catch (Exception e) {
String n = e.toString() ;
}
}
}
private String folder ;

Setting Custom Creation Code pada Properties canvas1
Aturlah properties canvas1 (tab Code) dan isikan kode :
new Painter() ;

pada Custom Creation Code

Gambar 7.21 Custom Creation Code pada canvas1

Method ‘Bersih’
Berfungsi untuk membersihkan tulisan pada JTextField dan mengosongkan gambar pada
canvas1
Kodenya adalah :
private void Bersih(){
txtkd_buku.setText("");
txt_judul.setText("");
txt_penulis.setText("");
txt_penerbit.setText("");
txt_gambar.setText("");
((Painter) canvas1).setImage("");
txtkd_buku.requestFocus();
}

Kode tombol Simpan
try {
// Setting Driver MySQL
Class.forName("com.mysql.jdbc.Driver") ;
// Buat Connection cn

Connection cn = DriverManager.getConnection("jdbc:mysql:" +
"///akses_database","root","");
Statement smt = cn.createStatement();
String g = txt_gambar.getText().replace("\\","\\\\");
txt_gambar.setText(g);
String sql =
"insert into buku_gambar (kd_buku,judul,penulis, penerbit,gambar) values ('" +
txtkd_buku.getText()+"','" + txt_judul.getText() +"','"+txt_penulis.getText()+"',
'"+txt_penerbit.getText()+"','"+txt_gambar.getText()+"') " ;
smt.executeUpdate(sql);
Bersih();
} catch (Exception e) {
e.printStackTrace();
}

Penjelasan Kode Program
Untuk menyimpan alamat folder ke dalam database MySQL, formatnya harus disesuaikan
terlebih dahulu. Sebagai contoh, alamat:
C:\Gambar\dive_into_python.jpg
jika tidak disesuaikan formatnya, di database akan tersimpan sebagai:
C:Gambardive_into_python.jpg (tanda „\‟ akan hilang).
Karena itu dilakukan penyesuaian format pada txt_gambar dengan kode:
String g = txt_gambar.getText().replace("\\","\\\\");
txt_gambar.setText(g);

txt_gambar nantinya adalah sebagai data penyimpan ke field gambar di database MySQL.
Dengan penyesuaian itu, maka di database akan tersimpan dalam format:
C:\Gambar\dive_into_python.jpg
Kode pada tombol Edit

try {
// Setting Driver MySQL
Class.forName("com.mysql.jdbc.Driver") ;
// Buat Connection cn
Connection cn = DriverManager.getConnection("jdbc:mysql:" +
"///akses_database","root","");
Statement smt = cn.createStatement();
String g = txt_gambar.getText().replace("\\","\\\\");
txt_gambar.setText(g);
String sql =
"update buku_gambar set judul = '" + txt_judul.getText() +"', " +
"penulis = '"+txt_penulis.getText()+"', penerbit = " +
"'"+txt_penerbit.getText()+"', gambar ='"+txt_gambar.getText()+"' " +
"where kd_buku='"+txtkd_buku.getText()+"' " ;
smt.executeUpdate(sql);
Bersih();
} catch (Exception e) {
e.printStackTrace();
}

Kode pada tombol Hapus
try {
// Setting Driver MySQL
Class.forName("com.mysql.jdbc.Driver") ;
// Buat Connection cn
Connection cn = DriverManager.getConnection("jdbc:mysql:" +

"///akses_database","root","");
Statement smt = cn.createStatement();
String sql =
"delete from buku_gambar where kd_buku ='"+txtkd_buku.getText()+"'";
smt.executeUpdate(sql);
Bersih();
} catch (Exception e) {
e.printStackTrace();
}

Kode pada tombol Browse
javax.swing.JFileChooser jfc = new JFileChooser();
// pembuatan komponen file chooser (pemilih file)
FileFilter jpgFilter, gifFilter, bothFilter;
jpgFilter = new FileNameExtensionFilter("Gambar JPEG", "jpg");
// memfilter untuk ekstensi jpg
gifFilter = new FileNameExtensionFilter("Gambar GIF", "gif");
// memfilter untuk ekstensi gif
bothFilter = new FileNameExtensionFilter("Gambar JPEG dan GIF", "jpg", "gif");
jfc.setAcceptAllFileFilterUsed(false);
jfc.addChoosableFileFilter(jpgFilter);
jfc.addChoosableFileFilter(gifFilter);
jfc.addChoosableFileFilter(bothFilter);
if (jfc.showOpenDialog(this) == jfc.APPROVE_OPTION)
// Jika tombol Open di-klik
{

String f = jfc.getSelectedFile().toString();
txt_gambar.setText(f);
// tampilkan alamat file di variabel f ke txt_gambar
((Painter) canvas1).setImage(f);
// tampilkan gambar sesuai alamat pada variabel f
}

Kode pada KeyPress Event txtkd_buku
Jika setelah kode buku diisikan dan ditekan tombol Enter, maka akan dilakukan pencarian data
sesuai kode buku itu. Jika ada, data ditampilkan pada JTextField dan gambarnya ditampilkan ke
canvas1
Kodenya adalah :
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:" +
"///akses_database","root","");
Statement smt = cn.createStatement();
String sql =
"select * from buku_gambar where kd_buku ='" + txtkd_buku.getText()+"' " ;
ResultSet rs = smt.executeQuery(sql) ;
if (rs.next()) {
txt_judul.setText(rs.getString("judul"));
txt_penulis.setText(rs.getString("penulis")) ;
txt_penerbit.setText(rs.getString("penerbit")) ;

txt_gambar.setText(rs.getString("gambar"));
((Painter) canvas1).setImage(txt_gambar.getText());
} else {
JOptionPane.showMessageDialog(this,"Data Tidak Ada","Informasi",
JOptionPane.INFORMATION_MESSAGE);
}
} catch (Exception e) {
e.printStackTrace();
}
}

10.3 Pengolahan Data Numerik Desimal
Jika sebelumnya telah ditunjukkan cara penyimpanan data bertipe String (varchar) dan Date,
maka berikut ini akan ditampilkan cara penyimpanan data bertipe float. Tipe data ini bisa
menampung data numerik dengan beberapa angka di belakang koma (dalam setting kita tanda
desimalnya adalah titik).
Aplikasi yang akan dijadikan contoh adalah penyimpanan data mahasiswa yang meliputi : NIM,
Nama, dan IPK. Data IPK tersebut yang akan disimpan dalam database dengan tipe float.

Gambar 7.22 Aplikasi Input Data dengan Numerik Desimal

JTextField pada aplikasi tersebut variabel namenya adalah txt_nim, txt_nama, dan txt_ipk
Desain Database dan Tabel
Nama Database

: akses_database

Nama Tabel

: ipk
Field

Type

nim

VarChar(3)

nama

VarChar(25)

Ipk

Float

Kode Import
import java.awt.event.KeyEvent;
import java.sql.* ;
import javax.swing.JOptionPane;

Pembuatan Method ‘Bersih’
Berfungsi untuk membersihkan isi JTextField dan memfokuskan kursor kembali ke txt_nim.
Kodenya adalah :
private void Bersih() {
txt_nim.setText("");
txt_nama.setText("");
txt_ipk.setText("");
txt_nim.requestFocus();
}

Kode tombol Simpan
try {
// Setting Driver MySQL
Class.forName("com.mysql.jdbc.Driver") ;
// Buat Connection cn
Connection cn = DriverManager.getConnection("jdbc:mysql:" +
"///akses_database","root","");

Statement smt = cn.createStatement();
float ipk1 = Float.parseFloat(txt_ipk.getText()) ;
String sql =
"insert into ipk (nim,nama,ipk) values ('" + txt_nim.getText()+"','" + txt_nama.getText()
+"','"+txt_ipk.getText()+"') " ;
smt.executeUpdate(sql);
Bersih();
} catch (Exception e) {
e.printStackTrace();
}

Kode KeyPress pada txt_nim
if (evt.getKeyCode()==KeyEvent.VK_ENTER) {
try {
// Setting Driver MySQL
Class.forName("com.mysql.jdbc.Driver") ;
// Buat Connection cn
C