RAMADHANI,S.KOM
PEMOGRAMAN JAVA VISUAL
BERBASIS DATABASE
JILID I
POLITEKNIK ACEH
2014
TINGKAT PEMULA
HALAMAN PENGESAHAN
1. Identitas Buku/Bahan Ajar
a. Judul Buku/Bahan Ajar : Pemograman Java Visual Berbasis Database Jilid I
b. Matakuliah/Semester : Teori Pemograman Java Visual
c. SKS (T/P)/Jam (T/P) : 3 (T) / 54 jam (T)
d. Program Studi : Teknik Informatika
e. Kode Matakuliah : KP393
2. Penulis
a. Nama : Ramadhani,S.Kom
b. NRP : 220120901
c. NIDN / NUPN : 9943000068
d. Jabatan Fungsional : -
e. Program Studi : Teknik Informatika
f. Pusat Penelitian : UPM Politeknik Aceh
g. Alamat Institusi : Jl. Tanggul, Desa Pango Raya, Kec. Ulee Kareng,
Kotamadya Banda Aceh 23119 NAD
h. Telpon/Faks/E-mail : 0651-7415005 / 0651- 7415505 /
ramadhani@politeknikaceh.ac.id
Banda Aceh, 03 Januari 2014
Mengetahui,
Ketua Program Studi, Penulis,
Safwan, S.T Ramadhani,S.Kom
NRP. 220100707 NRP. 220120901
Menyetujui,
Wakil Direktur Bidang Akademik
Didiek Hari Nugroho, S.T
NRP. 120110105
Ramadhani, S.Kom
i
KATA PENGANTAR
Puji Syukur atas ke hadirat Allah SWT yang telah melimpahkan rahmat – Nya
kepada penulis sehingga penulis dapat menyelesaikan buku yang berjudul
“Pemograman Java Visual Berbasis Database Jilid 1” ini dengan baik. Saat ini
pemograman java sedang naik daun dimana hampir seluruh aspek teknologi sudah
menggunakan java, baik itu aplikasi desktop, mobile dan juga web. Buku ini dibagi
menjadi dua jilid, yang mana buku jilid 1 ini lebih dikhusus kan untuk para pemula
dalam mempelajari pemograman java visual. Sedangkan buku jilid kedua dikhususkan
untuk tingkat lanjut yanag ingin mendalami sebagai programer.
Buku ini menyajikan cara pembuatan aplikasi dasar pada teknologi berbasis
dekstop serta membahas bagaimana kode program digunakan. Buku ini sangat cocok
untuk mahasiswa yang merupakan para pemula yang ingin mempelajari java visual.
Penulis mengucapkan terima kasih kepada semua pihak yang telah memberi
masukan dan koreksi yang sangat bermakna bagi penyempurnaan buku ini. Semoga
Allah membalas semuanya dengan kebaikan yang berlipat ganda.
Banda Aceh, 3 Februari 2014
Ramadhani, S.Kom
NRP. 220120901
Ramadhani, S.Kom
ii
DAFTAR ISI
KATA PENGANTAR....................................................................................................... i
DAFTAR ISI .................................................................................................................... ii
DAFTAR GAMBAR....................................................................................................... iv
DAFTAR TABEL ............................................................................................................ v
BAB 1 KOMPONEN – KOMPONEN VISUAL JAVA.................................................. 1
A. TUJUAN............................................................................................................ 1
B. PRASYARAT.................................................................................................... 1
C. PENGANTAR : ................................................................................................. 1
1.1 JFrame............................................................................................................ 1
1.2 JLabel ............................................................................................................. 3
1.3 JTextField....................................................................................................... 5
1.4 JButton ........................................................................................................... 7
1.5 JRadioButton.................................................................................................. 8
1.6 JComboBox.................................................................................................. 11
1.7 JTextArea ..................................................................................................... 13
1.8 JCheckBox ................................................................................................... 15
1.9 JTable ........................................................................................................... 17
1.10 JScrollPane ............................................................................................... 20
1.11 JMenu ....................................................................................................... 22
1.12 JInternalFrame.......................................................................................... 27
1.13 JPasswordField......................................................................................... 28
1.14 Border (Bingkai)....................................................................................... 30
1.15 JPopupMenu............................................................................................. 33
D. TUGAS ............................................................................................................ 35
BAB II EVENT HANDLER.......................................................................................... 36
A. TUJUAN :........................................................................................................ 36
B. PRASYARAT.................................................................................................. 36
C. PENGANTAR ................................................................................................. 36
2.1 ActionListener.............................................................................................. 37
2.2 KeyListener .................................................................................................. 40
2.3 MouseListener.............................................................................................. 44
2.4 MouseMotionListener .................................................................................. 48
2.5 ItemListener ................................................................................................. 50
2.6 ChangeListener............................................................................................. 53
Ramadhani, S.Kom
iii
D. TUGAS ............................................................................................................ 56
BAB III PENGATURAN LAYOUT ............................................................................. 57
A. TUJUAN:......................................................................................................... 57
B. PRASYARAT.................................................................................................. 57
C. PENGANTAR : ............................................................................................... 57
3.1 FlowLayout .................................................................................................. 58
3.2 BorderLayout ............................................................................................... 60
3.3 GridLayout ................................................................................................... 62
3.4 NoneLayout.................................................................................................. 64
3.5 JPanel ........................................................................................................... 65
BAB IV PEMROGRAMAN GRAFIS........................................................................... 70
A. TUJUAN:......................................................................................................... 70
B. PRASYARAT.................................................................................................. 70
C. PENGANTAR ................................................................................................. 70
4.1 Dasar Pemrograman Grafis.......................................................................... 70
4.2 Bekerja Dengan Citra................................................................................... 81
D. TUGAS ............................................................................................................ 87
DAFTAR PUSTAKA..................................................................................................... 88
Ramadhani, S.Kom
iv
DAFTAR GAMBAR
Gambar 1 Contoh JFrame................................................................................................ 2
Gambar 2 Contoh Jlabel ................................................................................................... 3
Gambar 3 Contoh JTextField ........................................................................................... 5
Gambar 4 Contoh JButton................................................................................................ 7
Gambar 5 Contoh JRadioButton....................................................................................... 8
Gambar 6 Contoh JComboBox ...................................................................................... 11
Gambar 7 Contoh JTextArea.......................................................................................... 14
Gambar 8 Contoh JCheckBox........................................................................................ 15
Gambar 9 Contoh JTable................................................................................................ 17
Gambar 10 Contoh JTable Manual................................................................................. 18
Gambar 11 Contoh JscrollPane ...................................................................................... 20
Gambar 12 Contoh JMenu.............................................................................................. 23
Gambar 13 Contoh JMenu Gabungan Komponen ......................................................... 24
Gambar 14 Contoh JPasswordField ............................................................................... 28
Gambar 15 Contoh Border ............................................................................................. 31
Gambar 16 Contoh JPopupMenu ................................................................................... 33
Gambar 17 Contoh ActionListener pada JButton .......................................................... 38
Gambar 18 Contoh KeyListener pada JTextField.......................................................... 41
Gambar 19 Contoh MouseListener pada JLabel ............................................................ 45
Gambar 20 Contoh MouseMotionListener..................................................................... 49
Gambar 21. Contoh ItemListener................................................................................... 51
Gambar 22. Contoh ChangeListener .............................................................................. 54
Gambar 23 Contoh FlowLayout..................................................................................... 60
Gambar 24. Contoh BorderLayout................................................................................. 62
Gambar 25. Contoh GridLayout..................................................................................... 63
Gambar 26. Contoh NoneLayout ................................................................................... 65
Gambar 27. Contoh JPanel............................................................................................. 66
Gambar 28. Contoh gabungan JPanel dan Border Layout. ............................................ 68
Gambar 29. Contoh gabungan JPanel dan BorderLayout dan GridLayout.................... 69
Gambar 30. Contoh Kelas Kanvas ................................................................................. 71
Gambar 31. Contoh Objek Kanvas................................................................................. 74
Gambar 32. Contoh penggunaan kelas Kanvas sinus dan cosinus................................. 76
Gambar 33. Contoh pergerakan kelas Kanvas sinus dan cosinus................................... 80
Gambar 34. Contoh Menampilkan Citra ........................................................................ 82
Gambar 35. Contoh gambar kue ulang tahun................................................................. 84
Gambar 36. Contoh Gambar Komputer ......................................................................... 87
Ramadhani, S.Kom
v
DAFTAR TABEL
Tabel 1 Macam - Macam Event ..................................................................................... 36
Tabel 2 Macam - Macam Listener.................................................................................. 37
Tabel 3 Method KeyListener.......................................................................................... 40
Tabel 4 Method MouseListener...................................................................................... 44
Tabel 5 Method MouseMotionListener.......................................................................... 48
Tabel 6 Method ItemListener ......................................................................................... 50
Tabel 7 Method ChangeListener .................................................................................... 54
Tabel 8 Method FlowLayout.......................................................................................... 58
Tabel 9 Method BorderLayout ....................................................................................... 60
Tabel 10. Method GridLayout........................................................................................ 62
Tabel 11. Method Grafis................................................................................................. 73
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
1
BAB I
KOMPONEN – KOMPONEN VISUAL JAVA
A. TUJUAN
1. Mahasiswa dapat membangun komponen visual menggunakan bahasa Java.
2. Mahasiswa dapat menerapkan komponen-komponen visual tersebut ke dalam
contoh-contoh sederhana
B. PRASYARAT
1. Algoritma dan Pemograman
2. Pemograman Berorientasi Objek
C. PENGANTAR :
Java Swing Merupakan sekumpulan kelas-kelas yang digunakan untuk
mengembangkan aplikasi berbasis GUI (Graphical User Interface). Java Swing
merupakan versi peningkatan dari AWT (Abstract Window Toolkit) Kelas – kelas
komponen GUI dalam Java Swing biasa diawali dengan hurup J, Kelas – kelas Java
Swing terdapat pada package import javax.swing.*
Komponen visual adalah berbagai objek yang digunakan dalam membangun
program berbasis windows. Dengan komponen-komponen ini diharapkan pengguna
akhir dapat menggunakan program yang kita buat dengan lebih mudah dan nyaman.
Dalam bab ini tidak semua komponen visual dibahas, hanya komponen yang dianggap
sering digunakan saja yang ditampilkan sebagai bahan eksplorasi lebih lanjut bagi anda
terhadap berbagai komponen java.
1.1 JFrame
JFrame adalah komponen dasar dalam pemrograman visual dengan java. Dalam
frame inilah komponen lain diletakkan. Berikut adalah kode program yang diperlukan
untuk membuat sebuah frame kosong. Program ini menggunakan constructor tunggal
tanpa argumen yang digunakan untuk menampung properti frame yang dikehendaki.
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
2
Contoh penggunaan JFrame adalah:
Gambar 1 Contoh JFrame
 Berikut ini coding contoh penggunaan JFrame
import javax.swing.*;
class Aplikasi_Frame extends JFrame
{
Aplikasi_Frame()
{
setTitle("Aplikasi JFrame");
setLocation (300,100);
setSize (300,150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable (false);
setVisible(true);
}
public static void main (String args[])
{
Aplikasi_Frame AF=new Aplikasi_Frame();
} }
 Penjelasan koding program.
Coding Keterangan
import javax.swing.*; Pernyataaan ini merupakan perintah yang digunakan untuk
menyiapkan class-class yang diperlukan oleh program kita.
Komponen visual yang kita perlukan dalam pemrogaman visual
berada dalam paket import javax.swing.*;
class Aplikasi_Frame
extends JFrame
Pernyataan ini menunjukkan bahwa class Aplikasi_Frame
merupakan turunan dari class JFrame yang berarti bahwa class
ini memiliki atribut-atribut dari class JFrame.
Aplikasi_Frame() { } Merupakan constructor bagi class Aplikasi_Frame sehingga
pada saat kita membentuk sebuah obyek, semua kode di
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
3
dalamnya akan dilaksanakan
setTitle ("Aplikasi JFrame"); Digunakan untuk membuat judul frame.
setLocation (300,100); Digunakan untuk menentukan posisi frame di layar monitor
dimana 300 menunjukkan posisi x dan 100 menunjukkan posisi
y
setSize (300,150); Digunakan untuk menentukan besar frame dimana 300
menunjukkan lebar frame dan 150 menunjukkan tinggi frame.
setDefaultCloseOperation
(JFrame.EXIT_ON_CLOSE)
Digunakan untuk mengakhiri jalannya program bila frame
ditutup. Bila perintah tersebut tidak ada, maka penutupan frame
tidak akan menghentikan jalannya program.
setResizable (false); Digunakan untuk menutup tombol maxi
setVisible(true) Digunakan untuk menampilkan frame
public static void main
(String args[])
Merupakan metode utama agar program dapat dijalankan
Aplikasi_Frame AF = new
Aplikasi_Frame ();
Membentuk obyek dari class Aplikasi_Frame, yang secara
otomatis menjalankan constructor yang berisi sintaks-sintaks
untuk membuat frame kosong.
1.2 JLabel
JLabel adalah komponen yang digunakan untuk membuat tulisan atau gambar
pada frame sebagai suatu informasi untuk pengguna program. Untuk menggunakan
JLabel, sebagai suatu class maka sebelumnya perlu dibuat suatu obyek menggunakan
class JLabel. Adapun sintax JLabel adalah :
JLabel label = new JLabel (“NIM”);
Contoh penggunaan JLabel adalah:
Gambar 2 Contoh Jlabel
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
4
 Berikut ini coding contoh penggunaan JLabel
import javax.swing.*;
class Aplikasi_Label extends JFrame
{
JLabel Lnim = new JLabel ("NIM");
Aplikasi_Label()
{
setTitle("Aplikasi JLabel");
setLocation (300,100);
setSize (300,150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void KomponenVisual()
{
getContentPane().setLayout(null);
getContentPane().add(Lnim);
Lnim.setBounds(10,10,70,20);
setVisible(true);
}
public static void main (String args[])
{
Aplikasi_Label AL = new Aplikasi_Label();
AL.KomponenVisual();
} }
 Penjelasan koding program.
Coding Keterangan
JLabel Lnim = new JLabel
("NIM");
Merupakan cara untuk membentuk obyek JLabel yang kita
beri nama Lnim dan bertuliskan “NIM“. Obyek ini akan
kita gunakan sebagai informasi kepada user untuk
memasukkan NIM mahasiswa.
method void komponenVisual () digunakan untuk meletakkan berbagai komponen visual
yang kita gunakan dalam program.
getContentPane().setLayout(null) Sintaks di atas digunakan untuk mengatur tata letak
komponen dalam frame, dimana layout null berarti bahwa
koordinat tiap komponen dalam frame harus ditentukan
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
5
sendiri posisinya oleh programmer.
getContentPane().add(Lnim) adalah perintah yang digunakan untuk menempelkan obyek
JLabel ke frame.
ibnim.setBounds(10,10,70,20); perintah ini berhubungan dengan
getContentPane().setLayout(null) yang berguna untuk
mengatur posisi dari komponen JLabel yang bernama
Lnim. Pengaturan posisi dilakukan dengan menggunakan
setBounds(10,10,70,20) dimana agrumen pertama
menunjukkan koordinat x dari ujung kiri atas obyek,
argumen kedua menunjukkan koordinat y dari ujung kiri
atas obyek, argumen ketiga menunjukkan lebar dari obyek
dan argumen keempat menunjukkan tinggi dari obyek.
setVisible(true); digunakan untuk menampilkan frame berserta semua obyek
yang ada di dalamnya. Pada program sebelumnya method
ini kita letakkan pada constructor karena kita belum
membuat method komponenVisual(). Pada main, kita perlu
memanggil method komponenVisual() agar semua semua
pengaturan yang telah kita lakukan dapat tampil ke layar,
dengan cara: AL.komponenVisual();
1.3 JTextField
JTextField adalah komponen yang digunakan untuk memasukkan sebaris
informasi yang selanjutnya dapat digunakan sebagai input bagi proses selanjutnya.
Pembuatan JTextfield dilakukan dengan membuat obyek berdasarkan class JTextField.
Adapun sintax JTextField adalah :
JTextField text = new JTextField (20);
Contoh penggunaan JTextField adalah:
Gambar 3 Contoh JTextField
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
6
 Berikut ini coding contoh penggunaan JTextField
import javax.swing.*;
class Aplikasi_text_field extends JFrame
{
JLabel ibnim = new JLabel ("NIM");
JTextField txnim = new JTextField (20);
Aplikasi_text_field()
{
setTitle("Aplikasi JTextField");
setLocation (300,100);
setSize (300,150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void KomponenVisual()
{
getContentPane().setLayout(null);
getContentPane().add(ibnim);
ibnim.setBounds(10,10,70,20);
getContentPane().add(txnim);
txnim.setBounds(75,10,100,20);
setVisible(true);
}
public static void main (String args[])
{
Aplikasi_text_field ATF=new Aplikasi_text_field();
ATF.KomponenVisual();
} }
 Penjelasan koding program.
Coding Keterangan
JTextField txnim = new
JTextField (20);
Adalah membentuk obyek dari komponen JTextField yang
akan digunakan untuk menampung nilai dari NIM
mahasiswa.
getContentPane().add(txnim);
txnim.setBounds(75,10,100,20);
adalah perintah untuk menempelkan dan mengatur posisi
txnim pada frame.
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
7
1.4 JButton
JButton adalah komponen berbentuk tombol. Komponen ini banyak digunakan
sebagai eksekusi terhadap tindakan yang diinginkan. Pada aplikasi komputer, biasanya
dibutuhkan tombol untuk mengeksekusi sebuah perintah. Adapun sintax JButton adalah
:
JButton tombol = new JButton (“Cari”);
Contoh penggunaan JButton adalah:
Gambar 4 Contoh JButton
 Berikut ini coding contoh penggunaan JButton
import javax.swing.*;
class Aplikasi_Button extends JFrame
{
JLabel ibnim = new JLabel ("NIM");
JTextField txnim = new JTextField (20);
JButton tblcari = new JButton ("CARI");
Aplikasi_Button()
{
setTitle("Aplikasi JButton");
setLocation (300,100);
setSize (300,150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void KomponenVisual()
{
getContentPane().setLayout(null);
getContentPane().add(ibnim);
ibnim.setBounds(10,10,70,20);
getContentPane().add(txnim);
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
8
txnim.setBounds(75,10,100,20);
getContentPane().add(tblcari);
tblcari.setBounds(180,10,95,20);
setVisible(true);
}
public static void main (String args[])
{
Aplikasi_Button AB=new Aplikasi_Button();
AB.KomponenVisual(); } }
 Penjelasan koding program.
Coding Keterangan
JButton tblcari = new JButton
("Cari");
Adalah membentuk obyek dari komponen JButton
getContentPane().add(tblcari);
tblcari.setBounds(180,10,95,20);
adalah perintah untuk menempelkan dan mengatur posisi
tblcari pada frame.
1.5 JRadioButton
JRadioButton adalah komponen yang digunakan ketika pengguna perlu memilih
satu diantara beberapa pilihan. Adapun sintax JRadioButton adalah :
JRadioButton kelasA = new JRadioButton ("A");
JRadioButton kelasB = new JRadioButton ("B");
JRadioButton kelasC = new JRadioButton ("C");
ButtonGroup grupkelas = new ButtonGroup();
Contoh penggunaan JRadioButton adalah:
Gambar 5 Contoh JRadioButton
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
9
 Berikut ini coding contoh penggunaan JRadioButton
import javax.swing.*;
class Aplikasi_Radio_Button extends JFrame
{
JLabel ibnim = new JLabel ("NIM");
JTextField txnim = new JTextField (20);
JLabel ibnama = new JLabel ("Nama");
JTextField txnama = new JTextField (20);
JLabel ibkelas = new JLabel ("Kelas");
JRadioButton kelasA = new JRadioButton ("A");
JRadioButton kelasB = new JRadioButton ("B");
JRadioButton kelasC = new JRadioButton ("C");
ButtonGroup grupkelas = new ButtonGroup();
JButton tblcari = new JButton (new ImageIcon ("cari.jpg"));
Aplikasi_Radio_Button()
{
setTitle("Aplikasi JRadio Button");
setLocation (300,100);
setSize (300,150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void KomponenVisual()
{
getContentPane().setLayout(null);
getContentPane().add(ibnim);
ibnim.setBounds(10,10,70,20);
getContentPane().add(txnim);
txnim.setBounds(75,10,100,20);
getContentPane().add(tblcari);
tblcari.setBounds(180,10,95,50);
getContentPane().add(ibnama);
ibnama.setBounds(10,35,70,20);
getContentPane().add(txnama);
txnama.setBounds(75,35,100,20);
getContentPane().add(ibkelas);
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
10
ibkelas.setBounds(10,60,100,20);
getContentPane().add(kelasA);
kelasA.setBounds(75,60,50,20);
getContentPane().add(kelasB);
kelasB.setBounds(125,60,50,20);
getContentPane().add(kelasC);
kelasC.setBounds(175,60,50,20);
grupkelas.add(kelasA);
grupkelas.add(kelasB);
grupkelas.add(kelasC);
setVisible(true);
}
public static void main (String args[])
{
Aplikasi_Radio_Button ARB=new Aplikasi_Radio_Button();
ARB.KomponenVisual();
} }
 Penjelasan koding program.
Coding Keterangan
JRadioButton kelasA = new
JRadioButton("A");
Sintaks di atas menunjukkan bahwa kita memiliki tiga
kelas yang dibuat dengan membentuk tiga buah obyek dari
class JRadioButton.
ButtonGroup grupkelas = new
ButtonGroup();
Merupakan obyek yang digunakan untuk menyatukan
semua obyek JRadioButton, sehingga hanya akan terpilih
satu diantara obyek JRadioButton yang ada.
getContentPane().add(kelasA);
kelasA.setBounds(75,50,50,20);
digunakan untuk menambahkan dan mengatur posisi
masing-masing obyek dalam frame.
grupkelas.add(kelasA);
grupkelas.add(kelasB);
grupkelas.add(kelasC);
adalah cara untuk menyatukan ketiga obyek menjadi satu
kesatuan, sehingga hanya dapat dipilih satu diantara
ketiganya.
JButton tblcari = new JButton
(new ImageIcon ("cari.jpg"));
New ImageIcon adalah koding untuk membuat objek
gambar yang akan diletakkan pada tombol
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
11
1.6 JComboBox
JComboBox juga merupakan komponen yang digunakan untuk memilih satu
diantara sekian banyak pilihan yang berbentuk semacam TextField dan ada panah ke
bawah. Adapun sintax JComboBox adalah :
String [] jeniskelompok = {"1","2","3","4","5","6","7"};
JComboBox cbkelompok = new JComboBox (jeniskelompok);
Contoh penggunaan JComboBox adalah:
Gambar 6 Contoh JComboBox
 Berikut ini coding contoh penggunaan JComboBox
import javax.swing.*;
import java.awt.*;
class Aplikasi_ComboBox extends JFrame
{
JLabel gambar = new JLabel (new ImageIcon ("back2.jpg"));
JLabel ibnim = new JLabel ("NIM");
JTextField txnim = new JTextField (20);
JButton tblcari = new JButton ("Cari");
JLabel ibnama = new JLabel ("Nama");
JTextField txnama = new JTextField (20);
JLabel ibkelas = new JLabel ("Kelas");
JRadioButton kelasA = new JRadioButton ("A");
JRadioButton kelasB = new JRadioButton ("B");
JRadioButton kelasC = new JRadioButton ("C");
ButtonGroup grupkelas = new ButtonGroup();
JLabel ibkelompok = new JLabel ("Kelompok");
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
12
String [] jeniskelompok = {"1","2","3","4","5","6","7"};
JComboBox cbkelompok = new JComboBox (jeniskelompok);
Aplikasi_ComboBox()
{
setTitle("Aplikasi JCombo Box");
setLocation (300,100);
setSize (300,150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void KomponenVisual()
{
getContentPane().setLayout(null);
getContentPane().add(ibnim);
ibnim.setBounds(10,10,70,20);
ibnim.setForeground(Color.red);
getContentPane().add(txnim);
txnim.setBounds(75,10,100,20);
getContentPane().add(tblcari);
tblcari.setBounds(180,10,95,20);
getContentPane().add(ibnama);
ibnama.setBounds(10,35,70,20);
ibnama.setForeground(Color.white);
getContentPane().add(txnama);
txnama.setBounds(75,35,200,20);
getContentPane().add(ibkelas);
ibkelas.setBounds(10,60,100,20);
ibkelas.setForeground(Color.green);
getContentPane().add(kelasA);
kelasA.setBounds(75,60,50,20);
getContentPane().add(kelasB);
kelasB.setBounds(125,60,50,20);
getContentPane().add(kelasC);
kelasC.setBounds(175,60,50,20);
grupkelas.add(kelasA);
grupkelas.add(kelasB);
grupkelas.add(kelasC);
getContentPane().add(ibkelompok);
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
13
ibkelompok.setBounds(10,80,100,20);
ibkelompok.setForeground(Color.blue);
getContentPane().add(cbkelompok);
cbkelompok.setBounds(75,80,100,20);
getContentPane().add(gambar);
gambar.setBounds(0,0,300,150);
setVisible(true);
}
public static void main (String args[])
{
Aplikasi_ComboBox ACB=new Aplikasi_ComboBox();
ACB.KomponenVisual();
} }
 Penjelasan koding program.
Coding Keterangan
String [] jeniskelompok =
{"1","2","3","4","5","6","7"};
Adalah variabel array yang akan digunakan sebagai
alternatif pilihan bagi ComboBox. Dimana dalam
kurung kerawal semua data diletakkan.
JComboBox cbkelompok = new
JComboBox (jeniskelompok);
Merupakan deklarasi pembentukan obyek
ComboBox menggunakan argumen array yang
sebelumnya telah disediakan yaitu jeniskelompok.
getContentPane().add(cbkelompok);
cbkelompok.setBounds(75,70,100,20);
adalah cara yang sudah biasa kita gunakan untuk
memasang komponen pada frame.
ibkelompok.setForeground(Color.blue); Digunakan untuk membuat warna tulisan
1.7 JTextArea
JTextArea merupakan komponen yang mirip dengan JtextField tetapi dapat
menampung lebih dari satu baris. Adapun sintax JTextArea adalah :
JTextArea area1=new JTextArea(3,20);
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
14
Contoh penggunaan JTextArea adalah:
Gambar 7 Contoh JTextArea
 Berikut ini coding contoh penggunaan JTextArea
import javax.swing.*;
import java.awt.*;
class Aplikasi_Text_Area extends JFrame
{
JLabel ibkal=new JLabel("Kalimat");
JTextArea area1=new JTextArea(3,20);
Aplikasi_Text_Area()
{
setTitle("Aplikasi JTextArea");
setLocation(200,100);
setSize(300,160);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void KomponenVisual()
{
getContentPane().setLayout(null);
getContentPane().setBackground(Color.pink); //untuk warna background
getContentPane().add(ibkal);
ibkal.setBounds(10,10,50,20);
ibkal.setForeground(Color.white); //untuk warna tulisan
getContentPane().add(area1);
area1.setBounds(70,10,210,100);
area1.setFont(new Font("Comic Sans MS", Font.BOLD, 13)); //untuk ganti font
setVisible(true);
}
public static void main(String args[])
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
15
{
Aplikasi_Text_Area ATA=new Aplikasi_Text_Area();
ATA.KomponenVisual();
} }
 Penjelasan koding program.
Coding Keterangan
JTextArea area1 = new JtextArea
(3,20);
Adalah membentuk obyek dari komponen JtextArea
dimana (3,20) itu untuk membuat 3 baris dan 20
kolom.
getContentPane().add(area1);
area1.setBounds(70,10,210,100);
adalah cara yang sudah biasa kita gunakan untuk
memasang komponen pada frame.
area1.setFont(new Font("Comic
Sans MS", Font.BOLD, 13));
Digunakan untuk mengubah tulisan sesuai dengan
keinginan, Font.BOLD (tulisan tebal), Font.ITALIC
(Tulisan Miring), Font.PLAIN (tulisan normal).
1.8 JCheckBox
JCheckBox adalah komponen yang digunakan ketika pengguna memerlukan
komponen untuk melakukan satu atau banyak pilhan sekaligus. Adapun sintax
JCheckBox adalah :
JCheckBox cek1 = new JCheckBox ("Pilihan 1");
Contoh penggunaan JChekBox adalah:
Gambar 8 Contoh JCheckBox
 Berikut ini coding contoh penggunaan JCheckBox
import javax.swing.*;
import java.awt.*;
class Aplikasi_Chek_Box extends JFrame
{
JCheckBox cek1=new JCheckBox("Pilihan 1");
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
16
JCheckBox cek2=new JCheckBox("Pilihan 2");
JCheckBox cek3=new JCheckBox("Pilihan 3");
Aplikasi_Chek_Box()
{
super ("Aplikasi JCheck Box");
setLocation(200,100);
setSize(300,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void KomponenVisual()
{
getContentPane().setLayout(null);
getContentPane().add(cek1);
cek1.setBounds(10,10,90,20);
getContentPane().add(cek2);
cek2.setBounds(100,10,90,20);
getContentPane().add(cek3);
cek3.setBounds(200,10,90,20);
setVisible(true);
}
public static void main(String args[])
{
Aplikasi_Chek_Box ACB=new Aplikasi_Chek_Box();
ACB.KomponenVisual();
} }
 Penjelasan koding program.
Coding Keterangan
JCheckBox cek1 = new JcheckBox
("Pilihan 1");
Adalah membentuk obyek dari komponen JCheckBox
getContentPane().add(cek1);
cek1.setBounds(10,10,90,20);
adalah cara yang sudah biasa kita gunakan untuk
memasang komponen pada frame.
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
17
1.9 JTable
JTable digunakan untuk menampilkan data dalam bentuk tabel, suatu bentuk
yang banyak digunakan dalam pemrograman database. Adapun sintax JTable adalah :
String [] header ={"1","2","3"};
String [][] data ={{"100","300","150"},{"500","600","450"},{"290","690","360"}};
DefaultTableModel model = new DefaultTableModel(data,header);
JTable tabel= new JTable(model);
Contoh penggunaan JTable seperti program berikut.
Gambar 9 Contoh JTable
 Berikut ini coding contoh penggunaan JTable
import javax.swing.*;
import javax.swing.table.*; //untuk library tabel
class Aplikasi_Tabel extends JFrame
{
String [] header ={"andi","reza","fahmi"};
String [][] data ={{"100","300","150"},{"500","600","450"},{"290","690","360"}};
DefaultTableModel model = new DefaultTableModel (data,header);
JTable tabel= new JTable(model);
Aplikasi_Tabel()
{
super ("Aplikasi JTable");
setLocation(200,100);
setSize(250,110);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void KomponenVisual()
{
getContentPane().setLayout(null);
getContentPane().add(tabel);
tabel.setBounds(10,10,200,200);
setVisible(true);
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
18
}
public static void main(String args[])
{
Aplikasi_Tabel AT=new Aplikasi_Tabel();
AT.KomponenVisual();
} }
 Penjelasan koding program.
Coding Keterangan
String [] header = {"andi","reza","fahmi"}; Digunakan untuk judul kepala kolom tabel
String [][] data = {{"100","300","150"},
{"500","600","450"}, {"290","690","360"}};
Digunakan untuk isi data di dalam tabel
DefaultTableModel model = new
DefaultTableModel (data,header);
Untuk membuat model tabel
JTable tabel = new JTable (model); Adalah membentuk obyek dari komponen
Jtabel dan memanggil obyek dari variabel
data dan header
getContentPane().add(tabel);
tabel.setBounds(10,10,200,200);
adalah cara yang sudah biasa kita gunakan
untuk memasang komponen pada frame.
Adapun kolom Tabel dapat kita buat sesuai dengan keinginan kita seperti dibawah ini
Contoh JTable manual seperti program berikut.
Gambar 10 Contoh JTable Manual
 Berikut ini coding contoh penggunaan JTable Manual
import javax.swing.*;
import javax.swing.table.*; //untuk library table
import java.awt.*; //untuk komponen java yg tidak diawali huruf J
class Aplikasi_Tabel_Manual extends JFrame
{
JLabel mhs = new JLabel("Tabel Data Mahasiswa");
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
19
String header [] = {"No","Reno","Sisca","Rendy"};
String data [][] = {{"1","100","300","150"}, {"2","500","600","450"},
{"3","290","690","360"}};
DefaultTableModel model = new DefaultTableModel(data,header); // set Model Tabel
JTable tabel = new JTable(model);
JScrollPane pane = new JScrollPane(tabel);
//untuk pembuatan kolom tabel
TableColumn tc1 = new TableColumn(); //kolom no
TableColumn tc2 = new TableColumn(); //kolom reno
TableColumn tc3 = new TableColumn(); //kolom sisca
TableColumn tc4 = new TableColumn(); //kolom rendy
Dimension dimensi = new Dimension(15,2); //untuk perataan isi tabel (x,y)
Aplikasi_Tabel_Manual()
{
super ("Aplikasi JTable");
setLocation(200,100);
setSize(250,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void KomponenVisual()
{
getContentPane().setLayout(null);
getContentPane().add(mhs);
mhs.setBounds(50,5,200,20);
getContentPane().add(pane);
pane.setBounds(10,30,200,100);
tabel.setShowGrid(true); //untuk menampilkan garis horizontal
tabel.setShowVerticalLines(true); //untuk menampilkan garis vertikal
tabel.setIntercellSpacing(new Dimension(dimensi)); //untuk spasing
tabel.setGridColor(Color.GREEN); //Memberi warna garis tabel
setHighRow(tabel); //pemanggilan data di void setHighRow(JTable tabel)
tc1 = tabel.getColumnModel().getColumn(0); //Menampilkan isi kolom NO
tc2 = tabel.getColumnModel().getColumn(1); //Menampilkan isi kolom reno
tc3 = tabel.getColumnModel().getColumn(2); // Menampilkan isi kolom sisca
tc4 = tabel.getColumnModel().getColumn(3); // Menampilkan isi kolom rendy
tc1.setPreferredWidth(50); //set lebar kolom no
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
20
tc2.setPreferredWidth(150); //set lebar kolom reno
tc3.setPreferredWidth(150); //set lebar kolom sisca
tc4.setPreferredWidth(150); //set lebar kolom rensy
setVisible(true);
}
void setHighRow(JTable tabel) //untuk tinggi baris
{
int tinggi = tabel.getRowHeight();
tabel.setRowHeight(tinggi + 15);
}
public static void main(String args[])
{
Aplikasi_Tabel_Manual ATM=new Aplikasi_Tabel_Manual();
ATM.KomponenVisual();
} }
1.10 JScrollPane
JScrollPane adalah komponen yang digunakan untuk menggerakkan obyek ke
atas, ke bawah atau ke samping agar semua sebuah obyek terlihat di layar. Adapun
sintax JScrollPane adalah :
JScrollPane scrollPane = new JScrollPane(tabel1);
Contoh JScrollPane adalah sebagai berikut.
Gambar 11 Contoh JscrollPane
 Berikut ini coding contoh penggunaan JScrollPane
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
class Aplikasi_Scroll_Pane extends JFrame
{
String [] header ={"Senin","Selasa","Rabu"};
String [][] data ={{"10","30","15"},{"50","60","40"},{"29","69","36"}};
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
21
DefaultTableModel model = new DefaultTableModel(data,header);
JTable tabel= new JTable(model);
JScrollPane pane = new JScrollPane(tabel);
Dimension dimensi = new Dimension(60,10); //untuk isi data tabel x,y
Aplikasi_Scroll_Pane()
{
super ("Aplikasi Scroll Pane");
setLocation(200,100);
setSize(300,130);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void KomponenVisual()
{
getContentPane().setLayout(null);
tabel.setIntercellSpacing(new Dimension(dimensi));
tabel.setShowGrid(true); //untuk menmpilkan garis horizontal
tabel.setShowVerticalLines(true); //untuk menampilkan garis vertical
tabel.setGridColor(Color.ORANGE); //untuk warna garis
setHighRow(tabel); //ambil data di void setHighRow(JTable tabel)
getContentPane().add(pane);
pane.setBounds(10,10,250,70);
setVisible(true);
}
void setHighRow(JTable tabel) //untuk tinggi baris
{
int tinggi = tabel1.getRowHeight();
tabel1.setRowHeight(tinggi + 15);
}
public static void main(String args[])
{
Aplikasi_Scroll_Pane ASP=new Aplikasi_Scroll_Pane();
ASP.KomponenVisual();
} }
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
22
 Penjelasan koding program.
Coding Keterangan
JScrollPane pane = new JScrollPane(tabel); Adalah membentuk obyek dari komponen
JscrollPane dengan memanggil objek pada
tabel, bisa juga diletakkan pada JTextArea.
getContentPane().add(pane);
pane.setBounds(10,10,250,50);
adalah cara yang sudah biasa kita gunakan
untuk memasang komponen pada frame
1.11 JMenu
JMenu adalah komponen yang digunakan untuk membuat menu. Menu membuat
program kita menjadi lebih sederhana dan mudah digunakan. Menu adalah sebuah
komponen standar yang bersifat pull-down. Menu dapat berisi menu lain yang disimpan
sebagai submenu item. Hal ini memungkinkan kita membuat suatu struktur menu yang
kompleks. Kita juga dapat menyimpan berbagai komponen di dalam menu (seperti
checkbox, radiobutton, dll). Untuk menyimpan menu dalam bentuk horizontal bar, kita
gunakan JmenuBar yang dapat diposisikan di posisi: top, bottom, atau middle.
 Menggunakan Keyboard Access ( Alt & Ctrl) pada Menu
Kita dapat menggunakan keyboard untuk mengakses menu. Ada 2 cara yang dapat kita
lakukan yaitu :
1. Mnemonics
Berupa satu karakter di dalam nama menu Untuk mengaksesnya, kita menekan
tombol “Alt + karakter“ mnemonic-nya Menu items juga dapat memiliki
mnemonics.
2. Accelerator
Accelerator merupakan kombinasi keyboard untuk memilih menu item tanpa
perlu ditunjukkan isi menu yang bersangkutan. Contoh: Ctrl-C biasa digunakan
sebagai shortcut untuk menu Copy item di dalam menu Edit.
Adapun sintax JMenu Adalah :
JMenuBar mb=new JMenuBar();
JMenu file=new JMenu("File");
JMenuItem open=new JMenuItem("Open");
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
23
Contoh JMenu adalah sebagai berikut.
Gambar 12 Contoh JMenu
 Berikut ini coding contoh penggunaan JMenu
import javax.swing.*;
class Aplikasi_Menu extends JFrame
{
JMenuBar mb=new JMenuBar();
JMenu file=new JMenu("File");
JMenu help=new JMenu("Help");
JMenuItem open=new JMenuItem("Open");
JMenuItem close=new JMenuItem("Close");
JMenuItem quit=new JMenuItem("Quit");
JMenuItem about=new JMenuItem("About");
Aplikasi_Menu()
{
setTitle("Aplikasi JMenu");
setSize(320,160);
setLocation(0,0);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void KomponenVisual()
{
setJMenuBar(mb);
mb.add(file);
mb.add(help);
file.add(open);
file.add(close);
close.setEnabled(false);
file.add(quit);
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
24
help.add(about);
setVisible(true);
}
public static void main(String args[])
{
Aplikasi_Menu AM=new Aplikasi_Menu();
AM.KomponenVisual();
} }
 JMENU DAN GABUNGAN KOMPONEN
Gambar 13 Contoh JMenu Gabungan Komponen
 Berikut contoh Jmenu menggunakan Keyboard Access dan sub Komponen
import java.awt.*;
import java.awt.event.*; //untuk library event (reaksi)
import javax.swing.*;
class Aplikasi_Menu extends JFrame
{
JMenuBar menuBar = new JMenuBar( );
JMenu file = new JMenu("File");
JMenu export= new JMenu("Export");
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
25
JMenu edit = new JMenu("Edit");
JMenu view = new JMenu("View");
//file
JMenuItem quit = new JMenuItem("Quit");
JMenuItem newi = new JMenuItem("New");
JMenuItem open = new JMenuItem("Open");
JMenuItem save = new JMenuItem("Save");
//file- combo box export
JMenuItem html = new JMenuItem("HTML");
JMenuItem rtf = new JMenuItem("RTF");
JMenuItem word = new JMenuItem("WORD");
//edit checkBox
JCheckBoxMenuItem copy = new JCheckBoxMenuItem ("Copy");
JCheckBoxMenuItem paste = new JCheckBoxMenuItem ("Paste");
JCheckBoxMenuItem cut = new JCheckBoxMenuItem ("Cut",true);
JCheckBoxMenuItem del = new JCheckBoxMenuItem ("Delete");
//view  RadioButton
JRadioButtonMenuItem rbmi = new JRadioButtonMenuItem ("Regular", true);
JRadioButtonMenuItem rbmi2 = new JRadioButtonMenuItem ("Extra");
JRadioButtonMenuItem rbmi3 = new JRadioButtonMenuItem ("Blue");
ButtonGroup group = new ButtonGroup( );
Aplikasi_Menu()
{
setTitle ("aplikasi menu");
setLocation (10,10);
setSize (250,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
}
void KomponenVisual()
{
// menu file
file.setMnemonic('f'); //Untuk mengaksesnya, klik tombol Alt + f
file.add(newi);
file.add(open);
file.add(save);
file.add(export);
file.addSeparator( ); //untuk membuat garis pembatas
// menu export
export.add(html);
export.add(rtf);
export.add(word);
//menu quit
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
26
file.add(quit);
quit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, Event.CTRL_MASK));
//menu edit
edit.setMnemonic('e'); //Untuk mengaksesnya, klik tombol Alt + e
edit.add(copy); //Untuk mengaksesnya, klik tombol ctrl + c
copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, Event.CTRL_MASK));
edit.add(paste);
edit.add(cut);
edit.add(del);
// menu view
view.setMnemonic('v');
view.add(rbmi);
view.add(rbmi2);
view.add(rbmi3);
group.add(rbmi);
group.add(rbmi2);
group.add(rbmi3);
setJMenuBar(menuBar); //untuk membuat menu bar
menuBar.add(file);
menuBar.add(edit);
menuBar.add(view);
setVisible(true);
}
public static void main(String[] args)
{
Aplikasi_Menu am= new Aplikasi_Menu();
am.KomponenVisual();
}}
 Penjelasan Coding
Coding Keterangan
JMenuBar mb=new JMenuBar(); Adalah membentuk obyek dari komponen
JMenuBar
JMenu file=new JMenu("File"); Adalah membentuk obyek dari komponen
JMenu
JMenuItem open=new JMenuItem("Open"); Adalah membentuk obyek dari komponen
JMenuItem
setAccelerator(KeyStroke.getKeyStroke
(KeyEvent.VK_Q, Event.CTRL_MASK));
//Accelerator merupakan kombinasi
keyboard untuk memilih menu item tanpa
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
27
perlu ditunjukkan isi menu yang
bersangkutan.
1.12 JInternalFrame
JInternalFrame menyebabkan sebuah frame hanya dapat berada dalam frame
lain. Kondisi ini akan membantu tampilan menjadi lebih rapi dan teratur. Adapun sintax
JInternalFrame Adalah :
JDesktopPane desktop = new JDesktopPane();
JInternalFrame iframe = new JInternalFrame("Internal Frame",true,true,true,true);
Contoh JInternalFrame adalah sebagai berikut.
Gambar 1.12 Contoh JInternalFrame
 Berikut ini coding contoh penggunaan JInternalFrame
import javax.swing.*;
import java.awt.*;
public class AplikasiFrameInternal extends JFrame
{
JDesktopPane desktop=new JDesktopPane();
JInternalFrame iframe=new JInternalFrame("Internal Frame",true,true,true,true);
AplikasiFrameInternal()
{
setTitle("Aplikasi Internal Frame");
setLocation(100,200);
setSize(300,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void komponenVisual()
{
iframe.setLocation(20,20);
iframe.setSize(200,100);
iframe.setVisible(true);
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
28
desktop.add(iframe);
setContentPane(desktop);
setVisible(true);
}
public static void main(String[] args)
{
AplikasiFrameInternal if1=new AplikasiFrameInternal();
if1.komponenVisual();
} }
1.13 JPasswordField
JPasswordField digunakan untuk memasukkan data password. JPasswordField
merupakan bentuk khusus dari TextField, dimana karakter yang diinputkan akan
ditampilkan sebagai karakter lain yang telah ditentukan, dikenal sebagai karakter echo.
Secara default “karakter echo” ini akan mengikuti setting dari sistem operasi, mungkin
berupa karakter ‘*’ atau yang lainnya. Adapun sintax JPasswordField Adalah :
JPasswordField txpass = new JPasswordField();
txpass.setEchoChar('*');
Contoh JPasswordField adalah sebagai berikut.
Gambar 14 Contoh JPasswordField
 Berikut ini coding contoh penggunaan JPasswordField
import javax.swing.*;
class Aplikasi_Password extends JFrame
{
JLabel user = new JLabel ("UserName");
JTextField txuser = new JTextField ();
JLabel pass = new JLabel ("Password");
JPasswordField txpass = new JPasswordField();
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
29
Aplikasi_Password()
{
setTitle("Aplikasi_Password");
setLocation(10,10);
setSize(250, 130);
setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
setResizable (false); //untuk menutup tombol maxi
}
void KomponenVisual()
{
getContentPane().setLayout(null);
getContentPane().add(user);
user.setBounds(10,10,80,20);
getContentPane().add(txuser);
txuser.setBounds(100,10,100,20);
getContentPane().add(pass);
pass.setBounds(10,40,80,20);
getContentPane().add(txpass);
txpass.setBounds(100,40,100,20);
txpass.setEchoChar('*'); //untuk mengubah karakter
setVisible(true);
}
public static void main (String [] args)
{
Aplikasi_Password ap = new Aplikasi_Password();
ap.KomponenVisual();
} }
 Penjelasan Coding
Coding Keterangan
JPasswordField txpass = new
JPasswordField();
Adalah membentuk obyek dari komponen
JPasswordField
getContentPane().add(txpass);
txpass.setBounds(100,40,100,20);
adalah cara yang sudah biasa kita gunakan
untuk memasang komponen pada frame
txpass.setEchoChar('*'); Menentukan parameter * sebagai karakter
echo, serta bisa menggunakan karakter lain
sesuai keinginan.
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
30
1.14 Border (Bingkai)
Semua komponen Swing dapat memiliki dekorasi border. Untuk memberikan
dekorasi, kita cukup menggunakan method setBorder(). Kita perlu memberikan
implementasi dari interface Border sesuai dengan kebutuhan kita. Swing menyediakan
banyak sekali implementasi Border di dalam package javax.swing.border. Untuk
membuat Border, kita dapat melakukan 2 cara:
1. menggunakan class BorderFactory
2. membuat objek berdasarkan class border
Contoh men-set border sebuah label menggunakan BorderFactory:
JLabel labelTwo = new JLabel("menggunakan border etched.");
labelTwo.setBorder(BorderFactory.createEtchedBorder( ));
BorderFactory sangat mudah digunakan, tetapi tidak menawarkan setiap option
dari border yang digunakan. Misalnya, apabila kita ingin membuat sebuah raised
EtchedBorder (default-nya adalah lowered), maka kita harus menggunakan constructor
EtchedBorder. Contoh membuat objek EtchedBorder dengan option RAISED:
JLabel labelTwo = new JLabel("menggunakan border raised etched.");
labelTwo.setBorder( new EtchedBorder(EtchedBorder.RAISED) );
Berikut ini beberapa jenis Border yang dapat digunakan:
1. BevelBorder
2. SoftBevelBorder
3. EmptyBorder
4. EtchedBorder
5. LineBorder
6. MatteBorder
7. TitledBorder
8. CompoundBorder
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
31
Contoh Border adalah sebagai berikut.
Gambar 15 Contoh Border
 Berikut ini coding contoh penggunaan Border
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
class Aplikasi_Border extends JFrame
{
JLabel gambar = new JLabel (new ImageIcon ("back3.png"));
JLabel border1 = new JLabel("Menggunakan RAISED --> BevelBorder");
JLabel border2 = new JLabel ("Menggunakan LOWERED --> Bevel Border");
JLabel border3 = new JLabel(" Menggunakan border garis, ukuran nya = 4");
JLabel border4 = new JLabel ("Menggunakan Border Kosong ");
JLabel border5 = new JLabel("Menggunakan RAISED EtchedBorder");
JLabel border6 = new JLabel("Menggunakan LOWERED EtchedBorder");
JLabel border7 = new JLabel("Menggunakan RAISED --> Soft --> BevelBorder");
JLabel border8 = new JLabel("Menggunakan LOWERED --> Soft --> BevelBorder");
JLabel border9 = new JLabel("Menggunakan MatteBorder");
JLabel border10 = new JLabel("Menggunakan TitledBorder using LineBorder");
JLabel border11 = new JLabel("Menggunakan TitledBorder using EmptyBorder");
Aplikasi_Border()
{
setTitle("Aplikasi_Border");
setLocation (0,0);
setSize(880, 450);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
32
void KomponenVisual()
{
getContentPane().setLayout(null);
getContentPane().add(border1);
border1.setBounds(10,10,400,50);
border1.setBorder(new BevelBorder (BevelBorder.RAISED));
getContentPane().add(border2);
border2.setBounds(10,70,400,50);
border2.setBorder(new BevelBorder (BevelBorder.LOWERED));
getContentPane().add(border3);
border3.setBounds(10,130,400,50);
border3.setBorder(new LineBorder (Color.RED, 4, true));
getContentPane().add(border4);
border4.setBounds(10,200,400,50);
border4.setBorder(new EmptyBorder (10,10,10,10));
getContentPane().add(border5);
border5.setBounds(10,260,400,50);
border5.setBorder(new EtchedBorder (EtchedBorder.RAISED));
getContentPane().add(border6);
border6.setBounds(10,320,400,50);
border6.setBorder(new EtchedBorder (EtchedBorder.LOWERED));
getContentPane().add(border7);
border7.setBounds(430,10,400,50);
border7.setBorder(new SoftBevelBorder (SoftBevelBorder.RAISED));
getContentPane().add(border8);
border8.setBounds(430,70,400,50);
border8.setBorder(new SoftBevelBorder (SoftBevelBorder.LOWERED));
getContentPane().add(border9);
border9.setBorder(new MatteBorder (new ImageIcon("border.gif")));
border9.setBounds(430,130,400,50);
getContentPane().add(border10);
border10.setBounds(430,200,400,50);
border10.setBorder(new TitledBorder (new LineBorder(Color.blue, 5), "Judul
terserah..."));
getContentPane().add(border11);
border11.setBounds(430,260,400,50);
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
33
border11.setBorder(new TitledBorder (new EmptyBorder(10,10,10,10)));
getContentPane().add(gambar);
gambar.setBounds(0,0,880,560);
setVisible(true);
}
public static void main(String args[])
{
Aplikasi_Border br= new Aplikasi_Border();
br.KomponenVisual();
} }
1.15 JPopupMenu
Pop up menu biasa disebut juga sebagai “context menu” merupakan menu yang
dapat muncul di mana saja tergantung posisi mouse. (Untuk windows, biasa diaktifkan
menggunakan klik kanan) Cara pembuatannya mirip dengan JMenu biasa, tetapi kita
tidak menempelkannya pada JMenuBar. Contoh membuat Pop-up Menu:
JPopupMenu contextMenu = new JPopupMenu("Edit");
contextMenu.add(new JMenuItem("Save"));
contextMenu.add(new JMenuItem("Save As"));
contextMenu.add(new JMenuItem("Close"));
Contoh JPopupMenu adalah sebagai berikut.
Gambar 16 Contoh JPopupMenu
 Berikut ini coding contoh penggunaan JPopupMenu
import javax.swing.*;
class Aplikasi_PopMenu extends JFrame
{
JPopupMenu edit = new JPopupMenu("Edit");
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
34
JMenuItem save = new JMenuItem ("Save");
JMenuItem save2 = new JMenuItem ("Save As");
JMenuItem close = new JMenuItem ("Close");
JPanel panel = new JPanel( );
Aplikasi_PopMenu( )
{
setTitle("Aplikasi_PopMenu");
setLocation(10,10);
setSize(250,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
}
void KomponenVisual()
{
this.add(panel); // panel
panel.setComponentPopupMenu(edit);
panel.setBackground(Color.cyan);
edit.add(save);
edit.add(save2);
edit.add(close);
setVisible(true);
}
public static void main(String[] args)
{
Aplikasi_PopMenu pm = new Aplikasi_PopMenu();
pm.KomponenVisual();
} }
 Penjelasan coding
Coding Keterangan
JPopupMenu edit = new
JPopupMenu("Edit");
Adalah membentuk obyek dari komponen
JPopupMenu
panel.setComponentPopupMenu(edit); Mengubah komponen popup menu didalam layout
edit.add(save); Menambahkan objek JMenuItem kedalam popup
menu
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
35
D. TUGAS
Buatlah sebuah program yang outputnya sebagai berikut :
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
36
BAB 2
EVENT HANDLER
A. TUJUAN :
1. Mahasiswa dapat menjelaskan konsep even handler pada pemrograman bahasa
Java.
2. Mahasiswa dapat membuat program sederhana untuk even handler pada komponen-
komponen dasar dengan contoh-contoh yang mudah dipahami
3. Mahasiswa dapat membuat program menu menggunakan bahasa Java
B. PRASYARAT
3. Algoritma dan Pemograman
4. Pemograman Berorientasi Objek
C. PENGANTAR
Event adalah suatu peristiwa yang dipicu oleh pengguna pada suatu komponen,
misalnya tombol ditekan. Dua paket yang biasa digunakan menangani kejadian adalah
import java.awt.event dan import javax.swing.event
Sintaks: <Type>Event
Tabel 1 Macam - Macam Event
Event Fungsi
ActionEvent Dijalankan ketika sebuah Tombol ditekan, melakukan
double klik daftar item, atau memilih sebuah menu.
Extends AWTEvent.
KeyEvent Dijalankan ketika sebuah Keyboard ditekan, dilepas atau
diketikkan. Extends InputEvent
MouseEvent Dijalankan ketika sebuah Tombol Mouse ditekan,
dilepas, diklik (tekan dan lepas) atau ketika Cursor
Mouse masuk atau keluar dari bagian komponen. Extends
InputEvent
TextEvent Dijalankan ketika nilai dari TextField dan TextArea
dirubah. Extends AWTEvent.
ItemEvent Dijalankan ketika sebuah Item dipilih atau deselect oleh
user, seperti CheckBox dan List. Extends AWTEvent.
WindowsEvent Dijalankan ketika sebuah objek window dibuka, ditutup,
diaktifkan, nonaktifkan, iconified, deiconified atau ketika
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
37
focus ditransfer kedalam atau keluar windows. Extends
ComponentEvent
ComponentEvent Dijalankan ketika sebuah komponen dipindahkan, di-
resize, dan dibuat visible atau di hidden. Extends
AWTEvent.
InputEvent Abstrak root class event untuk semua komponen level
input class – class event. Extends ComponentEvent
Event Handler adalah proses yang diperlukan untuk melakukan reaksi bila
diberikan sebuah aksi. Event handler ini dapat diberikan pada semua obyek yang kita
gunakan bergantung pada keperluan. Dalam menggunakan event handler membutuhkan
package import java.awt.event.*;
Event Listener adalah sebuah konsep untuk merespon kegiatan yang terjadi
didalam objek. Event Listener merupakan implementasi penyampaian message antar
objek, yang mendapat message akan melakukan suatu action yang telah ditentukan
didalam program. Java menyediakan banyak event listener yaitu :
Tabel 2 Macam - Macam Listener
 ActionListener  ItemListener  FocusListener
 KeyListener  ChangeListener  PopupMenuListener
 MouseListener  MenuListener  WindowsListener
 MouseMotionListener
Dalam bab ini tidak semua Event dibahas, hanya Event yang dianggap sering
digunakan saja yang ditampilkan sebagai bahan eksplorasi lebih lanjut bagi anda
terhadap berbagai Event.
2.1 ActionListener
ActionListener berfungsi atas perubahan Mouse atau Keyboard. Method
ActionListener hanya ada 1 yaitu :
addActionListener (new ActionListener()
{
public void actionPerformed (ActionEvent e)
});
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
38
Berikut contoh program menggunakan ActionListener (Klik Tombol)
Gambar 17 Contoh ActionListener pada JButton
 Berikut ini coding menggunakan ActionListener pada JButton
import javax.swing.*;
import java.awt.*;
import java.awt.event.*; //librari event (aksi)
class Aplikasi_Event extends JFrame
{
JTextField data1 = new JTextField(20);
JTextField data2 = new JTextField(20);
JTextField data3 = new JTextField(20);
JButton tambah = new JButton("+");
JButton exit = new JButton("EXIT");
ImageIcon gambar = new ImageIcon("gambar/exit2.png");
Aplikasi_Event()
{
setTitle("Event Menggunakan Klik Mouse");
setLocation(200,100);
setSize(300,150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void komponenVisual()
{
getContentPane().setLayout(null);
getContentPane().setBackground(Color.orange);
getContentPane().add(data1);
data1.setBounds(10,10,50,30);
getContentPane().add(data2);
data2.setBounds(70,10,50,30);
getContentPane().add(tambah);
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
39
tambah.setBounds(130,10,50,30);
getContentPane().add(data3);
data3.setBounds(190,10,80,30);
getContentPane().add(exit);
exit.setBounds(35,50,200,50);
exit.setIcon(new ImageIcon("gambar/exit.png")); //gmbr tombol yang mau diubah
exit.setRolloverIcon(gambar); //untuk berubah gambar tombol jika ditekan
setVisible(true);
}
void AksiReaksi() //buat fungsi baru untuk klik tombol
{
tambah.addActionListener(new ActionListener() //aksi untuk tombol tambah
{
public void actionPerformed(ActionEvent e)
{
int x = Integer.parseInt(data1.getText());
int y = Integer.parseInt(data2.getText());
String z = String.valueOf(x+y);
data3.setText(z);
} } );
exit.addActionListener(new ActionListener() //aksi untuk tombol keluar
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
} } ) ;
} //tutup void AksiReaksi
public static void main(String args[])
{
Aplikasi_Event AE=new Aplikasi_Event();
AE.komponenVisual();
AE.AksiReaksi(); //pemanggilan fungsi AksiReaksi
} }
 Penjelasan koding program :
Pada contoh di atas, terdapat dua event handler yaitu penekanan mouse pada
tombol tambah dan penekanan mouse pada tombol exit.
Coding Keterangan
public void actionPerformed (ActionEvent e) efek yang timbul akibat penekanan klik
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
40
tombol
Integer.parseInt Mengubah data bertipe String menjadi
integer
data1.getText() Mengambil nilai dari JTextField
String z = String.valueOf (x+ y); digunakan untuk melakukan proses
penjumlahan kedua input data x dan y,
kemudian mengubah tipe datanya menjadi
String agar hasilnya dapat ditampilkan
melalui JTextField
data3.setText(z); Membuat text yang ditampilkan dari variabel z
kedalam JTextField
System.exit(0) agar aplikasi berhenti bila tombol exit di klik.
2.2 KeyListener
KeyListener berfungsi Untuk menangani reaksi dari keyboard. Misalnya
penekanan tombol Enter, Ctrl, Alt, dan sebagainya. Method KeyListener ada 3 yaitu :
Tabel 3 Method KeyListener
Method Fungsinya
addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
} );
Dieksekusi ketika terjadi penekanan tombol
keyboard
addKeyListener(new KeyAdapter()
{
public void keyReleased(KeyEvent e)
} );
Dieksekusi ketika terjadi pelepasan tombol
keyboard
addKeyListener(new KeyAdapter()
{
public void keyTyped(KeyEvent e)
} );
Dieksekusi ketika terjadi penekanan tombol
keyboard tertentu, biasanya tombol yang bisa
digunakan sebagai input seperti abjad, spasi,
backspace dan lain-lain. Tombol khusus
seperti F1 dan Ctrl tidak akan memberi reaksi
Berikut ini contoh penggunaan tombol ENTER, dengan menggunakan program diatas.
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
41
Gambar 18 Contoh KeyListener pada JTextField
 Berikut ini coding menggunakan KeyListener pada JTextField
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Aplikasi_Event_Enter extends JFrame
{
JTextField data1 = new JTextField(20);
JTextField data2 = new JTextField(20);
JTextField data3 = new JTextField(20);
JButton tambah = new JButton("+");
JButton exit = new JButton("EXIT");
ImageIcon gambar = new ImageIcon("gambar/exit2.png");
Aplikasi_Event_Enter()
{
setTitle("Event Menggunakan Tombol Enter");
setLocation(200,100);
setSize(300,150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void komponenVisual()
{
getContentPane().setLayout(null);
getContentPane().setBackground(Color.magenta);
getContentPane().add(data1);
data1.setBounds(10,10,50,30);
getContentPane().add(data2);
data2.setBounds(70,10,50,30);
getContentPane().add(tambah);
tambah.setBounds(130,10,50,30);
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
42
getContentPane().add(data3);
data3.setBounds(190,10,80,30);
getContentPane().add(exit);
exit.setBounds(35,50,200,50);
exit.setIcon(new ImageIcon("gambar/exit.png")); //gmbar tombol yang mau diubah
exit.setRolloverIcon(gambar); //untuk berubah gambar tombol jika ditekan
setVisible(true);
}
void AksiReaksi()
{
data1.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e) //penggunaan method keyPressed
{
if(e.getKeyCode() == e.VK_ENTER) //penekanan tombol ENTER
{
data2.requestFocus(); //perpindahan cursor setelah tekan enter
} } } );
data2.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e) //penggunaan method keyPressed
{
if(e.getKeyCode() ==e.VK_ENTER) //penekanan tombol ENTER
{
tambah.requestFocus(); //perpindahan cursor setelah tekan enter
} } } );
tambah.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent ee) //penggunaan method keyPressed
{
if(ee.getKeyCode()==ee.VK_ENTER) //penekanan tombol ENTER
{
int x=Integer.parseInt(data1.getText());
int y=Integer.parseInt(data2.getText());
String z=String.valueOf(x+y);
data3.setText(z);
exit.requestFocus(); //perpindahan cursor setelah tekan enter
} } } );
exit.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent ee) //penggunaan method keyPressed
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
43
{
if(ee.getKeyCode()==ee.VK_ESCAPE) //tekan tombol ESC
{
System.exit(0);
} } } );
data1.addKeyListener(new KeyAdapter()
{
public void keyReleased(KeyEvent e) //penggunaan method keyReleased
{
String nomor = data1.getText();
if(nomor.length()>5)
{
getToolkit().beep();
e.consume();
JOptionPane.showMessageDialog(null, "Angka yang anda input terlalu panjang",
"Pesan",JOptionPane.WARNING_MESSAGE);
} } } );
data1.addKeyListener(new KeyAdapter()
{
public void keyTyped(KeyEvent key) //penggunaan method keyTyped
{
char karakter = key.getKeyChar();
if(!((karakter >= '0') && (karakter <= '9') || (karakter ==
KeyEvent.VK_BACK_SPACE)))
{
getToolkit().beep();
key.consume();
JOptionPane.showMessageDialog(null,"Karakter yang diinput harus angka", "Pesan",
JOptionPane.WARNING_MESSAGE, new ImageIcon("popUp.png"));
} } } );
} //tutup void aksireaksi
public static void main(String args[])
{
Aplikasi_Event_Enter AEE=new Aplikasi_Event_Enter();
AEE.komponenVisual();
AEE.AksiReaksi();
} }
 Penjelasan koding program.
CODING KETERANGAN
if(e.getKeyCode()==e.VK_ENTER) adalah sintaks yang memungkinkan suatu
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
44
reaksi terjadi bila kita menekan tombol enter
di keyboard
data2.requestFocus() adalah kode yang memungkinkan terjadinya
perpindahan kursor dari JTextfield pertama ke
JTextField kedua.
2.3 MouseListener
MouseListener berfungsi untuk penekanan tombol mouse dan ketika objek
tersebut didatangi atau ditinggalkan oleh mouse. Method MouseListener ada 5 yaitu :
Tabel 4 Method MouseListener
Method Fungsinya
addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) });
Dieksekusi ketika terjadi penekanan dan
pelepasan tombol mouse, dengan syarat lokasi
kursor mouse tidak berubah
addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) });
Dieksekusi ketika kursor mouse memasuki
area komponen
addMouseListener(new MouseAdapter() {
public void mouseExited(MouseEvent e) });
Dieksekusi ketika kursor mouse meninggalkan
area komponen
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) });
Dieksekusi ketika terjadi penekanan tombol
mouse
addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) });
Dieksekusi ketika terjadi pelepasan tombol
mouse
Berikut ini contoh penggunaan mouse, dengan menggunakan JLabel
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
45
Gambar 19 Contoh MouseListener pada JLabel
 Berikut ini coding menggunakan MouseListener dengan JLabel
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.Desktop; //librari desktop
import java.net.URI; //library ke internet
class Aplikasi_MouseListener extends JFrame
{
JPanel pane = new JPanel();
JLabel LJudul = new JLabel("Aplikasi MouseListener membuat JLabel Hyperlink");
JLabel LAuthor = new JLabel("Author : Ramadhani");
JLabel LYahoo = new JLabel("<html> <a href=""> ramadhani muhakam </a>
</html>");
JLabel LIconEmail = new JLabel(new ImageIcon("gambar/yahoo.png"));
JLabel cal = new JLabel (new ImageIcon ("gambar/cal.png"));
JLabel Lcal = new JLabel ("<html> <a href="">Class Kalkulator</a></html>");
JLabel twit = new JLabel(new ImageIcon("gambar/twit1.png"));
JLabel LBackground = new JLabel(new ImageIcon("gambar/wall.png"));
JLabel LIcon = new JLabel(new ImageIcon("gambar/girl.png"));
Aplikasi_MouseListener()
{
setTitle ("Aplikasi_Event_Label");
setSize (526,280);
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
46
setLocation (0,0);
setResizable(false); //untuk menutup tombol maxi
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void KomponenVisual()
{
setContentPane(pane);
pane.setLayout(null);
pane.add(LJudul);
LJudul.setFont(new Font("Century Schoolbook L", Font.BOLD, 18));
LJudul.setHorizontalAlignment(SwingConstants.CENTER); //rata paragraf tengah
LJudul.setBounds(10, 10, 500, 31);
LJudul.setForeground(Color.white);
pane.add(LAuthor);
LAuthor.setBounds(12, 56, 134, 15);
LAuthor.setFont(new Font("FreeSans", Font.BOLD, 12));
LAuthor.setForeground(new Color(0, 255, 51));
pane.add(LIconEmail);
LIconEmail.setBounds(12, 93, 70, 64);
pane.add(LYahoo);
LYahoo.setBounds(94, 115, 201, 15);
LYahoo.setCursor(new Cursor(Cursor.HAND_CURSOR)); //untuk mengganti cursor
LYahoo.setToolTipText("Yahoo Mail"); //untuk membuat comentar
pane.add(cal);
cal.setBounds(12, 180, 70, 64);
pane.add(Lcal);
Lcal.setBounds(94, 205, 322, 15);
Lcal.setCursor(new Cursor(Cursor.HAND_CURSOR)); //untuk mengganti cursor
Lcal.setToolTipText("class Aplikasi Event"); //untuk membuat comentar
pane.add(LIcon);
LIcon.setBounds(374, 70, 128, 128);
pane.add(twit);
twit.setBounds(245, 56, 90, 90);
twit.setCursor(new Cursor (Cursor.HAND_CURSOR));
twit.setToolTipText("www.twitter.com");
pane.add(LBackground);
LBackground.setBounds(0, 0, 520, 560);
setVisible(true);
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
47
}
void AksiReaksi()
{
LYahoo.addMouseListener(new MouseAdapter() //Aksi untuk Yahoo
{
public void mouseClicked(MouseEvent me) //method MouseClikced
{
try
{
Desktop.getDesktop().browse(new URI("http://mail.yahoo.com"));
}
catch(Exception ex)
{
System.out.println(ex);
} } } );
Lcal.addMouseListener(new MouseAdapter() //untuk pemanggilan class kalkulator
{
public void mouseClicked(MouseEvent me) //method MouseClikced
{
Aplikasi_Event AE=new Aplikasi_Event(); //pemanggilan kelas lain
AE.komponenVisual();
AE.AksiReaksi();
}});
twit.addMouseListener(new MouseAdapter()
{
public void mouseEntered(MouseEvent e) //method MouseEntered
{
twit.setIcon(new ImageIcon("gambar/twit2.png"));
}
public void mouseExited(MouseEvent e) //method MouseExited
{
twit.setIcon(new ImageIcon("gambar/twit1.png"));
}
public void mousePressed(MouseEvent e) //method MousePressed
{
try
{
Desktop.getDesktop().browse(new URI("http://www.twitter.com"));
}
catch(Exception ex)
{
System.out.println(ex);
} } } );
}
public static void main(String[] args)
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
48
{
Aplikasi_MouseListener AML = new Aplikasi_MouseListener();
AML.KomponenVisual();
AML.AksiReaksi();
} }
 Penjelasan koding program.
CODING KETERANGAN
Desktop.getDesktop().browse(new
URI("http://mail.yahoo.com"));
Berfungsi untuk ngelink dari desktop ke
browser sesuai dengan alamat link nya.
setToolTipText (""); Berfungsi sebagai komentar
setCursor(new
Cursor(Cursor.HAND_CURSOR));
Berfungsi untuk mengganti kursor sesuai
keinginan
2.4 MouseMotionListener
MouseMotionListener berfungsi untuk memantau kondisi objek ketika kursor
mouse berjalan melintasi komponen, baik ketika tombol mouse ditekan ataupun tidak.
Method MouseMotionListener ada dua yaitu :
Tabel 5 Method MouseMotionListener
Method Keterangan
addMouseMotionListener(new mouseAdapter() {
public void mouseDragged(MouseEvent me) });
Dieksekusi ketika terjadi pergeseran
kursor mouse yang disertai dengan
penekanan tombol mouse
addMouseMotionListener(new MouseAdapter() {
public void mouseMoved(MouseEvent me) });
Dieksekusi ketika terjadi perpindahan
kursor mouse.
Berikut ini contoh penggunaan mouse motion listener
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
49
Gambar 20 Contoh MouseMotionListener
 Berikut ini coding menggunakan MouseMotionListener
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Aplikasi_MouseMotionListener extends JFrame
{
TextField tf = new TextField();
Aplikasi_MouseMotionListener()
{
setTitle("Aplikasi Mouse Motion Listener");
setLocation(200,100);
setSize(300,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void komponenVisual()
{
getContentPane().setLayout(null);
getContentPane().setBackground(Color.pink);
getContentPane().add(tf);
tf.setBounds(10,10,250,20);
setVisible(true);
}
void AksiReaksi()
{
addMouseMotionListener(new MouseAdapter()
{
public void mouseDragged(MouseEvent me)
{
String msg = "Mouse di tahan di posisi --> " + me.getX() + " , " + me.getY();
tf.setText(msg);
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
50
tf.setForeground(Color.red);
} });
addMouseMotionListener(new MouseAdapter()
{
public void mouseMoved(MouseEvent me)
{
String msg = "Mouse berpindah di posisi --> " + me.getX() + " , " +me.getY();
tf.setText(msg);
tf.setForeground(Color.blue);
} });
}
public static void main(String args[])
{
Aplikasi_MouseMotionListener med = new Aplikasi_MouseMotionListener();
med.komponenVisual();
med.AksiReaksi();
} }
2.5 ItemListener
ItemListener berfungsi Untuk menangani reaksi atas perubahan status pada
pilihan yang terdapat pada objek tertentu. Misalnya pemilihan pada checkbox atau
radiobutton. Method ItemListener ada 1 yaitu :
Tabel 6 Method ItemListener
Method Fungsinya
addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) });
Dieksekusi ketika sebuah data komponen
dalam objek diakses
Berikut ini contoh penggunaan ItemListener dengan ComboBox
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
51
Gambar 21. Contoh ItemListener
 Berikut ini coding menggunakan ItemListener
import javax.swing.*;
import java.awt.event.*;
class Aplikasi_ItemListener extends JFrame
{
JLabel judul = new JLabel ("PILIH LAH KOTA ANDA");
JLabel Lkota = new JLabel("Kota ");
String kota[] = {"Banda Aceh","Medan","Padang","Palembang"};
JComboBox cbkota = new JComboBox (kota);
JLabel Lpropinsi = new JLabel("Propinsi ");
JTextField txpropinsi = new JTextField();
String propinsi[] = {"Aceh","Sumatera Utara","Sumatera Barat","Sumatera Selatan"};
JLabel judul2 = new JLabel ("PILIHLAH JENIS KELAMIN ANDA");
JRadioButton pria = new JRadioButton ("Pria");
JRadioButton wanita = new JRadioButton ("Wanita");
JRadioButton kosong = new JRadioButton ("???");
ButtonGroup grGender = new ButtonGroup();
JLabel orang = new JLabel (new ImageIcon("gambar/orang.png"));
JLabel gambar = new JLabel (new ImageIcon ("gambar/wal.jpg"));
Aplikasi_ItemListener()
{
setTitle("Aplikasi Item Listener");
setLocation(300,10);
setSize(400,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void KomponenVisual()
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
52
{
getContentPane().setLayout(null);
getContentPane().add(judul);
judul.setBounds(10,10,200,20);
getContentPane().add(Lkota);
Lkota.setBounds(10,55,80,20);
getContentPane().add(cbkota);
cbkota.setBounds(100,55,120,20);
getContentPane().add(Lpropinsi);
Lpropinsi.setBounds(10,85,80,20);
getContentPane().add(txpropinsi);
txpropinsi.setBounds(100,85,120,20);
txpropinsi.setEnabled(false);
getContentPane().add(orang);
orang.setBounds(250,10,128,128);
getContentPane().add(judul2);
judul2.setBounds(10,115,200,20);
getContentPane().add(pria);
pria.setBounds(20,135,80,20);
pria.setOpaque(false); //untuk buat tranparan
getContentPane().add(wanita);
wanita.setBounds(100,135,80,20);
wanita.setOpaque(false); //untuk buat tranparan
getContentPane().add(kosong);
kosong.setBounds(180,135,80,20);
kosong.setOpaque(false); //untuk buat tranparan
grGender.add(pria);
grGender.add(wanita);
grGender.add(kosong);
getContentPane().add(gambar);
gambar.setBounds(0,0,400,200);
setVisible(true);
}
void AksiReaksi()
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
53
{
cbkota.addItemListener(new ItemListener()
{
public void itemStateChanged(ItemEvent e)
{
int x = cbkota.getSelectedIndex();
String z = propinsi[x];
txpropinsi.setText(z);
} } ) ;
pria.addItemListener(new ItemListener()
{
public void itemStateChanged(ItemEvent event)
{
if(event.getSource()==pria)
{
if(event.getStateChange()==ItemEvent.SELECTED)
orang.setIcon(new ImageIcon ("gambar/pria.png"));
} } } ) ;
wanita.addItemListener(new ItemListener()
{
public void itemStateChanged(ItemEvent event)
{
if(event.getSource()==wanita)
{
if(event.getStateChange()==ItemEvent.SELECTED)
orang.setIcon(new ImageIcon ("gambar/girl.png"));
} } } ) ;
kosong.addItemListener(new ItemListener()
{
public void itemStateChanged(ItemEvent event)
{
if(event.getSource()==kosong)
{
if(event.getStateChange()==ItemEvent.SELECTED)
orang.setIcon(new ImageIcon ("gambar/banci.png"));
} } } ) ;
}
public static void main(String args[])
{
Aplikasi_ItemListener AL = new Aplikasi_ItemListener();
AL.KomponenVisual();
AL.AksiReaksi();
} }
2.6 ChangeListener
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
54
ChangeListener berfungsi untuk memantau kondisi objek, apakah mengalami
perubahan keadaan (state) atau tidak. Perubahan keadaan (state) yang dimaksud
contohnya adalah ketika komponen di-clik, ketika kursor mouse melewati objek
tersebut dan lainnya, ChangeListener menggunakan package import
javax.swing.event.*;. Method ChangeListener ada satu yaitu :
Tabel 7 Method ChangeListener
Method Fungsinya
addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent ce) });
Dieksekusi ketika sebuah komponen
mengalami perubahan kondisi
Berikut ini contoh penggunaan ChangeListener dengan Jslider dan JTextArea
Gambar 22. Contoh ChangeListener
 Berikut ini coding menggunakan ChangeListener
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*; //library ChangeListener
class Aplikasi_ChangeListener extends JFrame
{
JPanel pane = new JPanel();
JScrollPane scrollPane = new JScrollPane();
JTextArea area = new JTextArea();
JSlider slide = new JSlider(1,150); // 1 batas minim dan 150 batas maxi
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
55
JLabel LFontMax = new JLabel("Maximize / Minimize Font");
JLabel LTulis = new JLabel("Tulis text disini");
JLabel LWall = new JLabel(new ImageIcon("gambar/background.png"));
JLabel Licon = new JLabel(new ImageIcon("gambar/tulis.png"));
Aplikasi_ChangeListener()
{
setTitle("Font Size");
setResizable(false);
setLocation (100,100);
setSize (564,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void KomponenVisual()
{
setContentPane(pane);
pane.setLayout(null);
pane.add(LTulis);
LTulis.setBounds(101, 10, 114, 15);
LTulis.setFont(new Font("Comic Sans MS", Font.BOLD, 14));
LTulis.setForeground(new Color(255, 255, 255));
pane.add(scrollPane);
scrollPane.setBounds(12, 40, 309, 120);
scrollPane.setViewportView(area);
area.setFont(new Font("Comic Sans MS", Font.BOLD, 12));
area.setWrapStyleWord(true);
area.setLineWrap(true);
pane.add(slide);
slide.setBounds(76, 180, 200, 40);
slide.setValue(15); //penentuan awal ukuran slide
pane.add(LFontMax);
LFontMax.setBounds(86, 240, 190, 15);
LFontMax.setFont(new Font("Comic Sans MS", Font.BOLD, 14));
LFontMax.setForeground(new Color(255, 255, 255));
pane.add(Licon);
Licon.setBounds(388, 45, 128, 120);
pane.add(LWall);
LWall.setBounds(0,0,568,348);
setVisible(true);
}
void AksiReaksi()
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
56
{
slide.addChangeListener(new ChangeListener()
{
public void stateChanged(ChangeEvent ce)
{
area.setFont(new Font("Comic Sans MS", Font.BOLD, slide.getValue()));
} } );
}
public static void main(String[] args)
{
Aplikasi_ChangeListener ACL = new Aplikasi_ChangeListener();
ACL.KomponenVisual();
ACL.AksiReaksi();
} }
D. TUGAS
Buatlah sebuah kelas kalkulator yang lebih komplit lagi. Seperti dibawah ini.
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
57
BAB 3
PENGATURAN LAYOUT
A. TUJUAN:
1. Mahasiswa dapat mengatur layout dari form yang dibuat menggunakan
pemrograman bahasa Java.
2. Mahasiswa dapat menjelaskan perbedaan FlowLayout, BorderLayout, GridLayout
dan NoneLayout
3. Mahasiswa dapat menerapkan JPanel.
B. PRASYARAT
1. Algoritma dan Pemograman
2. Pemograman Berorientasi Objek
C. PENGANTAR :
Pengaturan layout digunakan untuk mengatur posisi dari komponen visual
penyusun program sesuai dengan desain user interface. Beberapa pilihan layout telah
disediakan java, dimana keputusan untuk menggunakan jenis layout tertentu bergantung
pada jenis aplikasi yang ingin dibuat serta tingkat kerapian yang diinginkan.
Pada bab-bab terdahulu, manajemen layout yang digunakan adalah none layout,
dimana pengaturan posisi komponen dalam frame dilakukan sendiri oleh programmer.
Beberapa jenis layout yang lain dapat digunakan untuk berbagai keperluan.
Method setLayout() digunakan untuk mengatur jenis metode yang digunakan
pada saat pemasangan komponen. Untuk pengaturan layout menggunakan package
import java.awt.*;
Layout manager mengatur tampilan dari komponen di dalam kontainer.
Container adalah tempat dimana widget berada, seperti button, text area, radio button,
dll.
Berikut ini adalah contoh program yang terdiri dari beberapa komponen dan
diatur dengan menggunakan beberapa jenis manajemen layout agar dapat dilihat
karakteristik masing-masing.
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
58
3.1 FlowLayout
FlowLayout adalah jenis pengaturan layout yang paling sederhana, dimana
semua komponen akan tersusun dari kiri ke kanan sepanjang frame, dan akan pindah
ke bawah bila telah sampai batas kanan frame. Secara default seluruh komponen yang
ditambahkan dengan metode FlowLayout akan ditampilkan dengan rata tengah, namun
metode FlowLayout memiliki konstanta LEFT,CENTER, dan RIGHT untuk mengatur
perataan komponen yang diinginkan. FlowLayout memiliki tiga konstruktor yaitu :
Tabel 8 Method FlowLayout
Method Fungsinya
Flowlayout() Membuat objek baru FlowLayout dengan posisi
ditengah dan lima spasi horizontal dan vertikal sebagai
gap yang dimasukkan pada komponen sebagai default.
Flowlayout (int align) Membuat objek baru FlowLayout dengan posisi spesifik
dan lima spasi horizontal dan vertikal sebagai gap yang
dimasukkan pada komponen sebagai default.
Contoh : FlowLayout (FlowLayout.LEFT)
Flowlayout (int align, int hgap,
int vgap)
Membuat objek baru FlowLayout dengan argumen
pertama sebagai posisi pada komponen dan hgap untuk
spasi horizontal sedangkan vgap untuk spasi vertikal
pada komponen.
Contoh : FlowLayout (FlowLayout.LEFT, 10,10);
Gap dapat dikatakan sebagai jarak antara komponen dan biasanya diukur dengan
satuan pixel. Posisi argumen mengikuti penulisan sebagai berikut :
1. FlowLayout.LEFT
2. FlowLayout.CENTER
3. FlowLayout.RIGHT
Kode program yang digunakan untuk melakukan pengaturan flowlayout adalah:
getContentPane().setLayout(new FlowLayout())
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
59
yang dapat kita letakkan pada method komponenVisual() bersama dengan
komponen-komponen visual.
 Berikut ini coding menggunakan FlowLayout
import javax.swing.*;
import java.awt.*;
class Aplikasi_FlowLayout extends JFrame
{
JLabel nama=new JLabel("Nama");
JTextField txnama=new JTextField(20);
JLabel nim=new JLabel("NIM");
JTextField txnim=new JTextField(7);
JButton tombolSimpan=new JButton("Simpan");
Aplikasi_FlowLayout()
{
setTitle ("Aplikasi FlowLayout");
setLocation(200,100);
setSize(300,120);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void KomponenVisual()
{
getContentPane().setLayout(new FlowLayout());
getContentPane().add(nama);
getContentPane().add(txnama);
getContentPane().add(nim);
getContentPane().add(txnim);
getContentPane().add(tombolSimpan);
setVisible(true);
}
public static void main(String args[])
{
Aplikasi_FlowLayout AF=new Aplikasi_FlowLayout();
AF.KomponenVisual();
} }
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
60
Berikut ini contoh penggunaan FlowLayout
Gambar 23 Contoh FlowLayout
Dalam program di atas komponen visual yang digunakan adalah JLabel,
JTextField dan JButton. Terlihat bahwa komponen visual secara berurutan menempati
posisi dari kiri ke kanan dan selalu berada di tengah frame.
3.2 BorderLayout
BorderLayout merupakan jenis layout yang bekerja dengan membagi frame
menjadi lima bagian sesuai dengan arah mata angin yaitu NORTH, EAST, SOUTH,
WEST dan CENTER. Komponen visual dapat diletakkan pada bagian-bagian tersebut.
Setiap komponen dimasukkan ke dalam region yang spesifik. Region utara dan
selatan membentuk jalur horizontal sedangkan region timur dan barat membentuk
jalur vertikal. Dan region tengah berada pada perpotongan jalur horizontal dan vertikal.
Tampilan ini adalah bersifat default untuk objek Window. Konstruktor BorderLayout
ada dua yaitu :
Tabel 9 Method BorderLayout
Method Fungsinya
BorderLayout() Membuat objek BorderLayout baru tanpa spasi yang
diaplikan diantara komponen yang berbeda.
BorderLayout (int hgap, int vgap) membuat objek BorderLayout dengan spasi unit hgap
untuk spasi horizontal sedangkan vgap untuk spasi
vertical yang diaplikasikan diantara komponen berbeda
Kode program yang digunakan untuk melakukan pengaturan BorderLayout adalah:
getContentPane().setLayout(new BorderLayout());
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
61
Bila program sebelumnya diganti layout-nya menggunakan BorderLayout maka
programnya adalah sebagai berikut:
import javax.swing.*;
import java.awt.*;
class Aplikasi_BorderLayout extends JFrame
{
JLabel nama=new JLabel("Nama");
JLabel nim=new JLabel("NIM");
JTextField txnama=new JTextField(20);
JTextField txnim=new JTextField(7);
JButton tombolSimpan=new JButton("Simpan");
Aplikasi_BorderLayout()
{
setTitle ("Aplikasi BorderLayout");
setLocation(0,0);
setSize(400,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void KomponenVisual()
{
getContentPane().setLayout(new BorderLayout());
getContentPane().add(nama, "North");
getContentPane().add(txnama, "East");
getContentPane().add(nim, "Center");
getContentPane().add(txnim, "West");
getContentPane().add(tombolSimpan, "South");
setVisible(true);
}
public static void main(String args[])
{
Aplikasi_BorderLayout AB=new Aplikasi_BorderLayout();
AB.KomponenVisual();
} }
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
62
Contoh penggunaan BorderLayout adalah:
Gambar 24. Contoh BorderLayout
method add membutuhkan argumen nama obyek dan salah satu dari posisi
layout yang telah disediakan dalam BorderLayout().
3.3 GridLayout
GridLayout adalah jenis layout yang bekerja berdasarkan baris dan kolom.
Dengan layout ini kita dapat memberikan argumen banyaknya baris dan kolom sesuai
dengan kebutuhan. Ada 3 konstuktor untuk grid layout:
Tabel 10. Method GridLayout
Method Fungsinya
GridLayout() membuat layout dengan satu kolom perkomponen.
Hanya satu baris yang digunakan.
GridLayout (int rows, int cols) membuat satu layout berdasarkan jumlah baris dan
kolom yang digunakan
GridLayout (int rows, int cols, int
hgap, int vgap)
membuat layout berdasarkan jumlah baris dan kolom
yang diinginkan, serta ukuran jarak (gap) horizontal
maupun vertical untuk setiap baris dan kolom tersebut.
Kode program yang digunakan untuk melakukan pengaturan GridLayout adalah:
getContentPane().setLayout(new GridLayout(4,2));
Berikut ini adalah program sebelumnya menggunakan pengaturan GridLayout.
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
63
import javax.swing.*;
import java.awt.*;
class Aplikasi_GridLayout extends JFrame
{
JLabel nama=new JLabel("Nama");
JLabel nim=new JLabel("NIM");
JTextField txnama=new JTextField(20);
JTextField txnim=new JTextField(7);
JButton tombolSimpan=new JButton("Simpan");
Aplikasi_GridLayout()
{
setTitle ("Aplikasi GridLayout");
setLocation(200,100);
setSize(450,120);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void KomponenVisual()
{
getContentPane().setLayout(new GridLayout(4,2));
getContentPane().add(nama);
getContentPane().add(txnama);
getContentPane().add(nim);
getContentPane().add(txnim);
getContentPane().add(tombolSimpan);
setVisible(true);
}
public static void main(String args[])
{
Aplikasi_GridLayout AG=new Aplikasi_GridLayout();
AG.KomponenVisual();
} }
Contoh penggunaan GridLayout adalah:
Gambar 25. Contoh GridLayout
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
64
Dimana angka 4 pada argumen GridLayout menunjukkan banyaknya baris dan 2
menunjukkan banyaknya kolom.
3.4 NoneLayout
NoneLayout merupakan jenis layout yang dapat menghasilkan tampilan yang
rapi karena kita dapat mengatur posisi komponen secara detil berdasarkan koordinatnya.
Konsekuensinya dengan layout ini waktu yang diperlukan relatif lebih banyak
dibanding layout yang lain karena kita perlu menentukan posisi koordinat tiap
komponen.
Kode program yang digunakan untuk melakukan pengaturan NoneLayout adalah:
getContentPane().setLayout(null);
import javax.swing.*;
import java.awt.*;
class Aplikasi_NoneLayout extends JFrame
{
JLabel nama=new JLabel("Nama");
JLabel nim=new JLabel("NIM");
JTextField txnama=new JTextField(20);
JTextField txnim=new JTextField(7);
JButton tombolSimpan=new JButton("Simpan");
Aplikasi_NoneLayout()
{
setTitle ("Aplikasi NoneLayout");
setLocation(200,100);
setSize(450,120);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void KomponenVisual()
{
getContentPane().setLayout(null);
getContentPane().add(nama);
nama.setBounds(10,10,100,25);
getContentPane().add(txnama);
txnama.setBounds(150,10,200,20);
getContentPane().add(nim);
nim.setBounds(10,30,100,25);
getContentPane().add(txnim);
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
65
txnim.setBounds(150,30,100,20);
getContentPane().add(tombolSimpan);
tombolSimpan.setBounds(150,50,100,25);
setVisible(true);
}
public static void main(String args[])
{
Aplikasi_NoneLayout AN=new Aplikasi_NoneLayout();
AN.KomponenVisual();
} }
Contoh penggunaan NoneLayout adalah:
Gambar 26. Contoh NoneLayout
Pengaturan ini membutuhkan method setBounds yang digunakan untuk
meletakkan komponen visual pada posisi tertentu. Method ini membutuhkan argumen
koordinat x, koordinat y, lebar obyek dan tinggi obyek. Pada contoh di atas,
komponen label yang kita letakkan pada posisi x = 10, y = 10, lebar 100 dan tinggi 25.
3.5 JPanel
JPanel adalah komponen visual yang digunakan untuk membantu mengatur letak
komponen lain agar terlihat lebih tertata rapi dan nyaman. Berikut ini adalah contoh
penggunaan Jpanel dalam sebuah program. Seperti biasa, sebelum digunakan komponen
JPanel perlu dideklarasikan menggunakan sintaks :
JPanel panel = new JPanel();
import javax.swing.*;
import java.awt.*;
class Aplikasi_Panel extends JFrame
{
JPanel panel=new JPanel();
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
66
JLabel label1=new JLabel("Nama");
JTextField text1=new JTextField(20);
Aplikasi_Panel()
{
setTitle ("Aplikasi Panel");
setLocation(300,100);
setSize(300,150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void KomponenVisual()
{
getContentPane().add(panel);
panel.add(label1);
panel.add(text1);
setVisible(true);
}
public static void main(String args[])
{
Aplikasi_Panel1 AP=new Aplikasi_Panel1();
AP.KomponenVisual();
} }
Contoh penggunaan JPanel adalah:
Gambar 27. Contoh JPanel
JPanel juga bisa digabungkan dengan BorderLayout dan GridLayout yang
diletakkan di komponen visual .
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
67
 JPanel digabungkan dengan BorderLayout
import javax.swing.*;
import java.awt.*;
class Aplikasi_Panel2 extends JFrame
{
JPanel panel = new JPanel();
JLabel label=new JLabel("Nama");
JTextField text=new JTextField(20);
JPanel panel2 = new JPanel();
JButton tombol=new JButton("Simpan");
JButton exit=new JButton("Exit");
Aplikasi_Panel2()
{
setTitle ("Aplikasi Panel2");
setLocation(300,100);
setSize(300,150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void KomponenVisual()
{
getContentPane().add(panel, BorderLayout.NORTH);
panel.add(label);
panel.add(text);
getContentPane().add(panel2, BorderLayout.SOUTH);
panel2.add(tombol);
panel2.add(exit);
setVisible(true);
}
public static void main(String args[])
{
Aplikasi_Panel2 AP2=new Aplikasi_Panel2();
AP2.KomponenVisual();
} }
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
68
Contoh menggunakan gabungan JPanel dan Border Layout.
Gambar 28. Contoh gabungan JPanel dan Border Layout.
Pada contoh di atas terdapat dua JPanel. Layout yang digunakan adalah
BorderLayout sehingga komponen visual dapat diletakkan dalam lima posisi. JPanel
pertama diletakkan pada posisi North dan JPanel kedua diletakkan pada posisi South.
Panel pertama diisi dengan JLabel dan JTextField, sementara panel kedua berisi
JButton. Kedua Panel tersebut kemudian diletakkan dalam Frame menggunakan sintaks
 JPanel digabungan dengan BorderLayout dan GridLayout.
import javax.swing.*;
import java.awt.*;
class Aplikasi_Panel3 extends JFrame
{
JPanel panel = new JPanel();
JLabel label=new JLabel(" Nama");
JTextField text=new JTextField(20);
JPanel panel2 = new JPanel();
JButton tombol=new JButton("Simpan");
JButton exit=new JButton("Exit");
Aplikasi_Panel3()
{
setTitle ("Aplikasi Panel3");
setLocation(300,100);
setSize(300,150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void KomponenVisual()
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
69
{
panel.setLayout(new GridLayout(2,1));
getContentPane().add(panel, BorderLayout.NORTH);
panel.add(label);
panel.add(text);
panel2.setLayout(new BorderLayout());
getContentPane().add(panel2, BorderLayout.SOUTH);
panel2.add(tombol,"Center");
panel2.add(exit,"East");
setVisible(true);
}
public static void main(String args[])
{
Aplikasi_Panel3 AP3=new Aplikasi_Panel3();
AP3.KomponenVisual();
} }
Contoh menggunakan gabungan JPanel dan BorderLayout dan GridLayout.
Gambar 29. Contoh gabungan JPanel dan BorderLayout dan GridLayout.
Pada program di atas, panel pertama diatur menggunakan GridLayout 2 baris 1 kolom.
panel1.add(label1);
panel1.add(text1);
panel1.setLayout(new GridLayout(2,1));
getContentPane().add(panel1, BorderLayout.NORTH);
Sementara itu panel kedua menggunakan BorderLayout yang diisi dengan Tobol
simpan pada posisi Center dan tombol exit pada posisi East.
panel2.setLayout(new BorderLayout());
panel2.add(tombol1,"Center");
panel2.add(exit,"East");
getContentPane().add(panel2, BorderLayout.SOUTH);
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
70
BAB 4
PEMROGRAMAN GRAFIS
A. TUJUAN:
1. Mahasiswa dapat menjelaskan konsep dasar pemrograman grafis pada bahasa
Java.
2. Mahasiswa dapat membuat program untuk mengambar bentuk-bentuk grafik
primitive seperti garis, kotak, segitiga dan lain-lain.
3. Mahasiswa dapat membuat program untuk menampilkan dan mengolah data
gambar (image).
B. PRASYARAT
1. Algoritma dan Pemograman
2. Pemograman Berorientasi Objek
C. PENGANTAR
Pemrograman grafis digunakan dalam banyak hal mulai dari upaya untuk
memperoleh tampilan yang indah, aplikasi animasi, aplikasi simulasi, aplikasi
pengolahan citra sampai visi komputer. Berikut ini adalah beberapa pemrograman dasar
di bidang grafis dalam java yang diharapkan dapat menjadi bekal awal untuk memahami
berbagai topik seputar grafis yang begitu luas. Pembahasan permograman garis akan
dimulai dari menggambar obyek-obyek sederhana menggunakan garis,
Bahasa Java merupakan salah satu bahasa dengan fasilitas berupa komponen-
komponen grafis yang lengkap. Karena itulah banyak program grafik, dan permainan
yang berbasis grafik dibuat menggunakan bahasa Java.
4.1 Dasar Pemrograman Grafis
Salah satu cara untuk membuat aplikasi grafis dengan java adalah dengan
membuat class yang merupakan turunan dari class canvas. Dalam class inilah kita
meletakkan gambar atau animasi, dan membentuk sebuah obyek untuk mengakses
gambar kita tersebut.
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
71
 Berikut ini coding pembentukan Class Kanvas
import javax.swing.*;
import java.awt.*;
class Aplikasi_Kanvas1 extends Canvas
{
public void paint(Graphics g)
{
} }
class Menggambar extends JFrame
{
//pemanggilan kelas kanvas
Aplikasi_Kanvas1 gambar=new Aplikasi_Kanvas1();
Menggambar()
{
super("Aplikasi Grafis ");
setLocation(100,100);
setSize(250,150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void KomponenVisual()
{
getContentPane().setLayout(new BorderLayout());
getContentPane().add(gambar,BorderLayout.CENTER);
setVisible(true);
}
public static void main (String[] args)
{
Menggambar g1=new Menggambar();
g1.KomponenVisual();
} }
Contoh penggunaan kelas Kanvas adalah:
Gambar 30. Contoh Kelas Kanvas
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
72
class Kanvas1 extends Canvas
{
public void paint(Graphics g)
{ } }
Sintaks ini merupakan class tempat menggambar berbagai obyek gambar. Class
inilah yang digunakan untuk meletakkan gambar yang kita bangun menggunakan kode-
kode tertentu. Kode-kode tersebut diletakkan dalam method paint. Pada method
paint() di atas tidak terdapat baris kode apapun sehingga output yang muncul adalah
frame kosong tanpa gambar apapun.
class Menggambar extends JFrame
{
Kanvas1 gambar=new Kanvas1();
..........
..........
}
Class Menggambar adalah program aplikasi grafis kita. Pada class ini kita
membentuk obyek menggunakan class Kanvas1 dengan nama gambar. Method paint()
pada Class Kanvas1 dapat diisi dengan berbagai sintaks untuk membuat aplikasi grafis,
misalnya kita isi dengan sintaks berikut :
class Kanvas1 extends Canvas
{
public void paint(Graphics g)
{
g.setColor(Color.red);
g.drawLine(10,10,250,10);
g.setColor(Color.blue);
g.drawRect(10,20,100,50);
g.setColor(Color.red);
g.drawOval(120,20,50,50);
g.drawString("Selamat Belajar", 100,100);
g.setColor(Color.black);
} }
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
73
Tabel 11. Method Grafis
Method Fungsinya
g.setColor(Color.red); Digunakan untuk mengatur warna dari obyek gambar
setelah baris tersebut dituliskan
g.drawLine(10,10,250,10); Digunakan untuk mengambar bentuk garis dimana
argumen pertama dan kedua menunjukkan koordinat
titik awal garis, argumen ketiga dan keempat
menunnjukkan koordinat titik akhir garis.
g.drawRect(10,20,100,50); Digunakan untuk menggambar bentuk segi empat
dimana argumen pertama dan kedua merupakan ujung
kiri atas, argumen krtiga dan keempat menunjukkan
ujung kanan bawah dari segi empat.
g.drawOval(120,20,50,50); Digunakan untuk menggambar bentuk lingkaran dimana
argumen pertama dan kedua merupakan koordinat
pusat, argumen krtiga jarak horisontal dan argumen
keempat adalah jarak vertikal.
g.drawString("Selamat Belajar",
100,100);
Digunakan untuk menggambar bentuk string. Argumen
pertama merupakan string yang akan ditampilkan,
argumen kedua dan ketiga menuunjukkan posisi dari
tulisan.
 Berikut ini coding menggunakan Class Kanvas
import javax.swing.*;
import java.awt.*;
class Aplikasi_Kanvas2 extends Canvas
{
public void paint(Graphics g)
{
g.setColor(Color.red);
g.drawLine(10,10,250,10);
g.setColor(Color.blue);
g.drawRect(10,20,100,50);
g.setColor(Color.red);
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
74
g.drawOval(120,20,50,50);
g.drawString("Selamat Belajar", 100,100);
g.setColor(Color.black);
}
}
class Menggambar extends JFrame
{
Aplikasi_Kanvas2 gambar=new Aplikasi_Kanvas2();
Menggambar()
{
super("Aplikasi Grafis ");
setLocation(0,0);
setSize(300,150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void KomponenVisual()
{
getContentPane().setLayout(new BorderLayout());
getContentPane().add(gambar,BorderLayout.CENTER);
setVisible(true);
}
public static void main (String[] args)
{
Menggambar g1=new Menggambar();
g1.KomponenVisual();
} }
Contoh penggunaan kelas Kanvas adalah:
Gambar 31. Contoh Objek Kanvas
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
75
Masih banyak method lain yang berhubungan dengan bentuk-bentuk grafis ini,
silahkan ber-eksplorasi untuk menambah wawasan anda. Salah satu kegunaan dari
pembentukan gambar-gambar di atas adalah untuk keperluan pembuatan grafik dan
animasi. Berikut ini adalah program visualisasi grafik sinus dan cosinus sederhana yang
didasarkan pada pengetahuan di atas.
 Berikut ini coding menggunakan Animasi grafik
import javax.swing.*;
import java.awt.*;
class Aplikasi_KanvasAnimasi extends Canvas
{
public void paint(Graphics g)
{
g.setColor(Color.black);
g.drawLine(10,10,10,210);
g.drawLine(5,110,380,110);
g.drawString("1",2,14);
g.drawString("-1",14,210);
g.drawString("0",13,123);
g.drawString("90",100,123);
g.drawString("180",190,123);
g.drawString("270",280,123);
g.drawString("360",370,123);
g.setColor(Color.red);
for(int i=0; i<360; i+=1)
{
int y=(int) (Math.sin(i*Math.PI/180)*100)*-1;
g.drawOval(i+10,y+110,1,1);
}
g.setColor(Color.blue);
for(int i=0; i<360; i+=1)
{
int y=(int) (Math.cos(i*Math.PI/180)*100)*-1;
g.drawOval(i+10,y+110,1,1);
}
g.setColor(Color.GREEN);
for(int i=0; i<360; i+=1)
{
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
76
int y=(int) (Math.tan(i*Math.PI/180)*100)*-1;
g.drawOval(i+10,y+110,1,1);
} } }
class Animasi extends JFrame
{
Aplikasi_KanvasAnimasi gambar=new Aplikasi_KanvasAnimasi();
Animasi()
{
setTitle("Plotting Fungsi Sinus dan Cosinus ");
setLocation(200,100);
setSize(400,260);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void KomponenVisual()
{
getContentPane().setLayout(new BorderLayout());
getContentPane().add(gambar, BorderLayout.CENTER);
setVisible(true);
}
public static void main (String[] args)
{
Animasi anime=new Animasi();
anime.KomponenVisual();
} }
Contoh penggunaan kelas Kanvas sinus dan cosinus adalah:
Gambar 32. Contoh penggunaan kelas Kanvas sinus dan cosinus
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
77
Seperti pada program sebelumnya, program ini juga terdiri dari dua class yaitu
class KanvasAnimasi yang berisi gambar atau bentuk-bentuk grafis dan class Animasi
yang digunakan untuk menampilkan gambar tersebut. Perubahan terjadi pada class
KanvasAnimasi sementara class Animasi tidak mengalami perubahan.
Class KanvasAnimasi terdiri dari dua bagian yaitu bagian yang digunakan
untuk untuk menggambar sumbu x dan y, serta bagian yang digunakan untuk
menampilkan grafik sinus dan cosinus. Bagian untuk menggambar sumbu x dan y
adalah :
g.setColor(Color.black);
g.drawLine(10,10,10,210);
g.drawLine(5,110,380,110);
g.drawString("1",2,14);
g.drawString("-1",14,210);
g.drawString("0",13,123);
g.drawString("90",100,123);
g.drawString("180",190,123);
g.drawString("270",280,123);
g.drawString("360",370,123);
Penjelasan masing-masing baris sintaks di atas adalah sebaga berikut,
g.drawString("1",2,14);
Adalah sintaks yang digunakan untuk menuliskan string pada argumen pertama
ke dalam gambar, argumen kedua dan ketiga digunakan untuk menentukan posisinya
pada frame. Bagian untuk menampilkan grafik sinus adalah :
g.setColor(Color.red);
for(int i=0; i<360; i+=1)
{
int y=(int) (Math.sin(i*Math.PI/180)*100)*-1;
g.drawOval(i+10,y+110,1,1);
}
Perulangan for(int i=0; i<360; i+=1) diperlukan karena kita ingin menampilkan
mulai grafik mulai dari 0o
sampai 360o
. Method sin() memiliki argumen dalam bentuk
radian sehingga perlu dilakukan konversi ke bentuk derajat dengan mengalikan setiap
bilangan dengan π/180. Hasil dari perkalian ini dikalikan dengan 100 supaya skalanya
lebih besar. Selanjutnya hasil perhitungan tersebut dikalikan dengan -1 agar gambar
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
78
grafik menemukan posisi yang benar. Perlu diingat bahwa koordinat grafis agak berbeda
dengan koordinat kartesius yang biasa. Titik (0,0) pada koordinat grafis terletak di ujung
kiri atas dari layar monitor. Bila tidak kita kalikan dengan -1 maka tampilan yang
diperoleh posisinya akan terbalik.
Proses terakhir adalah type casting yang dilakukan untuk memaksa hasil
perhitungan menjadi bilangan bulat sehingga dapat digunakan sebagai argumen bagi
method g.drawOval() yang membutuhkan argumen bertipe integer.
Program di atas akan langsung menampilkan grafik sinus ketika program
dijalankan. Kita dapat menambahkan satu baris kode di dalam proses plotting untuk
memunculkan efek animasi. Baris kode berikut :
try
{
Thread.sleep(10);
}
catch(Exception e)
{ }
Perlu ditambahkan pada saat plotting grafik sinus sehingga kode pada bagian
proses menampilkan gambar akan berubah menjadi :
g.setColor(Color.red);
for(int i=0; i<360; i+=1)
{
int y=(int) (Math.sin(i*Math.PI/180)*100)*-1;
g.drawOval(i+10,y+110,1,1);
try
{
Thread.sleep(10);
}
catch(Exception e)
{ } }
Untuk plotting grafik cosinus dilaksanakan dengan cara yang sama, hanya
mengubah sin menjadi cos. Perubahan akibat penambahan kode di atas akan terlihat
pada saat program dijalankan. Bila sebelumnya gambar grafik langsung muncul, maka
sekarang akan muncul satu-satu yaitu grafik sinus terlebih dulu yang berjalan dari 0o
sampai 360o
dilanjutkan dengan grafik cosinus yang juga bergerak dari 0o
sampai 360o
.
Program lengkapnya adalah sebagai berikut:
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
79
import javax.swing.*;
import java.awt.*;
class Aplikasi_KanvasAnimasi2 extends Canvas
{
public void paint(Graphics g)
{
g.setColor(Color.black);
g.drawLine(10,10,10,210);
g.drawLine(5,110,380,110);
g.drawString("1",2,14);
g.drawString("-1",14,210);
g.drawString("0",13,123);
g.drawString("90",100,123);
g.drawString("180",190,123);
g.drawString("270",280,123);
g.drawString("360",370,123);
g.setColor(Color.red);
for(int i=0; i<360; i+=1)
{
int y=(int) (Math.sin(i*Math.PI/180)*100)*-1;
g.drawOval(i+10,y+110,1,1);
try
{
Thread.sleep(10);
}
catch(Exception e)
{ } }
g.setColor(Color.blue);
for(int i=0; i<360; i+=1)
{
int y=(int) (Math.cos(i*Math.PI/180)*100)*-1;
g.drawOval(i+10,y+110,1,1);
try
{
Thread.sleep(10);
}
catch(Exception e)
{ } }
g.setColor(Color.GREEN);
for(int i=0; i<360; i+=1)
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
80
{
int y=(int) (Math.tan(i*Math.PI/180)*100)*-1;
g.drawOval(i+10,y+110,1,1);
try
{
Thread.sleep(10);
}
catch(Exception e)
{ } } } }
class Animasi extends JFrame
{
Aplikasi_KanvasAnimasi2 gambar=new Aplikasi_KanvasAnimasi2();
Animasi()
{
setTitle("Plotting Fungsi Sinus dan Cosinus ");
setLocation(200,100);
setSize(400,260);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void KomponenVisual()
{
getContentPane().setLayout(new BorderLayout());
getContentPane().add(gambar, BorderLayout.CENTER);
setVisible(true);
}
public static void main (String[] args)
{
Animasi anime=new Animasi();
anime.KomponenVisual();
} }
Contoh penggunaan pergerakan kelas Kanvas sinus dan cosinus adalah:
Gambar 33. Contoh pergerakan kelas Kanvas sinus dan cosinus
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
81
4.2 Bekerja Dengan Citra
Dalam pengolahan citra dan visi komputer kita akan bekerja dengan gambar atau
citra. Pengolahan citra berhubungan dengan proses untuk mengubah citra menjadi citra
lain sesuai dengan keperluan, sementara visi komputer berupaya mendapatkan informasi
tertentu dari sebuah citra.
Langkah pertama dalam pengolahan citra adalah menangkap gambar dan
menyimpannya sebagai data. Setelah proses tersebut, proses pengolahan citra dapat
dilakukan dengan menggunakan berbagai algoritma pengolahan citra. Berikut ini adalah
cara menangkap dan menampilkan citra dalam pemrograman Java.
 Berikut ini coding menampilkan gambar dalam canvas
import javax.swing.*;
import java.awt.*;
import java.awt.image.*; //library untuk gambar
class Aplikasi_KanvasCitra extends Canvas
{
public void paint(Graphics grafis)
{
Graphics2D g = (Graphics2D) grafis;
Image image=new ImageIcon("aaa.jpg").getImage();
g.drawImage(image,0,2,this);
} }
class AmbilCitra3 extends JFrame
{
Aplikasi_KanvasCitra gambar=new Aplikasi_KanvasCitra();
public AmbilCitra3()
{
setTitle("gambar");
setLocation(100,100);
setSize(220,350);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void komponenVisual()
{
getContentPane().setLayout(new BorderLayout());
getContentPane().add(gambar,BorderLayout.CENTER);
setVisible(true);
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
82
}
public static void main(String args[])
{
AmbilCitra3 c3=new AmbilCitra3();
c3.komponenVisual();
} }
Contoh menampilkan citra adalah:
Gambar 34. Contoh Menampilkan Citra
Program ini terdiri dari dua class yaitu class KanvasCitra3 dan class
AmbilCitra3. Dalam class KanvasCitra3 terdapat sintaks :
Image image=new ImageIcon("aaa.jpg").getImage()
Yang digunakan untuk mengambil citra dari sebuah file.
g.drawImage(image,0,2,this)
Digunakan untuk menampilkan gambar ke dalam frame.
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
83
 Berikut ini coding membuat citra menggunakan kanvas.
import javax.swing.*;
import java.awt.*;
class kanvasUltah extends Canvas
{
public void paint(Graphics gambarkan)
{
gambarkan.setColor(Color.BLACK); //untuk api nya
gambarkan.fillRect(335,100,2,10);
gambarkan.fillRect(385,100,2,10);
gambarkan.fillRect(435,100,2,10);
gambarkan.setColor(Color.PINK); //untuk lilin nya
gambarkan.fillRect(330,110,10,90);
gambarkan.fillRect(380,110,10,90);
gambarkan.fillRect(430,110,10,90);
gambarkan.setColor(Color.GREEN); //untuk kue tingkat 1
gambarkan.fillRect(175,200,400,70);
gambarkan.setColor(Color.darkGray); //untuk kue tingkat 2
gambarkan.fillRect(70,250,600,90);
gambarkan.setColor(Color.BLACK); //untuk bawah kue tingkat 3
gambarkan.fillRect(50,300,640,50);
gambarkan.setColor(Color.RED); //untuk bola kue
gambarkan.fillOval(165,260,30,30);
gambarkan.fillOval(375,260,30,30);
gambarkan.fillOval(565,260,30,30);
gambarkan.setColor(Color.darkGray); //untuk bola kue
gambarkan.fillOval(270,210,40,30);
gambarkan.fillOval(450,210,40,30);
gambarkan.drawString("SELAMAT ULANG TAHUN", 310,80);
gambarkan.setColor(Color.black);
} }
class Menggambar extends JFrame
{
kanvasUltah gambar=new kanvasUltah();
Menggambar()
{
super("Aplikasi Grafis ");
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
84
setLocation(0,0);
setSize(800,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void KomponenVisual()
{
getContentPane().setLayout(new BorderLayout());
getContentPane().add(gambar,BorderLayout.CENTER);
setVisible(true);
}
public static void main (String[] args)
{
Menggambar g1=new Menggambar();
g1.KomponenVisual();
} }
Contoh membuat citra menggunakan kanvas.
Gambar 35. Contoh gambar kue ulang tahun
Selain membuat kue ulang tahun java juga bisa membuat gambar yang lain nya
sesuai selera. Berikut salah satu contoh aplikasi kanvas membuat gambar unit komputer.
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
85
 Cara membuat citra menggunakan kanvas.
import javax.swing.*;
import java.awt.*;
class Aplikasi_KanvasKomputer extends Canvas
{
public void paint(Graphics g)
{
//alas (tamplak bawah)
g.setColor(Color.blue);
int Vx3[ ] = {50,590,550,10};
int Vy3[ ] = {200,200,500,500};
int np3 = Vx3.length;
Polygon poly3 = new Polygon(Vx3, Vy3, np3);
g.fillPolygon(poly3);
//monitor
g.setColor(Color.black);
g.fillRoundRect(80,50,280,220,40,40);
g.fillOval(140,280,150,50);
//dalam nya monitor
g.setColor(Color.white);
g.fillRoundRect(90,60,260,190,40,40);
//CPU
g.setColor(Color.black);
g.fillRoundRect(400,10,130,300,20,20);
g.setColor(Color.blue);
g.drawRoundRect(410,20,110,280,20,20);
g.drawRect(415,50,100,20);
g.drawRect(410,175,110,25);
g.drawRect(410,125,110,25);
g.drawLine(410,275,520,275);
g.setColor(Color.white);
g.drawRect(450,285,10,5);
g.drawRect(470,285,10,5);
g.setColor(Color.red);
g.fillOval(455,220,20,20);
g.fillOval(460,250,10,10);
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
86
//keyboard
g.setColor(Color.black);
int Vx2[ ] = {70,320,290,40};
int Vy2[ ] = {350,350,430,430};
int np2 = Vx2.length;
Polygon poly2 = new Polygon(Vx2, Vy2, np2);
g.fillPolygon(poly2);
g.setColor(Color.white);
g.drawLine(70,370,300,370);
g.drawLine(70,390,300,390);
g.drawLine(65,410,290,410);
//mouse
g.setColor(Color.yellow);
g.fillRoundRect(360,350,40,60,40,40);
g.setColor(Color.black);
g.drawLine(360,370,400,370);
g.drawLine(380,350,380,370);
//segitiga
g.setColor(Color.RED);
int x [] = {10, 40, 70};
int y [] = {90, 30,90};
Polygon segitiga = new Polygon(x, y, 3);
g.fillPolygon(segitiga);
} }
class Menggambar extends JFrame
{
Aplikasi_KanvasKomputer gambar=new Aplikasi_KanvasKomputer();
Menggambar()
{
super("Aplikasi Grafis ");
setLocation(0,0);
setSize(650,550);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void KomponenVisual()
{
getContentPane().setLayout(new BorderLayout());
getContentPane().add(gambar,BorderLayout.CENTER);
setVisible(true);
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
87
}
public static void main (String[] args)
{
Menggambar g1=new Menggambar();
g1.KomponenVisual();
} }
Contoh membuat citra menggunakan kanvas.
Gambar 36. Contoh Gambar Komputer
D. TUGAS
Buatlah sebuah gambar logo menggunakan kanvas java.
Ramadhani, S.Kom
Pemograman Java Visual Berbasis Database Jilid I
88
DAFTAR PUSTAKA
Fatchurrochman, & Basuki, A. (2007). Pemograman Visual Java. Yogyakarta: Graha
Ilmu.
Purnama, R. (2007). Pemograman GUI dengan Java. Jakarta: Prestasi Pustaka.
Triyuliana, A. H. (2006). Membuat Aplikasi Database dengan Java2. Semarang:
Wahana Komputer.

Buku jvv jilid 1 ok

  • 1.
    RAMADHANI,S.KOM PEMOGRAMAN JAVA VISUAL BERBASISDATABASE JILID I POLITEKNIK ACEH 2014 TINGKAT PEMULA
  • 2.
    HALAMAN PENGESAHAN 1. IdentitasBuku/Bahan Ajar a. Judul Buku/Bahan Ajar : Pemograman Java Visual Berbasis Database Jilid I b. Matakuliah/Semester : Teori Pemograman Java Visual c. SKS (T/P)/Jam (T/P) : 3 (T) / 54 jam (T) d. Program Studi : Teknik Informatika e. Kode Matakuliah : KP393 2. Penulis a. Nama : Ramadhani,S.Kom b. NRP : 220120901 c. NIDN / NUPN : 9943000068 d. Jabatan Fungsional : - e. Program Studi : Teknik Informatika f. Pusat Penelitian : UPM Politeknik Aceh g. Alamat Institusi : Jl. Tanggul, Desa Pango Raya, Kec. Ulee Kareng, Kotamadya Banda Aceh 23119 NAD h. Telpon/Faks/E-mail : 0651-7415005 / 0651- 7415505 / ramadhani@politeknikaceh.ac.id Banda Aceh, 03 Januari 2014 Mengetahui, Ketua Program Studi, Penulis, Safwan, S.T Ramadhani,S.Kom NRP. 220100707 NRP. 220120901 Menyetujui, Wakil Direktur Bidang Akademik Didiek Hari Nugroho, S.T NRP. 120110105
  • 3.
    Ramadhani, S.Kom i KATA PENGANTAR PujiSyukur atas ke hadirat Allah SWT yang telah melimpahkan rahmat – Nya kepada penulis sehingga penulis dapat menyelesaikan buku yang berjudul “Pemograman Java Visual Berbasis Database Jilid 1” ini dengan baik. Saat ini pemograman java sedang naik daun dimana hampir seluruh aspek teknologi sudah menggunakan java, baik itu aplikasi desktop, mobile dan juga web. Buku ini dibagi menjadi dua jilid, yang mana buku jilid 1 ini lebih dikhusus kan untuk para pemula dalam mempelajari pemograman java visual. Sedangkan buku jilid kedua dikhususkan untuk tingkat lanjut yanag ingin mendalami sebagai programer. Buku ini menyajikan cara pembuatan aplikasi dasar pada teknologi berbasis dekstop serta membahas bagaimana kode program digunakan. Buku ini sangat cocok untuk mahasiswa yang merupakan para pemula yang ingin mempelajari java visual. Penulis mengucapkan terima kasih kepada semua pihak yang telah memberi masukan dan koreksi yang sangat bermakna bagi penyempurnaan buku ini. Semoga Allah membalas semuanya dengan kebaikan yang berlipat ganda. Banda Aceh, 3 Februari 2014 Ramadhani, S.Kom NRP. 220120901
  • 4.
    Ramadhani, S.Kom ii DAFTAR ISI KATAPENGANTAR....................................................................................................... i DAFTAR ISI .................................................................................................................... ii DAFTAR GAMBAR....................................................................................................... iv DAFTAR TABEL ............................................................................................................ v BAB 1 KOMPONEN – KOMPONEN VISUAL JAVA.................................................. 1 A. TUJUAN............................................................................................................ 1 B. PRASYARAT.................................................................................................... 1 C. PENGANTAR : ................................................................................................. 1 1.1 JFrame............................................................................................................ 1 1.2 JLabel ............................................................................................................. 3 1.3 JTextField....................................................................................................... 5 1.4 JButton ........................................................................................................... 7 1.5 JRadioButton.................................................................................................. 8 1.6 JComboBox.................................................................................................. 11 1.7 JTextArea ..................................................................................................... 13 1.8 JCheckBox ................................................................................................... 15 1.9 JTable ........................................................................................................... 17 1.10 JScrollPane ............................................................................................... 20 1.11 JMenu ....................................................................................................... 22 1.12 JInternalFrame.......................................................................................... 27 1.13 JPasswordField......................................................................................... 28 1.14 Border (Bingkai)....................................................................................... 30 1.15 JPopupMenu............................................................................................. 33 D. TUGAS ............................................................................................................ 35 BAB II EVENT HANDLER.......................................................................................... 36 A. TUJUAN :........................................................................................................ 36 B. PRASYARAT.................................................................................................. 36 C. PENGANTAR ................................................................................................. 36 2.1 ActionListener.............................................................................................. 37 2.2 KeyListener .................................................................................................. 40 2.3 MouseListener.............................................................................................. 44 2.4 MouseMotionListener .................................................................................. 48 2.5 ItemListener ................................................................................................. 50 2.6 ChangeListener............................................................................................. 53
  • 5.
    Ramadhani, S.Kom iii D. TUGAS............................................................................................................ 56 BAB III PENGATURAN LAYOUT ............................................................................. 57 A. TUJUAN:......................................................................................................... 57 B. PRASYARAT.................................................................................................. 57 C. PENGANTAR : ............................................................................................... 57 3.1 FlowLayout .................................................................................................. 58 3.2 BorderLayout ............................................................................................... 60 3.3 GridLayout ................................................................................................... 62 3.4 NoneLayout.................................................................................................. 64 3.5 JPanel ........................................................................................................... 65 BAB IV PEMROGRAMAN GRAFIS........................................................................... 70 A. TUJUAN:......................................................................................................... 70 B. PRASYARAT.................................................................................................. 70 C. PENGANTAR ................................................................................................. 70 4.1 Dasar Pemrograman Grafis.......................................................................... 70 4.2 Bekerja Dengan Citra................................................................................... 81 D. TUGAS ............................................................................................................ 87 DAFTAR PUSTAKA..................................................................................................... 88
  • 6.
    Ramadhani, S.Kom iv DAFTAR GAMBAR Gambar1 Contoh JFrame................................................................................................ 2 Gambar 2 Contoh Jlabel ................................................................................................... 3 Gambar 3 Contoh JTextField ........................................................................................... 5 Gambar 4 Contoh JButton................................................................................................ 7 Gambar 5 Contoh JRadioButton....................................................................................... 8 Gambar 6 Contoh JComboBox ...................................................................................... 11 Gambar 7 Contoh JTextArea.......................................................................................... 14 Gambar 8 Contoh JCheckBox........................................................................................ 15 Gambar 9 Contoh JTable................................................................................................ 17 Gambar 10 Contoh JTable Manual................................................................................. 18 Gambar 11 Contoh JscrollPane ...................................................................................... 20 Gambar 12 Contoh JMenu.............................................................................................. 23 Gambar 13 Contoh JMenu Gabungan Komponen ......................................................... 24 Gambar 14 Contoh JPasswordField ............................................................................... 28 Gambar 15 Contoh Border ............................................................................................. 31 Gambar 16 Contoh JPopupMenu ................................................................................... 33 Gambar 17 Contoh ActionListener pada JButton .......................................................... 38 Gambar 18 Contoh KeyListener pada JTextField.......................................................... 41 Gambar 19 Contoh MouseListener pada JLabel ............................................................ 45 Gambar 20 Contoh MouseMotionListener..................................................................... 49 Gambar 21. Contoh ItemListener................................................................................... 51 Gambar 22. Contoh ChangeListener .............................................................................. 54 Gambar 23 Contoh FlowLayout..................................................................................... 60 Gambar 24. Contoh BorderLayout................................................................................. 62 Gambar 25. Contoh GridLayout..................................................................................... 63 Gambar 26. Contoh NoneLayout ................................................................................... 65 Gambar 27. Contoh JPanel............................................................................................. 66 Gambar 28. Contoh gabungan JPanel dan Border Layout. ............................................ 68 Gambar 29. Contoh gabungan JPanel dan BorderLayout dan GridLayout.................... 69 Gambar 30. Contoh Kelas Kanvas ................................................................................. 71 Gambar 31. Contoh Objek Kanvas................................................................................. 74 Gambar 32. Contoh penggunaan kelas Kanvas sinus dan cosinus................................. 76 Gambar 33. Contoh pergerakan kelas Kanvas sinus dan cosinus................................... 80 Gambar 34. Contoh Menampilkan Citra ........................................................................ 82 Gambar 35. Contoh gambar kue ulang tahun................................................................. 84 Gambar 36. Contoh Gambar Komputer ......................................................................... 87
  • 7.
    Ramadhani, S.Kom v DAFTAR TABEL Tabel1 Macam - Macam Event ..................................................................................... 36 Tabel 2 Macam - Macam Listener.................................................................................. 37 Tabel 3 Method KeyListener.......................................................................................... 40 Tabel 4 Method MouseListener...................................................................................... 44 Tabel 5 Method MouseMotionListener.......................................................................... 48 Tabel 6 Method ItemListener ......................................................................................... 50 Tabel 7 Method ChangeListener .................................................................................... 54 Tabel 8 Method FlowLayout.......................................................................................... 58 Tabel 9 Method BorderLayout ....................................................................................... 60 Tabel 10. Method GridLayout........................................................................................ 62 Tabel 11. Method Grafis................................................................................................. 73
  • 8.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 1 BAB I KOMPONEN – KOMPONEN VISUAL JAVA A. TUJUAN 1. Mahasiswa dapat membangun komponen visual menggunakan bahasa Java. 2. Mahasiswa dapat menerapkan komponen-komponen visual tersebut ke dalam contoh-contoh sederhana B. PRASYARAT 1. Algoritma dan Pemograman 2. Pemograman Berorientasi Objek C. PENGANTAR : Java Swing Merupakan sekumpulan kelas-kelas yang digunakan untuk mengembangkan aplikasi berbasis GUI (Graphical User Interface). Java Swing merupakan versi peningkatan dari AWT (Abstract Window Toolkit) Kelas – kelas komponen GUI dalam Java Swing biasa diawali dengan hurup J, Kelas – kelas Java Swing terdapat pada package import javax.swing.* Komponen visual adalah berbagai objek yang digunakan dalam membangun program berbasis windows. Dengan komponen-komponen ini diharapkan pengguna akhir dapat menggunakan program yang kita buat dengan lebih mudah dan nyaman. Dalam bab ini tidak semua komponen visual dibahas, hanya komponen yang dianggap sering digunakan saja yang ditampilkan sebagai bahan eksplorasi lebih lanjut bagi anda terhadap berbagai komponen java. 1.1 JFrame JFrame adalah komponen dasar dalam pemrograman visual dengan java. Dalam frame inilah komponen lain diletakkan. Berikut adalah kode program yang diperlukan untuk membuat sebuah frame kosong. Program ini menggunakan constructor tunggal tanpa argumen yang digunakan untuk menampung properti frame yang dikehendaki.
  • 9.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 2 Contoh penggunaan JFrame adalah: Gambar 1 Contoh JFrame  Berikut ini coding contoh penggunaan JFrame import javax.swing.*; class Aplikasi_Frame extends JFrame { Aplikasi_Frame() { setTitle("Aplikasi JFrame"); setLocation (300,100); setSize (300,150); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setResizable (false); setVisible(true); } public static void main (String args[]) { Aplikasi_Frame AF=new Aplikasi_Frame(); } }  Penjelasan koding program. Coding Keterangan import javax.swing.*; Pernyataaan ini merupakan perintah yang digunakan untuk menyiapkan class-class yang diperlukan oleh program kita. Komponen visual yang kita perlukan dalam pemrogaman visual berada dalam paket import javax.swing.*; class Aplikasi_Frame extends JFrame Pernyataan ini menunjukkan bahwa class Aplikasi_Frame merupakan turunan dari class JFrame yang berarti bahwa class ini memiliki atribut-atribut dari class JFrame. Aplikasi_Frame() { } Merupakan constructor bagi class Aplikasi_Frame sehingga pada saat kita membentuk sebuah obyek, semua kode di
  • 10.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 3 dalamnya akan dilaksanakan setTitle ("Aplikasi JFrame"); Digunakan untuk membuat judul frame. setLocation (300,100); Digunakan untuk menentukan posisi frame di layar monitor dimana 300 menunjukkan posisi x dan 100 menunjukkan posisi y setSize (300,150); Digunakan untuk menentukan besar frame dimana 300 menunjukkan lebar frame dan 150 menunjukkan tinggi frame. setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE) Digunakan untuk mengakhiri jalannya program bila frame ditutup. Bila perintah tersebut tidak ada, maka penutupan frame tidak akan menghentikan jalannya program. setResizable (false); Digunakan untuk menutup tombol maxi setVisible(true) Digunakan untuk menampilkan frame public static void main (String args[]) Merupakan metode utama agar program dapat dijalankan Aplikasi_Frame AF = new Aplikasi_Frame (); Membentuk obyek dari class Aplikasi_Frame, yang secara otomatis menjalankan constructor yang berisi sintaks-sintaks untuk membuat frame kosong. 1.2 JLabel JLabel adalah komponen yang digunakan untuk membuat tulisan atau gambar pada frame sebagai suatu informasi untuk pengguna program. Untuk menggunakan JLabel, sebagai suatu class maka sebelumnya perlu dibuat suatu obyek menggunakan class JLabel. Adapun sintax JLabel adalah : JLabel label = new JLabel (“NIM”); Contoh penggunaan JLabel adalah: Gambar 2 Contoh Jlabel
  • 11.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 4  Berikut ini coding contoh penggunaan JLabel import javax.swing.*; class Aplikasi_Label extends JFrame { JLabel Lnim = new JLabel ("NIM"); Aplikasi_Label() { setTitle("Aplikasi JLabel"); setLocation (300,100); setSize (300,150); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void KomponenVisual() { getContentPane().setLayout(null); getContentPane().add(Lnim); Lnim.setBounds(10,10,70,20); setVisible(true); } public static void main (String args[]) { Aplikasi_Label AL = new Aplikasi_Label(); AL.KomponenVisual(); } }  Penjelasan koding program. Coding Keterangan JLabel Lnim = new JLabel ("NIM"); Merupakan cara untuk membentuk obyek JLabel yang kita beri nama Lnim dan bertuliskan “NIM“. Obyek ini akan kita gunakan sebagai informasi kepada user untuk memasukkan NIM mahasiswa. method void komponenVisual () digunakan untuk meletakkan berbagai komponen visual yang kita gunakan dalam program. getContentPane().setLayout(null) Sintaks di atas digunakan untuk mengatur tata letak komponen dalam frame, dimana layout null berarti bahwa koordinat tiap komponen dalam frame harus ditentukan
  • 12.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 5 sendiri posisinya oleh programmer. getContentPane().add(Lnim) adalah perintah yang digunakan untuk menempelkan obyek JLabel ke frame. ibnim.setBounds(10,10,70,20); perintah ini berhubungan dengan getContentPane().setLayout(null) yang berguna untuk mengatur posisi dari komponen JLabel yang bernama Lnim. Pengaturan posisi dilakukan dengan menggunakan setBounds(10,10,70,20) dimana agrumen pertama menunjukkan koordinat x dari ujung kiri atas obyek, argumen kedua menunjukkan koordinat y dari ujung kiri atas obyek, argumen ketiga menunjukkan lebar dari obyek dan argumen keempat menunjukkan tinggi dari obyek. setVisible(true); digunakan untuk menampilkan frame berserta semua obyek yang ada di dalamnya. Pada program sebelumnya method ini kita letakkan pada constructor karena kita belum membuat method komponenVisual(). Pada main, kita perlu memanggil method komponenVisual() agar semua semua pengaturan yang telah kita lakukan dapat tampil ke layar, dengan cara: AL.komponenVisual(); 1.3 JTextField JTextField adalah komponen yang digunakan untuk memasukkan sebaris informasi yang selanjutnya dapat digunakan sebagai input bagi proses selanjutnya. Pembuatan JTextfield dilakukan dengan membuat obyek berdasarkan class JTextField. Adapun sintax JTextField adalah : JTextField text = new JTextField (20); Contoh penggunaan JTextField adalah: Gambar 3 Contoh JTextField
  • 13.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 6  Berikut ini coding contoh penggunaan JTextField import javax.swing.*; class Aplikasi_text_field extends JFrame { JLabel ibnim = new JLabel ("NIM"); JTextField txnim = new JTextField (20); Aplikasi_text_field() { setTitle("Aplikasi JTextField"); setLocation (300,100); setSize (300,150); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void KomponenVisual() { getContentPane().setLayout(null); getContentPane().add(ibnim); ibnim.setBounds(10,10,70,20); getContentPane().add(txnim); txnim.setBounds(75,10,100,20); setVisible(true); } public static void main (String args[]) { Aplikasi_text_field ATF=new Aplikasi_text_field(); ATF.KomponenVisual(); } }  Penjelasan koding program. Coding Keterangan JTextField txnim = new JTextField (20); Adalah membentuk obyek dari komponen JTextField yang akan digunakan untuk menampung nilai dari NIM mahasiswa. getContentPane().add(txnim); txnim.setBounds(75,10,100,20); adalah perintah untuk menempelkan dan mengatur posisi txnim pada frame.
  • 14.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 7 1.4 JButton JButton adalah komponen berbentuk tombol. Komponen ini banyak digunakan sebagai eksekusi terhadap tindakan yang diinginkan. Pada aplikasi komputer, biasanya dibutuhkan tombol untuk mengeksekusi sebuah perintah. Adapun sintax JButton adalah : JButton tombol = new JButton (“Cari”); Contoh penggunaan JButton adalah: Gambar 4 Contoh JButton  Berikut ini coding contoh penggunaan JButton import javax.swing.*; class Aplikasi_Button extends JFrame { JLabel ibnim = new JLabel ("NIM"); JTextField txnim = new JTextField (20); JButton tblcari = new JButton ("CARI"); Aplikasi_Button() { setTitle("Aplikasi JButton"); setLocation (300,100); setSize (300,150); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void KomponenVisual() { getContentPane().setLayout(null); getContentPane().add(ibnim); ibnim.setBounds(10,10,70,20); getContentPane().add(txnim);
  • 15.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 8 txnim.setBounds(75,10,100,20); getContentPane().add(tblcari); tblcari.setBounds(180,10,95,20); setVisible(true); } public static void main (String args[]) { Aplikasi_Button AB=new Aplikasi_Button(); AB.KomponenVisual(); } }  Penjelasan koding program. Coding Keterangan JButton tblcari = new JButton ("Cari"); Adalah membentuk obyek dari komponen JButton getContentPane().add(tblcari); tblcari.setBounds(180,10,95,20); adalah perintah untuk menempelkan dan mengatur posisi tblcari pada frame. 1.5 JRadioButton JRadioButton adalah komponen yang digunakan ketika pengguna perlu memilih satu diantara beberapa pilihan. Adapun sintax JRadioButton adalah : JRadioButton kelasA = new JRadioButton ("A"); JRadioButton kelasB = new JRadioButton ("B"); JRadioButton kelasC = new JRadioButton ("C"); ButtonGroup grupkelas = new ButtonGroup(); Contoh penggunaan JRadioButton adalah: Gambar 5 Contoh JRadioButton
  • 16.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 9  Berikut ini coding contoh penggunaan JRadioButton import javax.swing.*; class Aplikasi_Radio_Button extends JFrame { JLabel ibnim = new JLabel ("NIM"); JTextField txnim = new JTextField (20); JLabel ibnama = new JLabel ("Nama"); JTextField txnama = new JTextField (20); JLabel ibkelas = new JLabel ("Kelas"); JRadioButton kelasA = new JRadioButton ("A"); JRadioButton kelasB = new JRadioButton ("B"); JRadioButton kelasC = new JRadioButton ("C"); ButtonGroup grupkelas = new ButtonGroup(); JButton tblcari = new JButton (new ImageIcon ("cari.jpg")); Aplikasi_Radio_Button() { setTitle("Aplikasi JRadio Button"); setLocation (300,100); setSize (300,150); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void KomponenVisual() { getContentPane().setLayout(null); getContentPane().add(ibnim); ibnim.setBounds(10,10,70,20); getContentPane().add(txnim); txnim.setBounds(75,10,100,20); getContentPane().add(tblcari); tblcari.setBounds(180,10,95,50); getContentPane().add(ibnama); ibnama.setBounds(10,35,70,20); getContentPane().add(txnama); txnama.setBounds(75,35,100,20); getContentPane().add(ibkelas);
  • 17.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 10 ibkelas.setBounds(10,60,100,20); getContentPane().add(kelasA); kelasA.setBounds(75,60,50,20); getContentPane().add(kelasB); kelasB.setBounds(125,60,50,20); getContentPane().add(kelasC); kelasC.setBounds(175,60,50,20); grupkelas.add(kelasA); grupkelas.add(kelasB); grupkelas.add(kelasC); setVisible(true); } public static void main (String args[]) { Aplikasi_Radio_Button ARB=new Aplikasi_Radio_Button(); ARB.KomponenVisual(); } }  Penjelasan koding program. Coding Keterangan JRadioButton kelasA = new JRadioButton("A"); Sintaks di atas menunjukkan bahwa kita memiliki tiga kelas yang dibuat dengan membentuk tiga buah obyek dari class JRadioButton. ButtonGroup grupkelas = new ButtonGroup(); Merupakan obyek yang digunakan untuk menyatukan semua obyek JRadioButton, sehingga hanya akan terpilih satu diantara obyek JRadioButton yang ada. getContentPane().add(kelasA); kelasA.setBounds(75,50,50,20); digunakan untuk menambahkan dan mengatur posisi masing-masing obyek dalam frame. grupkelas.add(kelasA); grupkelas.add(kelasB); grupkelas.add(kelasC); adalah cara untuk menyatukan ketiga obyek menjadi satu kesatuan, sehingga hanya dapat dipilih satu diantara ketiganya. JButton tblcari = new JButton (new ImageIcon ("cari.jpg")); New ImageIcon adalah koding untuk membuat objek gambar yang akan diletakkan pada tombol
  • 18.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 11 1.6 JComboBox JComboBox juga merupakan komponen yang digunakan untuk memilih satu diantara sekian banyak pilihan yang berbentuk semacam TextField dan ada panah ke bawah. Adapun sintax JComboBox adalah : String [] jeniskelompok = {"1","2","3","4","5","6","7"}; JComboBox cbkelompok = new JComboBox (jeniskelompok); Contoh penggunaan JComboBox adalah: Gambar 6 Contoh JComboBox  Berikut ini coding contoh penggunaan JComboBox import javax.swing.*; import java.awt.*; class Aplikasi_ComboBox extends JFrame { JLabel gambar = new JLabel (new ImageIcon ("back2.jpg")); JLabel ibnim = new JLabel ("NIM"); JTextField txnim = new JTextField (20); JButton tblcari = new JButton ("Cari"); JLabel ibnama = new JLabel ("Nama"); JTextField txnama = new JTextField (20); JLabel ibkelas = new JLabel ("Kelas"); JRadioButton kelasA = new JRadioButton ("A"); JRadioButton kelasB = new JRadioButton ("B"); JRadioButton kelasC = new JRadioButton ("C"); ButtonGroup grupkelas = new ButtonGroup(); JLabel ibkelompok = new JLabel ("Kelompok");
  • 19.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 12 String [] jeniskelompok = {"1","2","3","4","5","6","7"}; JComboBox cbkelompok = new JComboBox (jeniskelompok); Aplikasi_ComboBox() { setTitle("Aplikasi JCombo Box"); setLocation (300,100); setSize (300,150); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void KomponenVisual() { getContentPane().setLayout(null); getContentPane().add(ibnim); ibnim.setBounds(10,10,70,20); ibnim.setForeground(Color.red); getContentPane().add(txnim); txnim.setBounds(75,10,100,20); getContentPane().add(tblcari); tblcari.setBounds(180,10,95,20); getContentPane().add(ibnama); ibnama.setBounds(10,35,70,20); ibnama.setForeground(Color.white); getContentPane().add(txnama); txnama.setBounds(75,35,200,20); getContentPane().add(ibkelas); ibkelas.setBounds(10,60,100,20); ibkelas.setForeground(Color.green); getContentPane().add(kelasA); kelasA.setBounds(75,60,50,20); getContentPane().add(kelasB); kelasB.setBounds(125,60,50,20); getContentPane().add(kelasC); kelasC.setBounds(175,60,50,20); grupkelas.add(kelasA); grupkelas.add(kelasB); grupkelas.add(kelasC); getContentPane().add(ibkelompok);
  • 20.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 13 ibkelompok.setBounds(10,80,100,20); ibkelompok.setForeground(Color.blue); getContentPane().add(cbkelompok); cbkelompok.setBounds(75,80,100,20); getContentPane().add(gambar); gambar.setBounds(0,0,300,150); setVisible(true); } public static void main (String args[]) { Aplikasi_ComboBox ACB=new Aplikasi_ComboBox(); ACB.KomponenVisual(); } }  Penjelasan koding program. Coding Keterangan String [] jeniskelompok = {"1","2","3","4","5","6","7"}; Adalah variabel array yang akan digunakan sebagai alternatif pilihan bagi ComboBox. Dimana dalam kurung kerawal semua data diletakkan. JComboBox cbkelompok = new JComboBox (jeniskelompok); Merupakan deklarasi pembentukan obyek ComboBox menggunakan argumen array yang sebelumnya telah disediakan yaitu jeniskelompok. getContentPane().add(cbkelompok); cbkelompok.setBounds(75,70,100,20); adalah cara yang sudah biasa kita gunakan untuk memasang komponen pada frame. ibkelompok.setForeground(Color.blue); Digunakan untuk membuat warna tulisan 1.7 JTextArea JTextArea merupakan komponen yang mirip dengan JtextField tetapi dapat menampung lebih dari satu baris. Adapun sintax JTextArea adalah : JTextArea area1=new JTextArea(3,20);
  • 21.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 14 Contoh penggunaan JTextArea adalah: Gambar 7 Contoh JTextArea  Berikut ini coding contoh penggunaan JTextArea import javax.swing.*; import java.awt.*; class Aplikasi_Text_Area extends JFrame { JLabel ibkal=new JLabel("Kalimat"); JTextArea area1=new JTextArea(3,20); Aplikasi_Text_Area() { setTitle("Aplikasi JTextArea"); setLocation(200,100); setSize(300,160); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void KomponenVisual() { getContentPane().setLayout(null); getContentPane().setBackground(Color.pink); //untuk warna background getContentPane().add(ibkal); ibkal.setBounds(10,10,50,20); ibkal.setForeground(Color.white); //untuk warna tulisan getContentPane().add(area1); area1.setBounds(70,10,210,100); area1.setFont(new Font("Comic Sans MS", Font.BOLD, 13)); //untuk ganti font setVisible(true); } public static void main(String args[])
  • 22.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 15 { Aplikasi_Text_Area ATA=new Aplikasi_Text_Area(); ATA.KomponenVisual(); } }  Penjelasan koding program. Coding Keterangan JTextArea area1 = new JtextArea (3,20); Adalah membentuk obyek dari komponen JtextArea dimana (3,20) itu untuk membuat 3 baris dan 20 kolom. getContentPane().add(area1); area1.setBounds(70,10,210,100); adalah cara yang sudah biasa kita gunakan untuk memasang komponen pada frame. area1.setFont(new Font("Comic Sans MS", Font.BOLD, 13)); Digunakan untuk mengubah tulisan sesuai dengan keinginan, Font.BOLD (tulisan tebal), Font.ITALIC (Tulisan Miring), Font.PLAIN (tulisan normal). 1.8 JCheckBox JCheckBox adalah komponen yang digunakan ketika pengguna memerlukan komponen untuk melakukan satu atau banyak pilhan sekaligus. Adapun sintax JCheckBox adalah : JCheckBox cek1 = new JCheckBox ("Pilihan 1"); Contoh penggunaan JChekBox adalah: Gambar 8 Contoh JCheckBox  Berikut ini coding contoh penggunaan JCheckBox import javax.swing.*; import java.awt.*; class Aplikasi_Chek_Box extends JFrame { JCheckBox cek1=new JCheckBox("Pilihan 1");
  • 23.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 16 JCheckBox cek2=new JCheckBox("Pilihan 2"); JCheckBox cek3=new JCheckBox("Pilihan 3"); Aplikasi_Chek_Box() { super ("Aplikasi JCheck Box"); setLocation(200,100); setSize(300,100); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void KomponenVisual() { getContentPane().setLayout(null); getContentPane().add(cek1); cek1.setBounds(10,10,90,20); getContentPane().add(cek2); cek2.setBounds(100,10,90,20); getContentPane().add(cek3); cek3.setBounds(200,10,90,20); setVisible(true); } public static void main(String args[]) { Aplikasi_Chek_Box ACB=new Aplikasi_Chek_Box(); ACB.KomponenVisual(); } }  Penjelasan koding program. Coding Keterangan JCheckBox cek1 = new JcheckBox ("Pilihan 1"); Adalah membentuk obyek dari komponen JCheckBox getContentPane().add(cek1); cek1.setBounds(10,10,90,20); adalah cara yang sudah biasa kita gunakan untuk memasang komponen pada frame.
  • 24.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 17 1.9 JTable JTable digunakan untuk menampilkan data dalam bentuk tabel, suatu bentuk yang banyak digunakan dalam pemrograman database. Adapun sintax JTable adalah : String [] header ={"1","2","3"}; String [][] data ={{"100","300","150"},{"500","600","450"},{"290","690","360"}}; DefaultTableModel model = new DefaultTableModel(data,header); JTable tabel= new JTable(model); Contoh penggunaan JTable seperti program berikut. Gambar 9 Contoh JTable  Berikut ini coding contoh penggunaan JTable import javax.swing.*; import javax.swing.table.*; //untuk library tabel class Aplikasi_Tabel extends JFrame { String [] header ={"andi","reza","fahmi"}; String [][] data ={{"100","300","150"},{"500","600","450"},{"290","690","360"}}; DefaultTableModel model = new DefaultTableModel (data,header); JTable tabel= new JTable(model); Aplikasi_Tabel() { super ("Aplikasi JTable"); setLocation(200,100); setSize(250,110); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void KomponenVisual() { getContentPane().setLayout(null); getContentPane().add(tabel); tabel.setBounds(10,10,200,200); setVisible(true);
  • 25.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 18 } public static void main(String args[]) { Aplikasi_Tabel AT=new Aplikasi_Tabel(); AT.KomponenVisual(); } }  Penjelasan koding program. Coding Keterangan String [] header = {"andi","reza","fahmi"}; Digunakan untuk judul kepala kolom tabel String [][] data = {{"100","300","150"}, {"500","600","450"}, {"290","690","360"}}; Digunakan untuk isi data di dalam tabel DefaultTableModel model = new DefaultTableModel (data,header); Untuk membuat model tabel JTable tabel = new JTable (model); Adalah membentuk obyek dari komponen Jtabel dan memanggil obyek dari variabel data dan header getContentPane().add(tabel); tabel.setBounds(10,10,200,200); adalah cara yang sudah biasa kita gunakan untuk memasang komponen pada frame. Adapun kolom Tabel dapat kita buat sesuai dengan keinginan kita seperti dibawah ini Contoh JTable manual seperti program berikut. Gambar 10 Contoh JTable Manual  Berikut ini coding contoh penggunaan JTable Manual import javax.swing.*; import javax.swing.table.*; //untuk library table import java.awt.*; //untuk komponen java yg tidak diawali huruf J class Aplikasi_Tabel_Manual extends JFrame { JLabel mhs = new JLabel("Tabel Data Mahasiswa");
  • 26.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 19 String header [] = {"No","Reno","Sisca","Rendy"}; String data [][] = {{"1","100","300","150"}, {"2","500","600","450"}, {"3","290","690","360"}}; DefaultTableModel model = new DefaultTableModel(data,header); // set Model Tabel JTable tabel = new JTable(model); JScrollPane pane = new JScrollPane(tabel); //untuk pembuatan kolom tabel TableColumn tc1 = new TableColumn(); //kolom no TableColumn tc2 = new TableColumn(); //kolom reno TableColumn tc3 = new TableColumn(); //kolom sisca TableColumn tc4 = new TableColumn(); //kolom rendy Dimension dimensi = new Dimension(15,2); //untuk perataan isi tabel (x,y) Aplikasi_Tabel_Manual() { super ("Aplikasi JTable"); setLocation(200,100); setSize(250,200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void KomponenVisual() { getContentPane().setLayout(null); getContentPane().add(mhs); mhs.setBounds(50,5,200,20); getContentPane().add(pane); pane.setBounds(10,30,200,100); tabel.setShowGrid(true); //untuk menampilkan garis horizontal tabel.setShowVerticalLines(true); //untuk menampilkan garis vertikal tabel.setIntercellSpacing(new Dimension(dimensi)); //untuk spasing tabel.setGridColor(Color.GREEN); //Memberi warna garis tabel setHighRow(tabel); //pemanggilan data di void setHighRow(JTable tabel) tc1 = tabel.getColumnModel().getColumn(0); //Menampilkan isi kolom NO tc2 = tabel.getColumnModel().getColumn(1); //Menampilkan isi kolom reno tc3 = tabel.getColumnModel().getColumn(2); // Menampilkan isi kolom sisca tc4 = tabel.getColumnModel().getColumn(3); // Menampilkan isi kolom rendy tc1.setPreferredWidth(50); //set lebar kolom no
  • 27.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 20 tc2.setPreferredWidth(150); //set lebar kolom reno tc3.setPreferredWidth(150); //set lebar kolom sisca tc4.setPreferredWidth(150); //set lebar kolom rensy setVisible(true); } void setHighRow(JTable tabel) //untuk tinggi baris { int tinggi = tabel.getRowHeight(); tabel.setRowHeight(tinggi + 15); } public static void main(String args[]) { Aplikasi_Tabel_Manual ATM=new Aplikasi_Tabel_Manual(); ATM.KomponenVisual(); } } 1.10 JScrollPane JScrollPane adalah komponen yang digunakan untuk menggerakkan obyek ke atas, ke bawah atau ke samping agar semua sebuah obyek terlihat di layar. Adapun sintax JScrollPane adalah : JScrollPane scrollPane = new JScrollPane(tabel1); Contoh JScrollPane adalah sebagai berikut. Gambar 11 Contoh JscrollPane  Berikut ini coding contoh penggunaan JScrollPane import javax.swing.*; import javax.swing.table.*; import java.awt.*; class Aplikasi_Scroll_Pane extends JFrame { String [] header ={"Senin","Selasa","Rabu"}; String [][] data ={{"10","30","15"},{"50","60","40"},{"29","69","36"}};
  • 28.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 21 DefaultTableModel model = new DefaultTableModel(data,header); JTable tabel= new JTable(model); JScrollPane pane = new JScrollPane(tabel); Dimension dimensi = new Dimension(60,10); //untuk isi data tabel x,y Aplikasi_Scroll_Pane() { super ("Aplikasi Scroll Pane"); setLocation(200,100); setSize(300,130); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void KomponenVisual() { getContentPane().setLayout(null); tabel.setIntercellSpacing(new Dimension(dimensi)); tabel.setShowGrid(true); //untuk menmpilkan garis horizontal tabel.setShowVerticalLines(true); //untuk menampilkan garis vertical tabel.setGridColor(Color.ORANGE); //untuk warna garis setHighRow(tabel); //ambil data di void setHighRow(JTable tabel) getContentPane().add(pane); pane.setBounds(10,10,250,70); setVisible(true); } void setHighRow(JTable tabel) //untuk tinggi baris { int tinggi = tabel1.getRowHeight(); tabel1.setRowHeight(tinggi + 15); } public static void main(String args[]) { Aplikasi_Scroll_Pane ASP=new Aplikasi_Scroll_Pane(); ASP.KomponenVisual(); } }
  • 29.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 22  Penjelasan koding program. Coding Keterangan JScrollPane pane = new JScrollPane(tabel); Adalah membentuk obyek dari komponen JscrollPane dengan memanggil objek pada tabel, bisa juga diletakkan pada JTextArea. getContentPane().add(pane); pane.setBounds(10,10,250,50); adalah cara yang sudah biasa kita gunakan untuk memasang komponen pada frame 1.11 JMenu JMenu adalah komponen yang digunakan untuk membuat menu. Menu membuat program kita menjadi lebih sederhana dan mudah digunakan. Menu adalah sebuah komponen standar yang bersifat pull-down. Menu dapat berisi menu lain yang disimpan sebagai submenu item. Hal ini memungkinkan kita membuat suatu struktur menu yang kompleks. Kita juga dapat menyimpan berbagai komponen di dalam menu (seperti checkbox, radiobutton, dll). Untuk menyimpan menu dalam bentuk horizontal bar, kita gunakan JmenuBar yang dapat diposisikan di posisi: top, bottom, atau middle.  Menggunakan Keyboard Access ( Alt & Ctrl) pada Menu Kita dapat menggunakan keyboard untuk mengakses menu. Ada 2 cara yang dapat kita lakukan yaitu : 1. Mnemonics Berupa satu karakter di dalam nama menu Untuk mengaksesnya, kita menekan tombol “Alt + karakter“ mnemonic-nya Menu items juga dapat memiliki mnemonics. 2. Accelerator Accelerator merupakan kombinasi keyboard untuk memilih menu item tanpa perlu ditunjukkan isi menu yang bersangkutan. Contoh: Ctrl-C biasa digunakan sebagai shortcut untuk menu Copy item di dalam menu Edit. Adapun sintax JMenu Adalah : JMenuBar mb=new JMenuBar(); JMenu file=new JMenu("File"); JMenuItem open=new JMenuItem("Open");
  • 30.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 23 Contoh JMenu adalah sebagai berikut. Gambar 12 Contoh JMenu  Berikut ini coding contoh penggunaan JMenu import javax.swing.*; class Aplikasi_Menu extends JFrame { JMenuBar mb=new JMenuBar(); JMenu file=new JMenu("File"); JMenu help=new JMenu("Help"); JMenuItem open=new JMenuItem("Open"); JMenuItem close=new JMenuItem("Close"); JMenuItem quit=new JMenuItem("Quit"); JMenuItem about=new JMenuItem("About"); Aplikasi_Menu() { setTitle("Aplikasi JMenu"); setSize(320,160); setLocation(0,0); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void KomponenVisual() { setJMenuBar(mb); mb.add(file); mb.add(help); file.add(open); file.add(close); close.setEnabled(false); file.add(quit);
  • 31.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 24 help.add(about); setVisible(true); } public static void main(String args[]) { Aplikasi_Menu AM=new Aplikasi_Menu(); AM.KomponenVisual(); } }  JMENU DAN GABUNGAN KOMPONEN Gambar 13 Contoh JMenu Gabungan Komponen  Berikut contoh Jmenu menggunakan Keyboard Access dan sub Komponen import java.awt.*; import java.awt.event.*; //untuk library event (reaksi) import javax.swing.*; class Aplikasi_Menu extends JFrame { JMenuBar menuBar = new JMenuBar( ); JMenu file = new JMenu("File"); JMenu export= new JMenu("Export");
  • 32.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 25 JMenu edit = new JMenu("Edit"); JMenu view = new JMenu("View"); //file JMenuItem quit = new JMenuItem("Quit"); JMenuItem newi = new JMenuItem("New"); JMenuItem open = new JMenuItem("Open"); JMenuItem save = new JMenuItem("Save"); //file- combo box export JMenuItem html = new JMenuItem("HTML"); JMenuItem rtf = new JMenuItem("RTF"); JMenuItem word = new JMenuItem("WORD"); //edit checkBox JCheckBoxMenuItem copy = new JCheckBoxMenuItem ("Copy"); JCheckBoxMenuItem paste = new JCheckBoxMenuItem ("Paste"); JCheckBoxMenuItem cut = new JCheckBoxMenuItem ("Cut",true); JCheckBoxMenuItem del = new JCheckBoxMenuItem ("Delete"); //view  RadioButton JRadioButtonMenuItem rbmi = new JRadioButtonMenuItem ("Regular", true); JRadioButtonMenuItem rbmi2 = new JRadioButtonMenuItem ("Extra"); JRadioButtonMenuItem rbmi3 = new JRadioButtonMenuItem ("Blue"); ButtonGroup group = new ButtonGroup( ); Aplikasi_Menu() { setTitle ("aplikasi menu"); setLocation (10,10); setSize (250,200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ); } void KomponenVisual() { // menu file file.setMnemonic('f'); //Untuk mengaksesnya, klik tombol Alt + f file.add(newi); file.add(open); file.add(save); file.add(export); file.addSeparator( ); //untuk membuat garis pembatas // menu export export.add(html); export.add(rtf); export.add(word); //menu quit
  • 33.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 26 file.add(quit); quit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, Event.CTRL_MASK)); //menu edit edit.setMnemonic('e'); //Untuk mengaksesnya, klik tombol Alt + e edit.add(copy); //Untuk mengaksesnya, klik tombol ctrl + c copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, Event.CTRL_MASK)); edit.add(paste); edit.add(cut); edit.add(del); // menu view view.setMnemonic('v'); view.add(rbmi); view.add(rbmi2); view.add(rbmi3); group.add(rbmi); group.add(rbmi2); group.add(rbmi3); setJMenuBar(menuBar); //untuk membuat menu bar menuBar.add(file); menuBar.add(edit); menuBar.add(view); setVisible(true); } public static void main(String[] args) { Aplikasi_Menu am= new Aplikasi_Menu(); am.KomponenVisual(); }}  Penjelasan Coding Coding Keterangan JMenuBar mb=new JMenuBar(); Adalah membentuk obyek dari komponen JMenuBar JMenu file=new JMenu("File"); Adalah membentuk obyek dari komponen JMenu JMenuItem open=new JMenuItem("Open"); Adalah membentuk obyek dari komponen JMenuItem setAccelerator(KeyStroke.getKeyStroke (KeyEvent.VK_Q, Event.CTRL_MASK)); //Accelerator merupakan kombinasi keyboard untuk memilih menu item tanpa
  • 34.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 27 perlu ditunjukkan isi menu yang bersangkutan. 1.12 JInternalFrame JInternalFrame menyebabkan sebuah frame hanya dapat berada dalam frame lain. Kondisi ini akan membantu tampilan menjadi lebih rapi dan teratur. Adapun sintax JInternalFrame Adalah : JDesktopPane desktop = new JDesktopPane(); JInternalFrame iframe = new JInternalFrame("Internal Frame",true,true,true,true); Contoh JInternalFrame adalah sebagai berikut. Gambar 1.12 Contoh JInternalFrame  Berikut ini coding contoh penggunaan JInternalFrame import javax.swing.*; import java.awt.*; public class AplikasiFrameInternal extends JFrame { JDesktopPane desktop=new JDesktopPane(); JInternalFrame iframe=new JInternalFrame("Internal Frame",true,true,true,true); AplikasiFrameInternal() { setTitle("Aplikasi Internal Frame"); setLocation(100,200); setSize(300,200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void komponenVisual() { iframe.setLocation(20,20); iframe.setSize(200,100); iframe.setVisible(true);
  • 35.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 28 desktop.add(iframe); setContentPane(desktop); setVisible(true); } public static void main(String[] args) { AplikasiFrameInternal if1=new AplikasiFrameInternal(); if1.komponenVisual(); } } 1.13 JPasswordField JPasswordField digunakan untuk memasukkan data password. JPasswordField merupakan bentuk khusus dari TextField, dimana karakter yang diinputkan akan ditampilkan sebagai karakter lain yang telah ditentukan, dikenal sebagai karakter echo. Secara default “karakter echo” ini akan mengikuti setting dari sistem operasi, mungkin berupa karakter ‘*’ atau yang lainnya. Adapun sintax JPasswordField Adalah : JPasswordField txpass = new JPasswordField(); txpass.setEchoChar('*'); Contoh JPasswordField adalah sebagai berikut. Gambar 14 Contoh JPasswordField  Berikut ini coding contoh penggunaan JPasswordField import javax.swing.*; class Aplikasi_Password extends JFrame { JLabel user = new JLabel ("UserName"); JTextField txuser = new JTextField (); JLabel pass = new JLabel ("Password"); JPasswordField txpass = new JPasswordField();
  • 36.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 29 Aplikasi_Password() { setTitle("Aplikasi_Password"); setLocation(10,10); setSize(250, 130); setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); setResizable (false); //untuk menutup tombol maxi } void KomponenVisual() { getContentPane().setLayout(null); getContentPane().add(user); user.setBounds(10,10,80,20); getContentPane().add(txuser); txuser.setBounds(100,10,100,20); getContentPane().add(pass); pass.setBounds(10,40,80,20); getContentPane().add(txpass); txpass.setBounds(100,40,100,20); txpass.setEchoChar('*'); //untuk mengubah karakter setVisible(true); } public static void main (String [] args) { Aplikasi_Password ap = new Aplikasi_Password(); ap.KomponenVisual(); } }  Penjelasan Coding Coding Keterangan JPasswordField txpass = new JPasswordField(); Adalah membentuk obyek dari komponen JPasswordField getContentPane().add(txpass); txpass.setBounds(100,40,100,20); adalah cara yang sudah biasa kita gunakan untuk memasang komponen pada frame txpass.setEchoChar('*'); Menentukan parameter * sebagai karakter echo, serta bisa menggunakan karakter lain sesuai keinginan.
  • 37.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 30 1.14 Border (Bingkai) Semua komponen Swing dapat memiliki dekorasi border. Untuk memberikan dekorasi, kita cukup menggunakan method setBorder(). Kita perlu memberikan implementasi dari interface Border sesuai dengan kebutuhan kita. Swing menyediakan banyak sekali implementasi Border di dalam package javax.swing.border. Untuk membuat Border, kita dapat melakukan 2 cara: 1. menggunakan class BorderFactory 2. membuat objek berdasarkan class border Contoh men-set border sebuah label menggunakan BorderFactory: JLabel labelTwo = new JLabel("menggunakan border etched."); labelTwo.setBorder(BorderFactory.createEtchedBorder( )); BorderFactory sangat mudah digunakan, tetapi tidak menawarkan setiap option dari border yang digunakan. Misalnya, apabila kita ingin membuat sebuah raised EtchedBorder (default-nya adalah lowered), maka kita harus menggunakan constructor EtchedBorder. Contoh membuat objek EtchedBorder dengan option RAISED: JLabel labelTwo = new JLabel("menggunakan border raised etched."); labelTwo.setBorder( new EtchedBorder(EtchedBorder.RAISED) ); Berikut ini beberapa jenis Border yang dapat digunakan: 1. BevelBorder 2. SoftBevelBorder 3. EmptyBorder 4. EtchedBorder 5. LineBorder 6. MatteBorder 7. TitledBorder 8. CompoundBorder
  • 38.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 31 Contoh Border adalah sebagai berikut. Gambar 15 Contoh Border  Berikut ini coding contoh penggunaan Border import java.awt.*; import javax.swing.*; import javax.swing.border.*; class Aplikasi_Border extends JFrame { JLabel gambar = new JLabel (new ImageIcon ("back3.png")); JLabel border1 = new JLabel("Menggunakan RAISED --> BevelBorder"); JLabel border2 = new JLabel ("Menggunakan LOWERED --> Bevel Border"); JLabel border3 = new JLabel(" Menggunakan border garis, ukuran nya = 4"); JLabel border4 = new JLabel ("Menggunakan Border Kosong "); JLabel border5 = new JLabel("Menggunakan RAISED EtchedBorder"); JLabel border6 = new JLabel("Menggunakan LOWERED EtchedBorder"); JLabel border7 = new JLabel("Menggunakan RAISED --> Soft --> BevelBorder"); JLabel border8 = new JLabel("Menggunakan LOWERED --> Soft --> BevelBorder"); JLabel border9 = new JLabel("Menggunakan MatteBorder"); JLabel border10 = new JLabel("Menggunakan TitledBorder using LineBorder"); JLabel border11 = new JLabel("Menggunakan TitledBorder using EmptyBorder"); Aplikasi_Border() { setTitle("Aplikasi_Border"); setLocation (0,0); setSize(880, 450); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
  • 39.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 32 void KomponenVisual() { getContentPane().setLayout(null); getContentPane().add(border1); border1.setBounds(10,10,400,50); border1.setBorder(new BevelBorder (BevelBorder.RAISED)); getContentPane().add(border2); border2.setBounds(10,70,400,50); border2.setBorder(new BevelBorder (BevelBorder.LOWERED)); getContentPane().add(border3); border3.setBounds(10,130,400,50); border3.setBorder(new LineBorder (Color.RED, 4, true)); getContentPane().add(border4); border4.setBounds(10,200,400,50); border4.setBorder(new EmptyBorder (10,10,10,10)); getContentPane().add(border5); border5.setBounds(10,260,400,50); border5.setBorder(new EtchedBorder (EtchedBorder.RAISED)); getContentPane().add(border6); border6.setBounds(10,320,400,50); border6.setBorder(new EtchedBorder (EtchedBorder.LOWERED)); getContentPane().add(border7); border7.setBounds(430,10,400,50); border7.setBorder(new SoftBevelBorder (SoftBevelBorder.RAISED)); getContentPane().add(border8); border8.setBounds(430,70,400,50); border8.setBorder(new SoftBevelBorder (SoftBevelBorder.LOWERED)); getContentPane().add(border9); border9.setBorder(new MatteBorder (new ImageIcon("border.gif"))); border9.setBounds(430,130,400,50); getContentPane().add(border10); border10.setBounds(430,200,400,50); border10.setBorder(new TitledBorder (new LineBorder(Color.blue, 5), "Judul terserah...")); getContentPane().add(border11); border11.setBounds(430,260,400,50);
  • 40.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 33 border11.setBorder(new TitledBorder (new EmptyBorder(10,10,10,10))); getContentPane().add(gambar); gambar.setBounds(0,0,880,560); setVisible(true); } public static void main(String args[]) { Aplikasi_Border br= new Aplikasi_Border(); br.KomponenVisual(); } } 1.15 JPopupMenu Pop up menu biasa disebut juga sebagai “context menu” merupakan menu yang dapat muncul di mana saja tergantung posisi mouse. (Untuk windows, biasa diaktifkan menggunakan klik kanan) Cara pembuatannya mirip dengan JMenu biasa, tetapi kita tidak menempelkannya pada JMenuBar. Contoh membuat Pop-up Menu: JPopupMenu contextMenu = new JPopupMenu("Edit"); contextMenu.add(new JMenuItem("Save")); contextMenu.add(new JMenuItem("Save As")); contextMenu.add(new JMenuItem("Close")); Contoh JPopupMenu adalah sebagai berikut. Gambar 16 Contoh JPopupMenu  Berikut ini coding contoh penggunaan JPopupMenu import javax.swing.*; class Aplikasi_PopMenu extends JFrame { JPopupMenu edit = new JPopupMenu("Edit");
  • 41.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 34 JMenuItem save = new JMenuItem ("Save"); JMenuItem save2 = new JMenuItem ("Save As"); JMenuItem close = new JMenuItem ("Close"); JPanel panel = new JPanel( ); Aplikasi_PopMenu( ) { setTitle("Aplikasi_PopMenu"); setLocation(10,10); setSize(250,200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ); } void KomponenVisual() { this.add(panel); // panel panel.setComponentPopupMenu(edit); panel.setBackground(Color.cyan); edit.add(save); edit.add(save2); edit.add(close); setVisible(true); } public static void main(String[] args) { Aplikasi_PopMenu pm = new Aplikasi_PopMenu(); pm.KomponenVisual(); } }  Penjelasan coding Coding Keterangan JPopupMenu edit = new JPopupMenu("Edit"); Adalah membentuk obyek dari komponen JPopupMenu panel.setComponentPopupMenu(edit); Mengubah komponen popup menu didalam layout edit.add(save); Menambahkan objek JMenuItem kedalam popup menu
  • 42.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 35 D. TUGAS Buatlah sebuah program yang outputnya sebagai berikut :
  • 43.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 36 BAB 2 EVENT HANDLER A. TUJUAN : 1. Mahasiswa dapat menjelaskan konsep even handler pada pemrograman bahasa Java. 2. Mahasiswa dapat membuat program sederhana untuk even handler pada komponen- komponen dasar dengan contoh-contoh yang mudah dipahami 3. Mahasiswa dapat membuat program menu menggunakan bahasa Java B. PRASYARAT 3. Algoritma dan Pemograman 4. Pemograman Berorientasi Objek C. PENGANTAR Event adalah suatu peristiwa yang dipicu oleh pengguna pada suatu komponen, misalnya tombol ditekan. Dua paket yang biasa digunakan menangani kejadian adalah import java.awt.event dan import javax.swing.event Sintaks: <Type>Event Tabel 1 Macam - Macam Event Event Fungsi ActionEvent Dijalankan ketika sebuah Tombol ditekan, melakukan double klik daftar item, atau memilih sebuah menu. Extends AWTEvent. KeyEvent Dijalankan ketika sebuah Keyboard ditekan, dilepas atau diketikkan. Extends InputEvent MouseEvent Dijalankan ketika sebuah Tombol Mouse ditekan, dilepas, diklik (tekan dan lepas) atau ketika Cursor Mouse masuk atau keluar dari bagian komponen. Extends InputEvent TextEvent Dijalankan ketika nilai dari TextField dan TextArea dirubah. Extends AWTEvent. ItemEvent Dijalankan ketika sebuah Item dipilih atau deselect oleh user, seperti CheckBox dan List. Extends AWTEvent. WindowsEvent Dijalankan ketika sebuah objek window dibuka, ditutup, diaktifkan, nonaktifkan, iconified, deiconified atau ketika
  • 44.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 37 focus ditransfer kedalam atau keluar windows. Extends ComponentEvent ComponentEvent Dijalankan ketika sebuah komponen dipindahkan, di- resize, dan dibuat visible atau di hidden. Extends AWTEvent. InputEvent Abstrak root class event untuk semua komponen level input class – class event. Extends ComponentEvent Event Handler adalah proses yang diperlukan untuk melakukan reaksi bila diberikan sebuah aksi. Event handler ini dapat diberikan pada semua obyek yang kita gunakan bergantung pada keperluan. Dalam menggunakan event handler membutuhkan package import java.awt.event.*; Event Listener adalah sebuah konsep untuk merespon kegiatan yang terjadi didalam objek. Event Listener merupakan implementasi penyampaian message antar objek, yang mendapat message akan melakukan suatu action yang telah ditentukan didalam program. Java menyediakan banyak event listener yaitu : Tabel 2 Macam - Macam Listener  ActionListener  ItemListener  FocusListener  KeyListener  ChangeListener  PopupMenuListener  MouseListener  MenuListener  WindowsListener  MouseMotionListener Dalam bab ini tidak semua Event dibahas, hanya Event yang dianggap sering digunakan saja yang ditampilkan sebagai bahan eksplorasi lebih lanjut bagi anda terhadap berbagai Event. 2.1 ActionListener ActionListener berfungsi atas perubahan Mouse atau Keyboard. Method ActionListener hanya ada 1 yaitu : addActionListener (new ActionListener() { public void actionPerformed (ActionEvent e) });
  • 45.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 38 Berikut contoh program menggunakan ActionListener (Klik Tombol) Gambar 17 Contoh ActionListener pada JButton  Berikut ini coding menggunakan ActionListener pada JButton import javax.swing.*; import java.awt.*; import java.awt.event.*; //librari event (aksi) class Aplikasi_Event extends JFrame { JTextField data1 = new JTextField(20); JTextField data2 = new JTextField(20); JTextField data3 = new JTextField(20); JButton tambah = new JButton("+"); JButton exit = new JButton("EXIT"); ImageIcon gambar = new ImageIcon("gambar/exit2.png"); Aplikasi_Event() { setTitle("Event Menggunakan Klik Mouse"); setLocation(200,100); setSize(300,150); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void komponenVisual() { getContentPane().setLayout(null); getContentPane().setBackground(Color.orange); getContentPane().add(data1); data1.setBounds(10,10,50,30); getContentPane().add(data2); data2.setBounds(70,10,50,30); getContentPane().add(tambah);
  • 46.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 39 tambah.setBounds(130,10,50,30); getContentPane().add(data3); data3.setBounds(190,10,80,30); getContentPane().add(exit); exit.setBounds(35,50,200,50); exit.setIcon(new ImageIcon("gambar/exit.png")); //gmbr tombol yang mau diubah exit.setRolloverIcon(gambar); //untuk berubah gambar tombol jika ditekan setVisible(true); } void AksiReaksi() //buat fungsi baru untuk klik tombol { tambah.addActionListener(new ActionListener() //aksi untuk tombol tambah { public void actionPerformed(ActionEvent e) { int x = Integer.parseInt(data1.getText()); int y = Integer.parseInt(data2.getText()); String z = String.valueOf(x+y); data3.setText(z); } } ); exit.addActionListener(new ActionListener() //aksi untuk tombol keluar { public void actionPerformed(ActionEvent e) { System.exit(0); } } ) ; } //tutup void AksiReaksi public static void main(String args[]) { Aplikasi_Event AE=new Aplikasi_Event(); AE.komponenVisual(); AE.AksiReaksi(); //pemanggilan fungsi AksiReaksi } }  Penjelasan koding program : Pada contoh di atas, terdapat dua event handler yaitu penekanan mouse pada tombol tambah dan penekanan mouse pada tombol exit. Coding Keterangan public void actionPerformed (ActionEvent e) efek yang timbul akibat penekanan klik
  • 47.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 40 tombol Integer.parseInt Mengubah data bertipe String menjadi integer data1.getText() Mengambil nilai dari JTextField String z = String.valueOf (x+ y); digunakan untuk melakukan proses penjumlahan kedua input data x dan y, kemudian mengubah tipe datanya menjadi String agar hasilnya dapat ditampilkan melalui JTextField data3.setText(z); Membuat text yang ditampilkan dari variabel z kedalam JTextField System.exit(0) agar aplikasi berhenti bila tombol exit di klik. 2.2 KeyListener KeyListener berfungsi Untuk menangani reaksi dari keyboard. Misalnya penekanan tombol Enter, Ctrl, Alt, dan sebagainya. Method KeyListener ada 3 yaitu : Tabel 3 Method KeyListener Method Fungsinya addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) } ); Dieksekusi ketika terjadi penekanan tombol keyboard addKeyListener(new KeyAdapter() { public void keyReleased(KeyEvent e) } ); Dieksekusi ketika terjadi pelepasan tombol keyboard addKeyListener(new KeyAdapter() { public void keyTyped(KeyEvent e) } ); Dieksekusi ketika terjadi penekanan tombol keyboard tertentu, biasanya tombol yang bisa digunakan sebagai input seperti abjad, spasi, backspace dan lain-lain. Tombol khusus seperti F1 dan Ctrl tidak akan memberi reaksi Berikut ini contoh penggunaan tombol ENTER, dengan menggunakan program diatas.
  • 48.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 41 Gambar 18 Contoh KeyListener pada JTextField  Berikut ini coding menggunakan KeyListener pada JTextField import javax.swing.*; import java.awt.*; import java.awt.event.*; class Aplikasi_Event_Enter extends JFrame { JTextField data1 = new JTextField(20); JTextField data2 = new JTextField(20); JTextField data3 = new JTextField(20); JButton tambah = new JButton("+"); JButton exit = new JButton("EXIT"); ImageIcon gambar = new ImageIcon("gambar/exit2.png"); Aplikasi_Event_Enter() { setTitle("Event Menggunakan Tombol Enter"); setLocation(200,100); setSize(300,150); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void komponenVisual() { getContentPane().setLayout(null); getContentPane().setBackground(Color.magenta); getContentPane().add(data1); data1.setBounds(10,10,50,30); getContentPane().add(data2); data2.setBounds(70,10,50,30); getContentPane().add(tambah); tambah.setBounds(130,10,50,30);
  • 49.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 42 getContentPane().add(data3); data3.setBounds(190,10,80,30); getContentPane().add(exit); exit.setBounds(35,50,200,50); exit.setIcon(new ImageIcon("gambar/exit.png")); //gmbar tombol yang mau diubah exit.setRolloverIcon(gambar); //untuk berubah gambar tombol jika ditekan setVisible(true); } void AksiReaksi() { data1.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) //penggunaan method keyPressed { if(e.getKeyCode() == e.VK_ENTER) //penekanan tombol ENTER { data2.requestFocus(); //perpindahan cursor setelah tekan enter } } } ); data2.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) //penggunaan method keyPressed { if(e.getKeyCode() ==e.VK_ENTER) //penekanan tombol ENTER { tambah.requestFocus(); //perpindahan cursor setelah tekan enter } } } ); tambah.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent ee) //penggunaan method keyPressed { if(ee.getKeyCode()==ee.VK_ENTER) //penekanan tombol ENTER { int x=Integer.parseInt(data1.getText()); int y=Integer.parseInt(data2.getText()); String z=String.valueOf(x+y); data3.setText(z); exit.requestFocus(); //perpindahan cursor setelah tekan enter } } } ); exit.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent ee) //penggunaan method keyPressed
  • 50.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 43 { if(ee.getKeyCode()==ee.VK_ESCAPE) //tekan tombol ESC { System.exit(0); } } } ); data1.addKeyListener(new KeyAdapter() { public void keyReleased(KeyEvent e) //penggunaan method keyReleased { String nomor = data1.getText(); if(nomor.length()>5) { getToolkit().beep(); e.consume(); JOptionPane.showMessageDialog(null, "Angka yang anda input terlalu panjang", "Pesan",JOptionPane.WARNING_MESSAGE); } } } ); data1.addKeyListener(new KeyAdapter() { public void keyTyped(KeyEvent key) //penggunaan method keyTyped { char karakter = key.getKeyChar(); if(!((karakter >= '0') && (karakter <= '9') || (karakter == KeyEvent.VK_BACK_SPACE))) { getToolkit().beep(); key.consume(); JOptionPane.showMessageDialog(null,"Karakter yang diinput harus angka", "Pesan", JOptionPane.WARNING_MESSAGE, new ImageIcon("popUp.png")); } } } ); } //tutup void aksireaksi public static void main(String args[]) { Aplikasi_Event_Enter AEE=new Aplikasi_Event_Enter(); AEE.komponenVisual(); AEE.AksiReaksi(); } }  Penjelasan koding program. CODING KETERANGAN if(e.getKeyCode()==e.VK_ENTER) adalah sintaks yang memungkinkan suatu
  • 51.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 44 reaksi terjadi bila kita menekan tombol enter di keyboard data2.requestFocus() adalah kode yang memungkinkan terjadinya perpindahan kursor dari JTextfield pertama ke JTextField kedua. 2.3 MouseListener MouseListener berfungsi untuk penekanan tombol mouse dan ketika objek tersebut didatangi atau ditinggalkan oleh mouse. Method MouseListener ada 5 yaitu : Tabel 4 Method MouseListener Method Fungsinya addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) }); Dieksekusi ketika terjadi penekanan dan pelepasan tombol mouse, dengan syarat lokasi kursor mouse tidak berubah addMouseListener(new MouseAdapter() { public void mouseEntered(MouseEvent e) }); Dieksekusi ketika kursor mouse memasuki area komponen addMouseListener(new MouseAdapter() { public void mouseExited(MouseEvent e) }); Dieksekusi ketika kursor mouse meninggalkan area komponen addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) }); Dieksekusi ketika terjadi penekanan tombol mouse addMouseListener(new MouseAdapter() { public void mouseReleased(MouseEvent e) }); Dieksekusi ketika terjadi pelepasan tombol mouse Berikut ini contoh penggunaan mouse, dengan menggunakan JLabel
  • 52.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 45 Gambar 19 Contoh MouseListener pada JLabel  Berikut ini coding menggunakan MouseListener dengan JLabel import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.awt.Desktop; //librari desktop import java.net.URI; //library ke internet class Aplikasi_MouseListener extends JFrame { JPanel pane = new JPanel(); JLabel LJudul = new JLabel("Aplikasi MouseListener membuat JLabel Hyperlink"); JLabel LAuthor = new JLabel("Author : Ramadhani"); JLabel LYahoo = new JLabel("<html> <a href=""> ramadhani muhakam </a> </html>"); JLabel LIconEmail = new JLabel(new ImageIcon("gambar/yahoo.png")); JLabel cal = new JLabel (new ImageIcon ("gambar/cal.png")); JLabel Lcal = new JLabel ("<html> <a href="">Class Kalkulator</a></html>"); JLabel twit = new JLabel(new ImageIcon("gambar/twit1.png")); JLabel LBackground = new JLabel(new ImageIcon("gambar/wall.png")); JLabel LIcon = new JLabel(new ImageIcon("gambar/girl.png")); Aplikasi_MouseListener() { setTitle ("Aplikasi_Event_Label"); setSize (526,280);
  • 53.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 46 setLocation (0,0); setResizable(false); //untuk menutup tombol maxi setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void KomponenVisual() { setContentPane(pane); pane.setLayout(null); pane.add(LJudul); LJudul.setFont(new Font("Century Schoolbook L", Font.BOLD, 18)); LJudul.setHorizontalAlignment(SwingConstants.CENTER); //rata paragraf tengah LJudul.setBounds(10, 10, 500, 31); LJudul.setForeground(Color.white); pane.add(LAuthor); LAuthor.setBounds(12, 56, 134, 15); LAuthor.setFont(new Font("FreeSans", Font.BOLD, 12)); LAuthor.setForeground(new Color(0, 255, 51)); pane.add(LIconEmail); LIconEmail.setBounds(12, 93, 70, 64); pane.add(LYahoo); LYahoo.setBounds(94, 115, 201, 15); LYahoo.setCursor(new Cursor(Cursor.HAND_CURSOR)); //untuk mengganti cursor LYahoo.setToolTipText("Yahoo Mail"); //untuk membuat comentar pane.add(cal); cal.setBounds(12, 180, 70, 64); pane.add(Lcal); Lcal.setBounds(94, 205, 322, 15); Lcal.setCursor(new Cursor(Cursor.HAND_CURSOR)); //untuk mengganti cursor Lcal.setToolTipText("class Aplikasi Event"); //untuk membuat comentar pane.add(LIcon); LIcon.setBounds(374, 70, 128, 128); pane.add(twit); twit.setBounds(245, 56, 90, 90); twit.setCursor(new Cursor (Cursor.HAND_CURSOR)); twit.setToolTipText("www.twitter.com"); pane.add(LBackground); LBackground.setBounds(0, 0, 520, 560); setVisible(true);
  • 54.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 47 } void AksiReaksi() { LYahoo.addMouseListener(new MouseAdapter() //Aksi untuk Yahoo { public void mouseClicked(MouseEvent me) //method MouseClikced { try { Desktop.getDesktop().browse(new URI("http://mail.yahoo.com")); } catch(Exception ex) { System.out.println(ex); } } } ); Lcal.addMouseListener(new MouseAdapter() //untuk pemanggilan class kalkulator { public void mouseClicked(MouseEvent me) //method MouseClikced { Aplikasi_Event AE=new Aplikasi_Event(); //pemanggilan kelas lain AE.komponenVisual(); AE.AksiReaksi(); }}); twit.addMouseListener(new MouseAdapter() { public void mouseEntered(MouseEvent e) //method MouseEntered { twit.setIcon(new ImageIcon("gambar/twit2.png")); } public void mouseExited(MouseEvent e) //method MouseExited { twit.setIcon(new ImageIcon("gambar/twit1.png")); } public void mousePressed(MouseEvent e) //method MousePressed { try { Desktop.getDesktop().browse(new URI("http://www.twitter.com")); } catch(Exception ex) { System.out.println(ex); } } } ); } public static void main(String[] args)
  • 55.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 48 { Aplikasi_MouseListener AML = new Aplikasi_MouseListener(); AML.KomponenVisual(); AML.AksiReaksi(); } }  Penjelasan koding program. CODING KETERANGAN Desktop.getDesktop().browse(new URI("http://mail.yahoo.com")); Berfungsi untuk ngelink dari desktop ke browser sesuai dengan alamat link nya. setToolTipText (""); Berfungsi sebagai komentar setCursor(new Cursor(Cursor.HAND_CURSOR)); Berfungsi untuk mengganti kursor sesuai keinginan 2.4 MouseMotionListener MouseMotionListener berfungsi untuk memantau kondisi objek ketika kursor mouse berjalan melintasi komponen, baik ketika tombol mouse ditekan ataupun tidak. Method MouseMotionListener ada dua yaitu : Tabel 5 Method MouseMotionListener Method Keterangan addMouseMotionListener(new mouseAdapter() { public void mouseDragged(MouseEvent me) }); Dieksekusi ketika terjadi pergeseran kursor mouse yang disertai dengan penekanan tombol mouse addMouseMotionListener(new MouseAdapter() { public void mouseMoved(MouseEvent me) }); Dieksekusi ketika terjadi perpindahan kursor mouse. Berikut ini contoh penggunaan mouse motion listener
  • 56.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 49 Gambar 20 Contoh MouseMotionListener  Berikut ini coding menggunakan MouseMotionListener import java.awt.*; import java.awt.event.*; import javax.swing.*; class Aplikasi_MouseMotionListener extends JFrame { TextField tf = new TextField(); Aplikasi_MouseMotionListener() { setTitle("Aplikasi Mouse Motion Listener"); setLocation(200,100); setSize(300,200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void komponenVisual() { getContentPane().setLayout(null); getContentPane().setBackground(Color.pink); getContentPane().add(tf); tf.setBounds(10,10,250,20); setVisible(true); } void AksiReaksi() { addMouseMotionListener(new MouseAdapter() { public void mouseDragged(MouseEvent me) { String msg = "Mouse di tahan di posisi --> " + me.getX() + " , " + me.getY(); tf.setText(msg);
  • 57.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 50 tf.setForeground(Color.red); } }); addMouseMotionListener(new MouseAdapter() { public void mouseMoved(MouseEvent me) { String msg = "Mouse berpindah di posisi --> " + me.getX() + " , " +me.getY(); tf.setText(msg); tf.setForeground(Color.blue); } }); } public static void main(String args[]) { Aplikasi_MouseMotionListener med = new Aplikasi_MouseMotionListener(); med.komponenVisual(); med.AksiReaksi(); } } 2.5 ItemListener ItemListener berfungsi Untuk menangani reaksi atas perubahan status pada pilihan yang terdapat pada objek tertentu. Misalnya pemilihan pada checkbox atau radiobutton. Method ItemListener ada 1 yaitu : Tabel 6 Method ItemListener Method Fungsinya addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) }); Dieksekusi ketika sebuah data komponen dalam objek diakses Berikut ini contoh penggunaan ItemListener dengan ComboBox
  • 58.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 51 Gambar 21. Contoh ItemListener  Berikut ini coding menggunakan ItemListener import javax.swing.*; import java.awt.event.*; class Aplikasi_ItemListener extends JFrame { JLabel judul = new JLabel ("PILIH LAH KOTA ANDA"); JLabel Lkota = new JLabel("Kota "); String kota[] = {"Banda Aceh","Medan","Padang","Palembang"}; JComboBox cbkota = new JComboBox (kota); JLabel Lpropinsi = new JLabel("Propinsi "); JTextField txpropinsi = new JTextField(); String propinsi[] = {"Aceh","Sumatera Utara","Sumatera Barat","Sumatera Selatan"}; JLabel judul2 = new JLabel ("PILIHLAH JENIS KELAMIN ANDA"); JRadioButton pria = new JRadioButton ("Pria"); JRadioButton wanita = new JRadioButton ("Wanita"); JRadioButton kosong = new JRadioButton ("???"); ButtonGroup grGender = new ButtonGroup(); JLabel orang = new JLabel (new ImageIcon("gambar/orang.png")); JLabel gambar = new JLabel (new ImageIcon ("gambar/wal.jpg")); Aplikasi_ItemListener() { setTitle("Aplikasi Item Listener"); setLocation(300,10); setSize(400,200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void KomponenVisual()
  • 59.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 52 { getContentPane().setLayout(null); getContentPane().add(judul); judul.setBounds(10,10,200,20); getContentPane().add(Lkota); Lkota.setBounds(10,55,80,20); getContentPane().add(cbkota); cbkota.setBounds(100,55,120,20); getContentPane().add(Lpropinsi); Lpropinsi.setBounds(10,85,80,20); getContentPane().add(txpropinsi); txpropinsi.setBounds(100,85,120,20); txpropinsi.setEnabled(false); getContentPane().add(orang); orang.setBounds(250,10,128,128); getContentPane().add(judul2); judul2.setBounds(10,115,200,20); getContentPane().add(pria); pria.setBounds(20,135,80,20); pria.setOpaque(false); //untuk buat tranparan getContentPane().add(wanita); wanita.setBounds(100,135,80,20); wanita.setOpaque(false); //untuk buat tranparan getContentPane().add(kosong); kosong.setBounds(180,135,80,20); kosong.setOpaque(false); //untuk buat tranparan grGender.add(pria); grGender.add(wanita); grGender.add(kosong); getContentPane().add(gambar); gambar.setBounds(0,0,400,200); setVisible(true); } void AksiReaksi()
  • 60.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 53 { cbkota.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { int x = cbkota.getSelectedIndex(); String z = propinsi[x]; txpropinsi.setText(z); } } ) ; pria.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent event) { if(event.getSource()==pria) { if(event.getStateChange()==ItemEvent.SELECTED) orang.setIcon(new ImageIcon ("gambar/pria.png")); } } } ) ; wanita.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent event) { if(event.getSource()==wanita) { if(event.getStateChange()==ItemEvent.SELECTED) orang.setIcon(new ImageIcon ("gambar/girl.png")); } } } ) ; kosong.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent event) { if(event.getSource()==kosong) { if(event.getStateChange()==ItemEvent.SELECTED) orang.setIcon(new ImageIcon ("gambar/banci.png")); } } } ) ; } public static void main(String args[]) { Aplikasi_ItemListener AL = new Aplikasi_ItemListener(); AL.KomponenVisual(); AL.AksiReaksi(); } } 2.6 ChangeListener
  • 61.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 54 ChangeListener berfungsi untuk memantau kondisi objek, apakah mengalami perubahan keadaan (state) atau tidak. Perubahan keadaan (state) yang dimaksud contohnya adalah ketika komponen di-clik, ketika kursor mouse melewati objek tersebut dan lainnya, ChangeListener menggunakan package import javax.swing.event.*;. Method ChangeListener ada satu yaitu : Tabel 7 Method ChangeListener Method Fungsinya addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent ce) }); Dieksekusi ketika sebuah komponen mengalami perubahan kondisi Berikut ini contoh penggunaan ChangeListener dengan Jslider dan JTextArea Gambar 22. Contoh ChangeListener  Berikut ini coding menggunakan ChangeListener import java.awt.*; import javax.swing.*; import javax.swing.event.*; //library ChangeListener class Aplikasi_ChangeListener extends JFrame { JPanel pane = new JPanel(); JScrollPane scrollPane = new JScrollPane(); JTextArea area = new JTextArea(); JSlider slide = new JSlider(1,150); // 1 batas minim dan 150 batas maxi
  • 62.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 55 JLabel LFontMax = new JLabel("Maximize / Minimize Font"); JLabel LTulis = new JLabel("Tulis text disini"); JLabel LWall = new JLabel(new ImageIcon("gambar/background.png")); JLabel Licon = new JLabel(new ImageIcon("gambar/tulis.png")); Aplikasi_ChangeListener() { setTitle("Font Size"); setResizable(false); setLocation (100,100); setSize (564,300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void KomponenVisual() { setContentPane(pane); pane.setLayout(null); pane.add(LTulis); LTulis.setBounds(101, 10, 114, 15); LTulis.setFont(new Font("Comic Sans MS", Font.BOLD, 14)); LTulis.setForeground(new Color(255, 255, 255)); pane.add(scrollPane); scrollPane.setBounds(12, 40, 309, 120); scrollPane.setViewportView(area); area.setFont(new Font("Comic Sans MS", Font.BOLD, 12)); area.setWrapStyleWord(true); area.setLineWrap(true); pane.add(slide); slide.setBounds(76, 180, 200, 40); slide.setValue(15); //penentuan awal ukuran slide pane.add(LFontMax); LFontMax.setBounds(86, 240, 190, 15); LFontMax.setFont(new Font("Comic Sans MS", Font.BOLD, 14)); LFontMax.setForeground(new Color(255, 255, 255)); pane.add(Licon); Licon.setBounds(388, 45, 128, 120); pane.add(LWall); LWall.setBounds(0,0,568,348); setVisible(true); } void AksiReaksi()
  • 63.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 56 { slide.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent ce) { area.setFont(new Font("Comic Sans MS", Font.BOLD, slide.getValue())); } } ); } public static void main(String[] args) { Aplikasi_ChangeListener ACL = new Aplikasi_ChangeListener(); ACL.KomponenVisual(); ACL.AksiReaksi(); } } D. TUGAS Buatlah sebuah kelas kalkulator yang lebih komplit lagi. Seperti dibawah ini.
  • 64.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 57 BAB 3 PENGATURAN LAYOUT A. TUJUAN: 1. Mahasiswa dapat mengatur layout dari form yang dibuat menggunakan pemrograman bahasa Java. 2. Mahasiswa dapat menjelaskan perbedaan FlowLayout, BorderLayout, GridLayout dan NoneLayout 3. Mahasiswa dapat menerapkan JPanel. B. PRASYARAT 1. Algoritma dan Pemograman 2. Pemograman Berorientasi Objek C. PENGANTAR : Pengaturan layout digunakan untuk mengatur posisi dari komponen visual penyusun program sesuai dengan desain user interface. Beberapa pilihan layout telah disediakan java, dimana keputusan untuk menggunakan jenis layout tertentu bergantung pada jenis aplikasi yang ingin dibuat serta tingkat kerapian yang diinginkan. Pada bab-bab terdahulu, manajemen layout yang digunakan adalah none layout, dimana pengaturan posisi komponen dalam frame dilakukan sendiri oleh programmer. Beberapa jenis layout yang lain dapat digunakan untuk berbagai keperluan. Method setLayout() digunakan untuk mengatur jenis metode yang digunakan pada saat pemasangan komponen. Untuk pengaturan layout menggunakan package import java.awt.*; Layout manager mengatur tampilan dari komponen di dalam kontainer. Container adalah tempat dimana widget berada, seperti button, text area, radio button, dll. Berikut ini adalah contoh program yang terdiri dari beberapa komponen dan diatur dengan menggunakan beberapa jenis manajemen layout agar dapat dilihat karakteristik masing-masing.
  • 65.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 58 3.1 FlowLayout FlowLayout adalah jenis pengaturan layout yang paling sederhana, dimana semua komponen akan tersusun dari kiri ke kanan sepanjang frame, dan akan pindah ke bawah bila telah sampai batas kanan frame. Secara default seluruh komponen yang ditambahkan dengan metode FlowLayout akan ditampilkan dengan rata tengah, namun metode FlowLayout memiliki konstanta LEFT,CENTER, dan RIGHT untuk mengatur perataan komponen yang diinginkan. FlowLayout memiliki tiga konstruktor yaitu : Tabel 8 Method FlowLayout Method Fungsinya Flowlayout() Membuat objek baru FlowLayout dengan posisi ditengah dan lima spasi horizontal dan vertikal sebagai gap yang dimasukkan pada komponen sebagai default. Flowlayout (int align) Membuat objek baru FlowLayout dengan posisi spesifik dan lima spasi horizontal dan vertikal sebagai gap yang dimasukkan pada komponen sebagai default. Contoh : FlowLayout (FlowLayout.LEFT) Flowlayout (int align, int hgap, int vgap) Membuat objek baru FlowLayout dengan argumen pertama sebagai posisi pada komponen dan hgap untuk spasi horizontal sedangkan vgap untuk spasi vertikal pada komponen. Contoh : FlowLayout (FlowLayout.LEFT, 10,10); Gap dapat dikatakan sebagai jarak antara komponen dan biasanya diukur dengan satuan pixel. Posisi argumen mengikuti penulisan sebagai berikut : 1. FlowLayout.LEFT 2. FlowLayout.CENTER 3. FlowLayout.RIGHT Kode program yang digunakan untuk melakukan pengaturan flowlayout adalah: getContentPane().setLayout(new FlowLayout())
  • 66.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 59 yang dapat kita letakkan pada method komponenVisual() bersama dengan komponen-komponen visual.  Berikut ini coding menggunakan FlowLayout import javax.swing.*; import java.awt.*; class Aplikasi_FlowLayout extends JFrame { JLabel nama=new JLabel("Nama"); JTextField txnama=new JTextField(20); JLabel nim=new JLabel("NIM"); JTextField txnim=new JTextField(7); JButton tombolSimpan=new JButton("Simpan"); Aplikasi_FlowLayout() { setTitle ("Aplikasi FlowLayout"); setLocation(200,100); setSize(300,120); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void KomponenVisual() { getContentPane().setLayout(new FlowLayout()); getContentPane().add(nama); getContentPane().add(txnama); getContentPane().add(nim); getContentPane().add(txnim); getContentPane().add(tombolSimpan); setVisible(true); } public static void main(String args[]) { Aplikasi_FlowLayout AF=new Aplikasi_FlowLayout(); AF.KomponenVisual(); } }
  • 67.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 60 Berikut ini contoh penggunaan FlowLayout Gambar 23 Contoh FlowLayout Dalam program di atas komponen visual yang digunakan adalah JLabel, JTextField dan JButton. Terlihat bahwa komponen visual secara berurutan menempati posisi dari kiri ke kanan dan selalu berada di tengah frame. 3.2 BorderLayout BorderLayout merupakan jenis layout yang bekerja dengan membagi frame menjadi lima bagian sesuai dengan arah mata angin yaitu NORTH, EAST, SOUTH, WEST dan CENTER. Komponen visual dapat diletakkan pada bagian-bagian tersebut. Setiap komponen dimasukkan ke dalam region yang spesifik. Region utara dan selatan membentuk jalur horizontal sedangkan region timur dan barat membentuk jalur vertikal. Dan region tengah berada pada perpotongan jalur horizontal dan vertikal. Tampilan ini adalah bersifat default untuk objek Window. Konstruktor BorderLayout ada dua yaitu : Tabel 9 Method BorderLayout Method Fungsinya BorderLayout() Membuat objek BorderLayout baru tanpa spasi yang diaplikan diantara komponen yang berbeda. BorderLayout (int hgap, int vgap) membuat objek BorderLayout dengan spasi unit hgap untuk spasi horizontal sedangkan vgap untuk spasi vertical yang diaplikasikan diantara komponen berbeda Kode program yang digunakan untuk melakukan pengaturan BorderLayout adalah: getContentPane().setLayout(new BorderLayout());
  • 68.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 61 Bila program sebelumnya diganti layout-nya menggunakan BorderLayout maka programnya adalah sebagai berikut: import javax.swing.*; import java.awt.*; class Aplikasi_BorderLayout extends JFrame { JLabel nama=new JLabel("Nama"); JLabel nim=new JLabel("NIM"); JTextField txnama=new JTextField(20); JTextField txnim=new JTextField(7); JButton tombolSimpan=new JButton("Simpan"); Aplikasi_BorderLayout() { setTitle ("Aplikasi BorderLayout"); setLocation(0,0); setSize(400,200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void KomponenVisual() { getContentPane().setLayout(new BorderLayout()); getContentPane().add(nama, "North"); getContentPane().add(txnama, "East"); getContentPane().add(nim, "Center"); getContentPane().add(txnim, "West"); getContentPane().add(tombolSimpan, "South"); setVisible(true); } public static void main(String args[]) { Aplikasi_BorderLayout AB=new Aplikasi_BorderLayout(); AB.KomponenVisual(); } }
  • 69.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 62 Contoh penggunaan BorderLayout adalah: Gambar 24. Contoh BorderLayout method add membutuhkan argumen nama obyek dan salah satu dari posisi layout yang telah disediakan dalam BorderLayout(). 3.3 GridLayout GridLayout adalah jenis layout yang bekerja berdasarkan baris dan kolom. Dengan layout ini kita dapat memberikan argumen banyaknya baris dan kolom sesuai dengan kebutuhan. Ada 3 konstuktor untuk grid layout: Tabel 10. Method GridLayout Method Fungsinya GridLayout() membuat layout dengan satu kolom perkomponen. Hanya satu baris yang digunakan. GridLayout (int rows, int cols) membuat satu layout berdasarkan jumlah baris dan kolom yang digunakan GridLayout (int rows, int cols, int hgap, int vgap) membuat layout berdasarkan jumlah baris dan kolom yang diinginkan, serta ukuran jarak (gap) horizontal maupun vertical untuk setiap baris dan kolom tersebut. Kode program yang digunakan untuk melakukan pengaturan GridLayout adalah: getContentPane().setLayout(new GridLayout(4,2)); Berikut ini adalah program sebelumnya menggunakan pengaturan GridLayout.
  • 70.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 63 import javax.swing.*; import java.awt.*; class Aplikasi_GridLayout extends JFrame { JLabel nama=new JLabel("Nama"); JLabel nim=new JLabel("NIM"); JTextField txnama=new JTextField(20); JTextField txnim=new JTextField(7); JButton tombolSimpan=new JButton("Simpan"); Aplikasi_GridLayout() { setTitle ("Aplikasi GridLayout"); setLocation(200,100); setSize(450,120); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void KomponenVisual() { getContentPane().setLayout(new GridLayout(4,2)); getContentPane().add(nama); getContentPane().add(txnama); getContentPane().add(nim); getContentPane().add(txnim); getContentPane().add(tombolSimpan); setVisible(true); } public static void main(String args[]) { Aplikasi_GridLayout AG=new Aplikasi_GridLayout(); AG.KomponenVisual(); } } Contoh penggunaan GridLayout adalah: Gambar 25. Contoh GridLayout
  • 71.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 64 Dimana angka 4 pada argumen GridLayout menunjukkan banyaknya baris dan 2 menunjukkan banyaknya kolom. 3.4 NoneLayout NoneLayout merupakan jenis layout yang dapat menghasilkan tampilan yang rapi karena kita dapat mengatur posisi komponen secara detil berdasarkan koordinatnya. Konsekuensinya dengan layout ini waktu yang diperlukan relatif lebih banyak dibanding layout yang lain karena kita perlu menentukan posisi koordinat tiap komponen. Kode program yang digunakan untuk melakukan pengaturan NoneLayout adalah: getContentPane().setLayout(null); import javax.swing.*; import java.awt.*; class Aplikasi_NoneLayout extends JFrame { JLabel nama=new JLabel("Nama"); JLabel nim=new JLabel("NIM"); JTextField txnama=new JTextField(20); JTextField txnim=new JTextField(7); JButton tombolSimpan=new JButton("Simpan"); Aplikasi_NoneLayout() { setTitle ("Aplikasi NoneLayout"); setLocation(200,100); setSize(450,120); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void KomponenVisual() { getContentPane().setLayout(null); getContentPane().add(nama); nama.setBounds(10,10,100,25); getContentPane().add(txnama); txnama.setBounds(150,10,200,20); getContentPane().add(nim); nim.setBounds(10,30,100,25); getContentPane().add(txnim);
  • 72.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 65 txnim.setBounds(150,30,100,20); getContentPane().add(tombolSimpan); tombolSimpan.setBounds(150,50,100,25); setVisible(true); } public static void main(String args[]) { Aplikasi_NoneLayout AN=new Aplikasi_NoneLayout(); AN.KomponenVisual(); } } Contoh penggunaan NoneLayout adalah: Gambar 26. Contoh NoneLayout Pengaturan ini membutuhkan method setBounds yang digunakan untuk meletakkan komponen visual pada posisi tertentu. Method ini membutuhkan argumen koordinat x, koordinat y, lebar obyek dan tinggi obyek. Pada contoh di atas, komponen label yang kita letakkan pada posisi x = 10, y = 10, lebar 100 dan tinggi 25. 3.5 JPanel JPanel adalah komponen visual yang digunakan untuk membantu mengatur letak komponen lain agar terlihat lebih tertata rapi dan nyaman. Berikut ini adalah contoh penggunaan Jpanel dalam sebuah program. Seperti biasa, sebelum digunakan komponen JPanel perlu dideklarasikan menggunakan sintaks : JPanel panel = new JPanel(); import javax.swing.*; import java.awt.*; class Aplikasi_Panel extends JFrame { JPanel panel=new JPanel();
  • 73.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 66 JLabel label1=new JLabel("Nama"); JTextField text1=new JTextField(20); Aplikasi_Panel() { setTitle ("Aplikasi Panel"); setLocation(300,100); setSize(300,150); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void KomponenVisual() { getContentPane().add(panel); panel.add(label1); panel.add(text1); setVisible(true); } public static void main(String args[]) { Aplikasi_Panel1 AP=new Aplikasi_Panel1(); AP.KomponenVisual(); } } Contoh penggunaan JPanel adalah: Gambar 27. Contoh JPanel JPanel juga bisa digabungkan dengan BorderLayout dan GridLayout yang diletakkan di komponen visual .
  • 74.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 67  JPanel digabungkan dengan BorderLayout import javax.swing.*; import java.awt.*; class Aplikasi_Panel2 extends JFrame { JPanel panel = new JPanel(); JLabel label=new JLabel("Nama"); JTextField text=new JTextField(20); JPanel panel2 = new JPanel(); JButton tombol=new JButton("Simpan"); JButton exit=new JButton("Exit"); Aplikasi_Panel2() { setTitle ("Aplikasi Panel2"); setLocation(300,100); setSize(300,150); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void KomponenVisual() { getContentPane().add(panel, BorderLayout.NORTH); panel.add(label); panel.add(text); getContentPane().add(panel2, BorderLayout.SOUTH); panel2.add(tombol); panel2.add(exit); setVisible(true); } public static void main(String args[]) { Aplikasi_Panel2 AP2=new Aplikasi_Panel2(); AP2.KomponenVisual(); } }
  • 75.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 68 Contoh menggunakan gabungan JPanel dan Border Layout. Gambar 28. Contoh gabungan JPanel dan Border Layout. Pada contoh di atas terdapat dua JPanel. Layout yang digunakan adalah BorderLayout sehingga komponen visual dapat diletakkan dalam lima posisi. JPanel pertama diletakkan pada posisi North dan JPanel kedua diletakkan pada posisi South. Panel pertama diisi dengan JLabel dan JTextField, sementara panel kedua berisi JButton. Kedua Panel tersebut kemudian diletakkan dalam Frame menggunakan sintaks  JPanel digabungan dengan BorderLayout dan GridLayout. import javax.swing.*; import java.awt.*; class Aplikasi_Panel3 extends JFrame { JPanel panel = new JPanel(); JLabel label=new JLabel(" Nama"); JTextField text=new JTextField(20); JPanel panel2 = new JPanel(); JButton tombol=new JButton("Simpan"); JButton exit=new JButton("Exit"); Aplikasi_Panel3() { setTitle ("Aplikasi Panel3"); setLocation(300,100); setSize(300,150); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void KomponenVisual()
  • 76.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 69 { panel.setLayout(new GridLayout(2,1)); getContentPane().add(panel, BorderLayout.NORTH); panel.add(label); panel.add(text); panel2.setLayout(new BorderLayout()); getContentPane().add(panel2, BorderLayout.SOUTH); panel2.add(tombol,"Center"); panel2.add(exit,"East"); setVisible(true); } public static void main(String args[]) { Aplikasi_Panel3 AP3=new Aplikasi_Panel3(); AP3.KomponenVisual(); } } Contoh menggunakan gabungan JPanel dan BorderLayout dan GridLayout. Gambar 29. Contoh gabungan JPanel dan BorderLayout dan GridLayout. Pada program di atas, panel pertama diatur menggunakan GridLayout 2 baris 1 kolom. panel1.add(label1); panel1.add(text1); panel1.setLayout(new GridLayout(2,1)); getContentPane().add(panel1, BorderLayout.NORTH); Sementara itu panel kedua menggunakan BorderLayout yang diisi dengan Tobol simpan pada posisi Center dan tombol exit pada posisi East. panel2.setLayout(new BorderLayout()); panel2.add(tombol1,"Center"); panel2.add(exit,"East"); getContentPane().add(panel2, BorderLayout.SOUTH);
  • 77.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 70 BAB 4 PEMROGRAMAN GRAFIS A. TUJUAN: 1. Mahasiswa dapat menjelaskan konsep dasar pemrograman grafis pada bahasa Java. 2. Mahasiswa dapat membuat program untuk mengambar bentuk-bentuk grafik primitive seperti garis, kotak, segitiga dan lain-lain. 3. Mahasiswa dapat membuat program untuk menampilkan dan mengolah data gambar (image). B. PRASYARAT 1. Algoritma dan Pemograman 2. Pemograman Berorientasi Objek C. PENGANTAR Pemrograman grafis digunakan dalam banyak hal mulai dari upaya untuk memperoleh tampilan yang indah, aplikasi animasi, aplikasi simulasi, aplikasi pengolahan citra sampai visi komputer. Berikut ini adalah beberapa pemrograman dasar di bidang grafis dalam java yang diharapkan dapat menjadi bekal awal untuk memahami berbagai topik seputar grafis yang begitu luas. Pembahasan permograman garis akan dimulai dari menggambar obyek-obyek sederhana menggunakan garis, Bahasa Java merupakan salah satu bahasa dengan fasilitas berupa komponen- komponen grafis yang lengkap. Karena itulah banyak program grafik, dan permainan yang berbasis grafik dibuat menggunakan bahasa Java. 4.1 Dasar Pemrograman Grafis Salah satu cara untuk membuat aplikasi grafis dengan java adalah dengan membuat class yang merupakan turunan dari class canvas. Dalam class inilah kita meletakkan gambar atau animasi, dan membentuk sebuah obyek untuk mengakses gambar kita tersebut.
  • 78.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 71  Berikut ini coding pembentukan Class Kanvas import javax.swing.*; import java.awt.*; class Aplikasi_Kanvas1 extends Canvas { public void paint(Graphics g) { } } class Menggambar extends JFrame { //pemanggilan kelas kanvas Aplikasi_Kanvas1 gambar=new Aplikasi_Kanvas1(); Menggambar() { super("Aplikasi Grafis "); setLocation(100,100); setSize(250,150); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void KomponenVisual() { getContentPane().setLayout(new BorderLayout()); getContentPane().add(gambar,BorderLayout.CENTER); setVisible(true); } public static void main (String[] args) { Menggambar g1=new Menggambar(); g1.KomponenVisual(); } } Contoh penggunaan kelas Kanvas adalah: Gambar 30. Contoh Kelas Kanvas
  • 79.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 72 class Kanvas1 extends Canvas { public void paint(Graphics g) { } } Sintaks ini merupakan class tempat menggambar berbagai obyek gambar. Class inilah yang digunakan untuk meletakkan gambar yang kita bangun menggunakan kode- kode tertentu. Kode-kode tersebut diletakkan dalam method paint. Pada method paint() di atas tidak terdapat baris kode apapun sehingga output yang muncul adalah frame kosong tanpa gambar apapun. class Menggambar extends JFrame { Kanvas1 gambar=new Kanvas1(); .......... .......... } Class Menggambar adalah program aplikasi grafis kita. Pada class ini kita membentuk obyek menggunakan class Kanvas1 dengan nama gambar. Method paint() pada Class Kanvas1 dapat diisi dengan berbagai sintaks untuk membuat aplikasi grafis, misalnya kita isi dengan sintaks berikut : class Kanvas1 extends Canvas { public void paint(Graphics g) { g.setColor(Color.red); g.drawLine(10,10,250,10); g.setColor(Color.blue); g.drawRect(10,20,100,50); g.setColor(Color.red); g.drawOval(120,20,50,50); g.drawString("Selamat Belajar", 100,100); g.setColor(Color.black); } }
  • 80.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 73 Tabel 11. Method Grafis Method Fungsinya g.setColor(Color.red); Digunakan untuk mengatur warna dari obyek gambar setelah baris tersebut dituliskan g.drawLine(10,10,250,10); Digunakan untuk mengambar bentuk garis dimana argumen pertama dan kedua menunjukkan koordinat titik awal garis, argumen ketiga dan keempat menunnjukkan koordinat titik akhir garis. g.drawRect(10,20,100,50); Digunakan untuk menggambar bentuk segi empat dimana argumen pertama dan kedua merupakan ujung kiri atas, argumen krtiga dan keempat menunjukkan ujung kanan bawah dari segi empat. g.drawOval(120,20,50,50); Digunakan untuk menggambar bentuk lingkaran dimana argumen pertama dan kedua merupakan koordinat pusat, argumen krtiga jarak horisontal dan argumen keempat adalah jarak vertikal. g.drawString("Selamat Belajar", 100,100); Digunakan untuk menggambar bentuk string. Argumen pertama merupakan string yang akan ditampilkan, argumen kedua dan ketiga menuunjukkan posisi dari tulisan.  Berikut ini coding menggunakan Class Kanvas import javax.swing.*; import java.awt.*; class Aplikasi_Kanvas2 extends Canvas { public void paint(Graphics g) { g.setColor(Color.red); g.drawLine(10,10,250,10); g.setColor(Color.blue); g.drawRect(10,20,100,50); g.setColor(Color.red);
  • 81.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 74 g.drawOval(120,20,50,50); g.drawString("Selamat Belajar", 100,100); g.setColor(Color.black); } } class Menggambar extends JFrame { Aplikasi_Kanvas2 gambar=new Aplikasi_Kanvas2(); Menggambar() { super("Aplikasi Grafis "); setLocation(0,0); setSize(300,150); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void KomponenVisual() { getContentPane().setLayout(new BorderLayout()); getContentPane().add(gambar,BorderLayout.CENTER); setVisible(true); } public static void main (String[] args) { Menggambar g1=new Menggambar(); g1.KomponenVisual(); } } Contoh penggunaan kelas Kanvas adalah: Gambar 31. Contoh Objek Kanvas
  • 82.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 75 Masih banyak method lain yang berhubungan dengan bentuk-bentuk grafis ini, silahkan ber-eksplorasi untuk menambah wawasan anda. Salah satu kegunaan dari pembentukan gambar-gambar di atas adalah untuk keperluan pembuatan grafik dan animasi. Berikut ini adalah program visualisasi grafik sinus dan cosinus sederhana yang didasarkan pada pengetahuan di atas.  Berikut ini coding menggunakan Animasi grafik import javax.swing.*; import java.awt.*; class Aplikasi_KanvasAnimasi extends Canvas { public void paint(Graphics g) { g.setColor(Color.black); g.drawLine(10,10,10,210); g.drawLine(5,110,380,110); g.drawString("1",2,14); g.drawString("-1",14,210); g.drawString("0",13,123); g.drawString("90",100,123); g.drawString("180",190,123); g.drawString("270",280,123); g.drawString("360",370,123); g.setColor(Color.red); for(int i=0; i<360; i+=1) { int y=(int) (Math.sin(i*Math.PI/180)*100)*-1; g.drawOval(i+10,y+110,1,1); } g.setColor(Color.blue); for(int i=0; i<360; i+=1) { int y=(int) (Math.cos(i*Math.PI/180)*100)*-1; g.drawOval(i+10,y+110,1,1); } g.setColor(Color.GREEN); for(int i=0; i<360; i+=1) {
  • 83.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 76 int y=(int) (Math.tan(i*Math.PI/180)*100)*-1; g.drawOval(i+10,y+110,1,1); } } } class Animasi extends JFrame { Aplikasi_KanvasAnimasi gambar=new Aplikasi_KanvasAnimasi(); Animasi() { setTitle("Plotting Fungsi Sinus dan Cosinus "); setLocation(200,100); setSize(400,260); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void KomponenVisual() { getContentPane().setLayout(new BorderLayout()); getContentPane().add(gambar, BorderLayout.CENTER); setVisible(true); } public static void main (String[] args) { Animasi anime=new Animasi(); anime.KomponenVisual(); } } Contoh penggunaan kelas Kanvas sinus dan cosinus adalah: Gambar 32. Contoh penggunaan kelas Kanvas sinus dan cosinus
  • 84.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 77 Seperti pada program sebelumnya, program ini juga terdiri dari dua class yaitu class KanvasAnimasi yang berisi gambar atau bentuk-bentuk grafis dan class Animasi yang digunakan untuk menampilkan gambar tersebut. Perubahan terjadi pada class KanvasAnimasi sementara class Animasi tidak mengalami perubahan. Class KanvasAnimasi terdiri dari dua bagian yaitu bagian yang digunakan untuk untuk menggambar sumbu x dan y, serta bagian yang digunakan untuk menampilkan grafik sinus dan cosinus. Bagian untuk menggambar sumbu x dan y adalah : g.setColor(Color.black); g.drawLine(10,10,10,210); g.drawLine(5,110,380,110); g.drawString("1",2,14); g.drawString("-1",14,210); g.drawString("0",13,123); g.drawString("90",100,123); g.drawString("180",190,123); g.drawString("270",280,123); g.drawString("360",370,123); Penjelasan masing-masing baris sintaks di atas adalah sebaga berikut, g.drawString("1",2,14); Adalah sintaks yang digunakan untuk menuliskan string pada argumen pertama ke dalam gambar, argumen kedua dan ketiga digunakan untuk menentukan posisinya pada frame. Bagian untuk menampilkan grafik sinus adalah : g.setColor(Color.red); for(int i=0; i<360; i+=1) { int y=(int) (Math.sin(i*Math.PI/180)*100)*-1; g.drawOval(i+10,y+110,1,1); } Perulangan for(int i=0; i<360; i+=1) diperlukan karena kita ingin menampilkan mulai grafik mulai dari 0o sampai 360o . Method sin() memiliki argumen dalam bentuk radian sehingga perlu dilakukan konversi ke bentuk derajat dengan mengalikan setiap bilangan dengan π/180. Hasil dari perkalian ini dikalikan dengan 100 supaya skalanya lebih besar. Selanjutnya hasil perhitungan tersebut dikalikan dengan -1 agar gambar
  • 85.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 78 grafik menemukan posisi yang benar. Perlu diingat bahwa koordinat grafis agak berbeda dengan koordinat kartesius yang biasa. Titik (0,0) pada koordinat grafis terletak di ujung kiri atas dari layar monitor. Bila tidak kita kalikan dengan -1 maka tampilan yang diperoleh posisinya akan terbalik. Proses terakhir adalah type casting yang dilakukan untuk memaksa hasil perhitungan menjadi bilangan bulat sehingga dapat digunakan sebagai argumen bagi method g.drawOval() yang membutuhkan argumen bertipe integer. Program di atas akan langsung menampilkan grafik sinus ketika program dijalankan. Kita dapat menambahkan satu baris kode di dalam proses plotting untuk memunculkan efek animasi. Baris kode berikut : try { Thread.sleep(10); } catch(Exception e) { } Perlu ditambahkan pada saat plotting grafik sinus sehingga kode pada bagian proses menampilkan gambar akan berubah menjadi : g.setColor(Color.red); for(int i=0; i<360; i+=1) { int y=(int) (Math.sin(i*Math.PI/180)*100)*-1; g.drawOval(i+10,y+110,1,1); try { Thread.sleep(10); } catch(Exception e) { } } Untuk plotting grafik cosinus dilaksanakan dengan cara yang sama, hanya mengubah sin menjadi cos. Perubahan akibat penambahan kode di atas akan terlihat pada saat program dijalankan. Bila sebelumnya gambar grafik langsung muncul, maka sekarang akan muncul satu-satu yaitu grafik sinus terlebih dulu yang berjalan dari 0o sampai 360o dilanjutkan dengan grafik cosinus yang juga bergerak dari 0o sampai 360o . Program lengkapnya adalah sebagai berikut:
  • 86.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 79 import javax.swing.*; import java.awt.*; class Aplikasi_KanvasAnimasi2 extends Canvas { public void paint(Graphics g) { g.setColor(Color.black); g.drawLine(10,10,10,210); g.drawLine(5,110,380,110); g.drawString("1",2,14); g.drawString("-1",14,210); g.drawString("0",13,123); g.drawString("90",100,123); g.drawString("180",190,123); g.drawString("270",280,123); g.drawString("360",370,123); g.setColor(Color.red); for(int i=0; i<360; i+=1) { int y=(int) (Math.sin(i*Math.PI/180)*100)*-1; g.drawOval(i+10,y+110,1,1); try { Thread.sleep(10); } catch(Exception e) { } } g.setColor(Color.blue); for(int i=0; i<360; i+=1) { int y=(int) (Math.cos(i*Math.PI/180)*100)*-1; g.drawOval(i+10,y+110,1,1); try { Thread.sleep(10); } catch(Exception e) { } } g.setColor(Color.GREEN); for(int i=0; i<360; i+=1)
  • 87.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 80 { int y=(int) (Math.tan(i*Math.PI/180)*100)*-1; g.drawOval(i+10,y+110,1,1); try { Thread.sleep(10); } catch(Exception e) { } } } } class Animasi extends JFrame { Aplikasi_KanvasAnimasi2 gambar=new Aplikasi_KanvasAnimasi2(); Animasi() { setTitle("Plotting Fungsi Sinus dan Cosinus "); setLocation(200,100); setSize(400,260); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void KomponenVisual() { getContentPane().setLayout(new BorderLayout()); getContentPane().add(gambar, BorderLayout.CENTER); setVisible(true); } public static void main (String[] args) { Animasi anime=new Animasi(); anime.KomponenVisual(); } } Contoh penggunaan pergerakan kelas Kanvas sinus dan cosinus adalah: Gambar 33. Contoh pergerakan kelas Kanvas sinus dan cosinus
  • 88.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 81 4.2 Bekerja Dengan Citra Dalam pengolahan citra dan visi komputer kita akan bekerja dengan gambar atau citra. Pengolahan citra berhubungan dengan proses untuk mengubah citra menjadi citra lain sesuai dengan keperluan, sementara visi komputer berupaya mendapatkan informasi tertentu dari sebuah citra. Langkah pertama dalam pengolahan citra adalah menangkap gambar dan menyimpannya sebagai data. Setelah proses tersebut, proses pengolahan citra dapat dilakukan dengan menggunakan berbagai algoritma pengolahan citra. Berikut ini adalah cara menangkap dan menampilkan citra dalam pemrograman Java.  Berikut ini coding menampilkan gambar dalam canvas import javax.swing.*; import java.awt.*; import java.awt.image.*; //library untuk gambar class Aplikasi_KanvasCitra extends Canvas { public void paint(Graphics grafis) { Graphics2D g = (Graphics2D) grafis; Image image=new ImageIcon("aaa.jpg").getImage(); g.drawImage(image,0,2,this); } } class AmbilCitra3 extends JFrame { Aplikasi_KanvasCitra gambar=new Aplikasi_KanvasCitra(); public AmbilCitra3() { setTitle("gambar"); setLocation(100,100); setSize(220,350); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void komponenVisual() { getContentPane().setLayout(new BorderLayout()); getContentPane().add(gambar,BorderLayout.CENTER); setVisible(true);
  • 89.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 82 } public static void main(String args[]) { AmbilCitra3 c3=new AmbilCitra3(); c3.komponenVisual(); } } Contoh menampilkan citra adalah: Gambar 34. Contoh Menampilkan Citra Program ini terdiri dari dua class yaitu class KanvasCitra3 dan class AmbilCitra3. Dalam class KanvasCitra3 terdapat sintaks : Image image=new ImageIcon("aaa.jpg").getImage() Yang digunakan untuk mengambil citra dari sebuah file. g.drawImage(image,0,2,this) Digunakan untuk menampilkan gambar ke dalam frame.
  • 90.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 83  Berikut ini coding membuat citra menggunakan kanvas. import javax.swing.*; import java.awt.*; class kanvasUltah extends Canvas { public void paint(Graphics gambarkan) { gambarkan.setColor(Color.BLACK); //untuk api nya gambarkan.fillRect(335,100,2,10); gambarkan.fillRect(385,100,2,10); gambarkan.fillRect(435,100,2,10); gambarkan.setColor(Color.PINK); //untuk lilin nya gambarkan.fillRect(330,110,10,90); gambarkan.fillRect(380,110,10,90); gambarkan.fillRect(430,110,10,90); gambarkan.setColor(Color.GREEN); //untuk kue tingkat 1 gambarkan.fillRect(175,200,400,70); gambarkan.setColor(Color.darkGray); //untuk kue tingkat 2 gambarkan.fillRect(70,250,600,90); gambarkan.setColor(Color.BLACK); //untuk bawah kue tingkat 3 gambarkan.fillRect(50,300,640,50); gambarkan.setColor(Color.RED); //untuk bola kue gambarkan.fillOval(165,260,30,30); gambarkan.fillOval(375,260,30,30); gambarkan.fillOval(565,260,30,30); gambarkan.setColor(Color.darkGray); //untuk bola kue gambarkan.fillOval(270,210,40,30); gambarkan.fillOval(450,210,40,30); gambarkan.drawString("SELAMAT ULANG TAHUN", 310,80); gambarkan.setColor(Color.black); } } class Menggambar extends JFrame { kanvasUltah gambar=new kanvasUltah(); Menggambar() { super("Aplikasi Grafis ");
  • 91.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 84 setLocation(0,0); setSize(800,500); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void KomponenVisual() { getContentPane().setLayout(new BorderLayout()); getContentPane().add(gambar,BorderLayout.CENTER); setVisible(true); } public static void main (String[] args) { Menggambar g1=new Menggambar(); g1.KomponenVisual(); } } Contoh membuat citra menggunakan kanvas. Gambar 35. Contoh gambar kue ulang tahun Selain membuat kue ulang tahun java juga bisa membuat gambar yang lain nya sesuai selera. Berikut salah satu contoh aplikasi kanvas membuat gambar unit komputer.
  • 92.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 85  Cara membuat citra menggunakan kanvas. import javax.swing.*; import java.awt.*; class Aplikasi_KanvasKomputer extends Canvas { public void paint(Graphics g) { //alas (tamplak bawah) g.setColor(Color.blue); int Vx3[ ] = {50,590,550,10}; int Vy3[ ] = {200,200,500,500}; int np3 = Vx3.length; Polygon poly3 = new Polygon(Vx3, Vy3, np3); g.fillPolygon(poly3); //monitor g.setColor(Color.black); g.fillRoundRect(80,50,280,220,40,40); g.fillOval(140,280,150,50); //dalam nya monitor g.setColor(Color.white); g.fillRoundRect(90,60,260,190,40,40); //CPU g.setColor(Color.black); g.fillRoundRect(400,10,130,300,20,20); g.setColor(Color.blue); g.drawRoundRect(410,20,110,280,20,20); g.drawRect(415,50,100,20); g.drawRect(410,175,110,25); g.drawRect(410,125,110,25); g.drawLine(410,275,520,275); g.setColor(Color.white); g.drawRect(450,285,10,5); g.drawRect(470,285,10,5); g.setColor(Color.red); g.fillOval(455,220,20,20); g.fillOval(460,250,10,10);
  • 93.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 86 //keyboard g.setColor(Color.black); int Vx2[ ] = {70,320,290,40}; int Vy2[ ] = {350,350,430,430}; int np2 = Vx2.length; Polygon poly2 = new Polygon(Vx2, Vy2, np2); g.fillPolygon(poly2); g.setColor(Color.white); g.drawLine(70,370,300,370); g.drawLine(70,390,300,390); g.drawLine(65,410,290,410); //mouse g.setColor(Color.yellow); g.fillRoundRect(360,350,40,60,40,40); g.setColor(Color.black); g.drawLine(360,370,400,370); g.drawLine(380,350,380,370); //segitiga g.setColor(Color.RED); int x [] = {10, 40, 70}; int y [] = {90, 30,90}; Polygon segitiga = new Polygon(x, y, 3); g.fillPolygon(segitiga); } } class Menggambar extends JFrame { Aplikasi_KanvasKomputer gambar=new Aplikasi_KanvasKomputer(); Menggambar() { super("Aplikasi Grafis "); setLocation(0,0); setSize(650,550); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void KomponenVisual() { getContentPane().setLayout(new BorderLayout()); getContentPane().add(gambar,BorderLayout.CENTER); setVisible(true);
  • 94.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 87 } public static void main (String[] args) { Menggambar g1=new Menggambar(); g1.KomponenVisual(); } } Contoh membuat citra menggunakan kanvas. Gambar 36. Contoh Gambar Komputer D. TUGAS Buatlah sebuah gambar logo menggunakan kanvas java.
  • 95.
    Ramadhani, S.Kom Pemograman JavaVisual Berbasis Database Jilid I 88 DAFTAR PUSTAKA Fatchurrochman, & Basuki, A. (2007). Pemograman Visual Java. Yogyakarta: Graha Ilmu. Purnama, R. (2007). Pemograman GUI dengan Java. Jakarta: Prestasi Pustaka. Triyuliana, A. H. (2006). Membuat Aplikasi Database dengan Java2. Semarang: Wahana Komputer.