Você está na página 1de 73

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 Masukkan Nama Anda).


Variable name-nya adalah input_nama. Berfungsi membaca data yang diinputkan, sebelum
dipindah ke JTextField yang di bawah.

b.

Bagian bawah (setelah tulisan Nama Anda 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 Tampilkan Pesan Nama
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 (txt1.getText().equals())
atau
if (txt1.getText().isEmpty())
secara detail, aturan penggunaan pencabangan if akan dibahas pada BAB III, InsyaAllah.
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(S1);
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(S1);
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<10; i++) {
System.out.println( i) ;
}
5.2 Perulangan dengan while
Syntax :
while (kondisi) {
statement
counter
}
Contoh :
Menampilkan tulisan dari 1 sampai 10
int i ;
while (i <=10) {
System.out.println( i) ;

i++ ;
}
5.3 Perulangan dengan do .while
Syntax :
do {
statement
counter
}
while (kondisi)
Contoh :
Perulangan dari 1 sampai 10
int i = 1;
do {
System.out.println(i);
i++;
} while ( i < 10) ;
LATIHAN :
1. Buatlah aplikasi perulangan menampilkan bilangan ganjil dari 1 sampai 10 ke dalam JList
2. Buatlah aplikasi menghitung faktorial suatu angka dengan logika perulangan

BAB VI
AKSES KE DATABASE
Tujuan :
1. Memahami prinsip dasar akses ke database
2. Mampu membuat database dan struktur tabel pada MySQL
3. Mampu membuat aplikasi sederhana input data (Simpan, Edit, Hapus) Tipe Data String
6.1 Konsep Dasar Akses ke Database (MySQL)

Catatan Penting :

1. Untuk menggunakan perintah-perintah mengakses database di atas (Setting Driver,


Connection, Statement, dll) harus menggunakan import :
import java.sql.* ;
- Kode import ini diletakkan di baris paling atas
2.

Kode-kode untuk mengakses database tersebut harus diletakkan di antara try ..catch:
try {

// kode diletakkan di sini

} catch (Exception e) {
e.printStackTrace() ;
}
3. Pada contoh di atas, nama database adalah data_mhs (Tahapan Buat Connection dgn
DriverManager)
4. Pada Netbeans versi 6 ke atas sudah bisa dilakukan penambahan library Connector JavaMySQL.
6.2 Membuat Database dan Struktur Tabel di MySQL
Mengelola MySQL dengan PHPMyAdmin
Lebih praktis jika kita menginstal database MySQL Server yang sudah dikemas jadi satu dengan
PHP dan Apache dalam XAMPP. Kita bisa melakukan administrasi database: menciptakan
database, membuat tabel dan strukturnya, melakukan query langsung ke database, dan
semisalnya dengan phpmyadmin.
PHPMyAdmin merupakan salah satu tool manajemen database MySQL berbasis web, artinya
interaksi pemeliharaan dilakukan dengan oleh klien dengan menggunakan antarmuka browser.
Nah yang perlu anda persiapkan adalah software PHPMyAdmin yang sudah tersedia dalam
XAMPP
Jika XAMPP sudah terinstall dengan baik maka jalankan XAMPP Control Panel dan pastikan
bahwa MySQL, dan Apache dalam status running (berjalan), Jika belum running maka klik tombol
Start di sebelah kiri masing-masing seperti ditunjukkan pada Gambar 6.1 dan Gambar 6.2

Gambar 6.1 XAMPP Control Panel

Gambar 6.2 Apache dan MySql Running XAMPP Control Panel

selanjutnya, buka Web Browser (Mozilla, Google Chrome, atau Internet Explorer, dan
semisalnya) kemudian ketikkan alamat berikut http://localhost/phpmyadmin/

Gambar 6.3 Interface PHPMyAdmin

Dengan PHPMyAdmin kita dapat melakukan :


-

Create dan Drop database


Create, copy, drop dan alter database
Delete, edit dan menambah field
Mengeksekusi pernyataan SQL
Memanage keys pada field
Load file text ke dalam table
dan lain-lain.

Kita akan mencoba beberapa fasilitas yang terdapat dalam phpMyAdmin tersebut.
Create Database
Kita awali dengan membuat (create) Database baru .Misalkan nama database yang akan kita
buat adalah penjualan. Cara membuat database tersebut ditunjukkan pada Gambar 6.4

Gambar 6.4 Membuat database baru

Membuat Tabel
Setelah database berhasil dibuat, maka berikutnya kita akan membuat tabel. Tabel yang dibuat
bernama barang.
Rancangan Field pada Tabel Barang (Sekedar Contoh)
Nama Field

Tipe

Lebar

kd_brg

VarChar

15

nama_brg

VarChar

25

hrg_beli

INT

hrg_jual

INT

stock_min

INT

Stock

INT

Langkah-langkah membuat tabel :


1. Isikan nama tabel dan jumlah field yang akan dibuat, kemudian tekan tombol Go. Nama
tabel: barang, jumlah field (Number of fields): 6

Gambar 6.5 Pengisian Nama Tabel dan Jumlah Field

2. Buat field-field sesuai dengan rancangan field tabel di atas, kemudian tekan tombol Save

Gambar 6.6 Pengaturan Field Tabel

3. Tabel barang sudah berhasil tercipta, dan phpmyadmin akan menunjukkan hasil query SQL
pembuatan tabel

Gambar 6.7 Tabel barang tercipta dalam database penjualan

Menambahkan Field baru


Berikut ini kita akan belajar menambahkan field baru. Di bagian sebelah kiri, pilih database yang
akan digunakan dan klik nama tabel yang fieldnya akan ditambahkan. Pastikan terlebih dahulu
berapa field yang akan ditambahkan. Sebagai contoh latihan kita akan menambahkan 1 field
baru bernama tgl_expired tipe data Varchar, lebar 10.
Langkah-langkah menambahkan field baru:

1. Pada bagian bawah keterangan tabel, ketikkan angka 1 di textbox jumlah field yang akan
ditambahkan (ditunjukkan Gambar 6.8).

Gambar 6.8 Rencana Penambahan 1 Field Baru

Selanjutnya klik tombol Go.


KETERANGAN TAMBAHAN
Di bagian bawah daftar field, selain diminta memasukkan jumlah field juga diminta memilih
posisi field yang akan ditambahkan (dalam bentuk radiobutton). Ada 3 jenis pilihan:
1. At End of Table
Sebagai field paling akhir
2. At Beginning of Table
Sebagai field paling awal
3. After (combobox berisi field yang sudah ada)
akan disisipkan setelah nama field yang dipilih pada combobox.

2. Ketikkan field baru beserta atributnya pada kolom yang telah disediakan, kemudian tekan
tombol Save. Lihat Gambar 6.9

Gambar 6.9 Penambahan Field Baru: tgl_expired

3. Field baru tgl_expired berhasil ditambahkan ke dalam tabel. Phpmyadmin akan


menunjukkan SQL penambahan field tersebut

Gambar 6.10 Field tgl_expired Berhasil Ditambahkan

Mengubah/ Mengedit Field


Adakalanya kita ingin mengubah atribut field yang sudah kita buat. Misalkan mengubah tipe data
atau lebarnya. Berikut ini akan ditunjukkan cara mengubah tipe data field tgl_expired yang
sebelumnya Varchar menjadi Date.
Langkah-langkahnya:
1. Di bagian sebelah kiri, pilih database yang akan digunakan dan klik nama tabel yang
fieldnya akan diubah.
2. Akan ditampilkan daftar field beserta atributnya.
3. Klik (beri tanda centang) ujung paling kiri nama field yang akan diubah, kemudian klik icon
bertanda pensil pada kolom Action

Gambar 6.11 Edit Field

4. Akan muncul tampilan untuk mengedit Field. Ubahlah atribut yang perlu pengubahan,
kemudian klik Save, maka perubahan Field baru akan segera terlihat

Gambar 6.12 Tampilan Sebelum tgl_expired Diedit

Gambar 6.13 Tampilan Setelah tlg_expired Diedit (sebelum disimpan)

Gambar 6.14 Hasil pada tgl_expired setelah diubah

Menghapus Field
Langkah-langkah menghapus field sama dengan pada proses mengubah/ edit Field, hanya saja
icon yang diklik bukan tanda pensil tapi tanda silang merah.

Gambar 6.15 Tanda Silang Merah untuk Menghapus Field

Menambahkan Data Baru


Jika sebelumnya proses penambahan, pengubahan, dan penghapusan terkait dengan struktur
tabel, maka kali ini kita akan belajar cara menambahkan data baru ke dalam tabel. Pada aplikasi
sebenarnya, data tidak langsung diisikan ke dalam tabel, namun melalui From/ Frame.
Namun, proses pengisian data langsung ke dalam tabel kadangkala perlu dilakukan, di antaranya
untuk tahap percobaan/ pengujian proses pencarian data.
Langkah-langkah untuk menambahkan data baru ke dalam tabel:
1. Pilih database dan klik tabel yang akan ditambahkan datanya ( di sebelah kiri).
2. Klik tab Insert di bagian atas, maka akan muncul tampilan pengisian untuk 2 baris

Gambar 6.16

Isikan sesuai Gambar 6.17

Gambar 6.17 Isian Data Baru pada Tabel Barang

Untuk tipe data Date, format isiannya adalah 4 digit tahun, 2 digit bulan, dan 2 digit tanggal yang
dipisahkan oleh separator (bisa berbentuk - atau \ tergantung setting Regional pada Sistem
Operasi). Lebih aman jika pengisian data Date menggunakan Calendar.

Gambar 6.18 Icon Calendar.

3. Jika sudah diisikan data pada 2 baris, kemudian klik tombol Go, sehingga muncul tampilan
seperti pada Gambar 6.19

Gambar 6.19 SQL Hasil Penambahan 2 Baris Baru

4. Untuk menampilkan data pada tabel, klik tab Browse

Gambar 6.20 Tampilan Browse Isi Tabel Barang

6.3 Membuat Aplikasi Sederhana Input Data Mahasiswa


Berikut akan ditunjukkan cara membuat aplikasi sederhana input data mahasiswa (NIM dan
Nama). Berdasarkan penjelasan cara membuat database dan struktur tabel di atas, buatlah
database dan struktur tabel untuk aplikasi input data mahasiswa dengan ketentuan sebagai
berikut:
Database

: data_mhs

Tabel

: mhs
Nama Field

Tipe Data

Lebar

nim

Varchar

nama

Varchar

25

Pembuatan Project dan Pengaturan Form (JFrame)


Langkah-langkah membuatnya :
1. Pilih pada Menu : File > New Project, sehingga muncul tampilan seperti Gambar 6.21

Gambar 6.21 Jendela New Project

2. Pastikan yang terpilih adalah Categories: Java dan Project : Java Application, kemudian
klik Next
3. Isikan Project Name : Proj_DataMHS dan arahkan Project Location pada folder yang anda
inginkan. Hilangkan tanda centang pada Set as Main Project dan Create Main Class

6.22 Pengaturan Nama dan Lokasi Project

Klik tombol Finish, sehingga tercipta Project baru Proj_DataMHS.


4. Tambahkan JFrame Form baru pada project dengan cara: klik kanan project > 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 Palletes Category dengan Swing Control, kemudian klik Finish

Gambar 7.14 Memilih Palettes 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

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
Connection cn = DriverManager.getConnection("jdbc:mysql:" +
"///akses_database","root","");
Statement smt = cn.createStatement();
String sql =
"select * from ipk where nim ='" + txt_nim.getText()+"' " ;
ResultSet rs = smt.executeQuery(sql) ;
if (rs.next()) {
txt_nim.setText(rs.getString("nim"));
txt_nama.setText(rs.getString("nama")) ;

txt_ipk.setText(String.valueOf(rs.getFloat("ipk"))) ;

} else {
JOptionPane.showMessageDialog(this,"Data Tidak Ada","Informasi",
JOptionPane.INFORMATION_MESSAGE);
}
} catch (Exception e) {
e.printStackTrace();
}
}

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();
float ipk1 = Float.parseFloat(txt_ipk.getText()) ;
String sql =
"update ipk set nama ='" + txt_nama.getText() +"', ipk = '"+ipk1+"' where nim='" +
txt_nim.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 ipk where nim='" + txt_nim.getText()+"' " ;
smt.executeUpdate(sql);
Bersih();
} catch (Exception e) {
e.printStackTrace();
}

REFERENSI

Bima, Ifnu. Aplikasi POS Berarsitektur Three Tier Menggunakan Swing, Hibernate, dan
Spring.nulisbuku.com. Jakarta.2011.
Rachmad Hakim & Sutarto, Mastering Java, Elex Media Komputindo, 2009
Suarga. Dasar Pemrograman Komputer dalam Bahasa Java. ANDI Publisher. 2008
Tim Pengembang JENI, JENI 1-6, Depdiknas, 2007

Você também pode gostar