MODUL PRAKTIKUM BHS PEMROGRAMAN IV (JAVA)

73
MODUL PRAKTIKUM BAHASA PEMROGRAMAN IV (JAVA) OLEH : KHARISMAN KHOLID HUDAYA, M.KOM

Transcript of 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 ‘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 Java-

MySQL.

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 8

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 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 ke-

dua.

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