Modul Praktikum Bhs Pemrograman IV Java
-
Upload
roolley-abghan -
Category
Documents
-
view
229 -
download
1
Transcript of Modul Praktikum Bhs Pemrograman IV Java
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
1/73
MODUL PRAKTIKUM
BAHASA PEMROGRAMAN IV
(JAVA)
OLEH :
KHARISMAN KHOLID HUDAYA, M.KOM
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
2/73
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
3/73
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
4/73
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
5/73
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 akandiletakkan 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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
6/73
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
7/73
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
8/73
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.
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
9/73
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).
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
10/73
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:
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
11/73
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
12/73
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
13/73
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
14/73
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
15/73
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.
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
16/73
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
17/73
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.
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
18/73
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) {
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
19/73
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
20/73
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
21/73
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)
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
22/73
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
23/73
// 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);
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
24/73
// 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.
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
25/73
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
26/73
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
27/73
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 :
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
28/73
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
29/73
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….
http://localhost/phpmyadmin/http://localhost/phpmyadmin/http://localhost/phpmyadmin/http://localhost/phpmyadmin/
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
30/73
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. Namatabel: barang, jumlah field (Number of fields): 6
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
31/73
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 akanditambahkan (ditunjukkan Gambar 6.8).
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
32/73
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 tekantombol 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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
33/73
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 yangfieldnya 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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
34/73
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
35/73
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 tampilanseperti pada Gambar 6.19
Gambar 6.19 SQL Hasil Penambahan 2 Baris Baru
4. Untuk menampilkan data pada tabel, klik tab Browse
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
36/73
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
37/73
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
38/73
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
39/73
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
40/73
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) {
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
41/73
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)
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
42/73
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:"+
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
43/73
"///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();
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
44/73
} catch (Exception e) {
e.printStackTrace();
}
}
LATIHAN
Buatlah aplikasi sederhana input data buku yang meliputi Kode Buku, Judul, Penulis, dan
Penerbit.
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
45/73
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 andatetap 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
http://flib.sourceforge.net/JCalendar/doc/index.htmlhttp://flib.sourceforge.net/JCalendar/doc/index.htmlhttp://www.ziddu.com/download/13147900/jcalendar.rar.htmlhttp://www.ziddu.com/download/13147900/jcalendar.rar.htmlhttp://www.ziddu.com/download/13147900/jcalendar.rar.htmlhttp://flib.sourceforge.net/JCalendar/doc/index.html
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
46/73
Gambar 7.2 Library Manager
3. Klik tombol New Library… sehingga muncul tampilan New Library. Pada isian LibraryName 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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
47/73
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
48/73
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
49/73
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
50/73
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
51/73
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 segeradiubah, 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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
52/73
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()));
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
53/73
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
54/73
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 {
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
55/73
// 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();
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
56/73
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 MySQLadalah BLOB dengan variannya (TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB, dansemisalnya).
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
57/73
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 dariukuran 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 t idak terpenuhi.
Desain JFrame
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
58/73
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
59/73
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
60/73
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 Constructor nya 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();
}
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
61/73
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();
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
62/73
} 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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
63/73
Gambar 7.21 Custom Creation Code pada canvas1
Method ‘Bersih’
Berfungsi untuk membersihkan tulisan pada JTextField dan mengosongkan gambar padacanvas1
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
64/73
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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
65/73
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:" +
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
66/73
"///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
{
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
67/73
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")) ;
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
68/73
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 bisamenampung data numerik dengan beberapa angka di belakang koma (dalam setting kita tandadesimalnya 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
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
69/73
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","");
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
70/73
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")) ;
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
71/73
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) {
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
72/73
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();
}
-
8/16/2019 Modul Praktikum Bhs Pemrograman IV Java
73/73
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