PBO
PBO
KATA PENGANTAR
Puji syukur kehadirat Allah S.W.T atas rahmat dan izin-Nya akhirnya modul praktikum ini
dapat disusun. Modul ini disusun dengan maksud sebagai penunjang mata kuliah Pemrograman
Berorientasi Objek.
Materi pada modul ini yakni dasar-dasar pemrograman java, input dari keyboard, struktur
kontrol, array, argumen dari command line, kelas dan objek, pewarisan, polimorfisme dan interface,
exception handling, stack dan queues, sorting, GUI event handling, threads, jaringan, dan applet.
Sebagian besar materi pada modul ini mengacu pada materi Java Education Network Indonesia (JENI)
serta beragam textbook dan Ebook Java.
Kami yakin dalam modul ini masih banyak kekurangan dan kesalahan yang tidak lepas dari
kekhilafan penyusun. Semoga modul praktikum ini dapat digunakan dengan sebaik-baiknya.
Tim Penyusun
DAFTAR ISI
i. Kata Pengantar
ii. Daftar Isi
1. Dasar-dasar pemrograman Java
2. Input dari Keyboard
3. Struktur Kontrol
4. Array
5. Kelas dan Objek
6. Pewarisan, Polimorfisme Dan Interface
7. Exception Handling
8. Awt dan Swing
9. GUI Event Handling
10. JDBC
11. Membuat Aplikasi Database dengan Java, MySQL dan NetBeans
BAB 1
DASAR PEMROGRAMAN JAVA
1.1
Tujuan
Mengidentifikasi bagian dasar dari program Java, membedakan mana yang
termasuk ke dalam Java literals, tipe data dasar, tipe variabel, pengidentifikasian
dan operator
Mengembangkan program Java sederhana menggunakan konsep pembelajaran
pada bab ini
Menganalisa program Java pertama
1.2
Latar Belakang
Pada bab ini, kita akan mendiskusikan mengenai dasar-dasar pemrograman Java.
Diantaranya penggunaan variabel, tipe data, dan operator pada Java dan bagaimana
mengantisipasi error pada penulisan kode Java.
1.3
Percobaan
1.3..1 Percobaan 1 (hello.Java)
class hello {
public static void main (String[] args) {
System.out.println(Halo Indonesia); }
}
Hasil :
Halo Indonesia
Pembahasan :
Setiap program Java, nama file yang berekstensi .java selalu sama dengan
nama kelas pada kode program. Setiap blok statemen dibawah kelas selalu
dimulai dengan kurung kurawal buka ({) dan pada akhir statemen ditutup dengan
kurung kurawal tutup (}), tanpa menggunakan tanda tersebut program akan
dinyatakan memiliki kesalahan pada penulisan kode (syntax error).
Statemen public static void main (String[] args) adalah method utama
atau main method yang merupakan titik awal dari suatu program java. Sebuah
main method juga selalu dibuka dengan tanda ({) dan diakhiri dengan (}), sama
halnya dengan memulai suatu kelas tanpa tanda tersebut program akan
dinyatakan syntax error.
Statemen System.out.println(Halo
method
untuk
mencetak
string
ke
layar.
Indonesia) merupakan
Teks
didalam
method
1
.
J
J
ava keyword (Sumber : Materi JENI 1)
Hasil :
Isi variabel var1 : Z
Isi variabel var2 : 10
Isi variabel var3 : 0.8
Isi variabel var4 : true
Pembahasan :
Variabel adalah item yang digunakan data untuk menyimpan pernyataan
objek. Variabel selalu memiliki nama dan tipe data. Deklarasi variabel dapat
dituliskan :
<tipe-data> nama-variabel [=initial value]
Pada percobaan 2 diatas, statemen int var2=10;, int adalah tipe
data, var2 adalah nama variabel, dan 10 adalah initial value.
Variabel juga dapat dibedakan menjadi dua, yaitu variabel reference dan
variabel primitif. Variabel primitif adalah variabel dengan tipe data primitif.
Mereka menyimpan data dalam lokasi memori yang sebenarnya dimana variabel
tersebut berada. Variabel reference adalah variabel yang menyimpan alamat
dalam lokasi memori yang menunjuk ke lokasi memori dimana data sebenarnya
Name or Type
Range
8 bits
byte
-27 to 27-1
16 bits
short
-215 to 215-1
32 bits
int
-231 to 231-1
64 bits
long
-263 to 263-1
Tipe floating point memiliki double sebagai default tipe datanya. Tipe
data floating point memiliki range sebagai berikut :
Tabel 1.2. Tipe-tipe Float dan range-nya
Float Length
Name or Type
Range
32 bits
Float
-231 to 231-1
64 bits
Double
-263 to 263-1
Tipe boolean diwakili oleh dua pernyataan : true dan false. Contoh :
boolean var1=true. Isi dari variabel var1 adalah pernyataan true.
c = +c);
System.out.println(Pengurangan : );
c = b-a;
System.out.println(Isi
= +c);
System.out.println(Perkalian : );
c = a*b;
System.out.println(Isi variabel c = +c);
System.out.println(Pembagian : );
c = b/a;
System.out.println(Isi variabel c = +c);
System.out.println(Sisa Hasil Bagi : );
c = b%a;
Sytem.out.println(Isi variabel c = +c);
}
Hasil :
Operator Aritmatika :
Penambahan :
Isi variabel c = 30
Pengurangan :
Isi variabel c = 10
Perkalian :
Isi variabel c = 200
Pembagian :
Isi variabel c : 2
Sisa Hasil Bagi :
Isi variabel c : 0
Pembahasan :
Operator ini mengikuti bermacam-macam prioritas yang pasti sehingga
compilernya akan tahu yang mana operator untuk dijalankan lebih dulu dalam
kasus beberapa operator yang dipakai bersama-sama dalam satu pernyataan.
Operator aritmatik yang dapat digunakan untuk membuat suatu program
Java :
Tabel 1.3. Operator aritmatika dan fungsi-fungsinya
Operator
Penggunaan
op1+op2
op1*op2
op1/op2
op1%op2
op1-op2
Hasil :
Penambahan satu :
Isi a : 11
Keterangan
Pengurangan satu :
Isi a : 9
Pembahasan :
Operator increment dan decrement menambah dan mengurangi nilai yang
tersimpan dalam bentuk variabel angka terhadap nilai 1.
Pada percobaan 4 diatas, statemen a++ dapat disamakan dengan statemen a=a+1
sedangkan a-- dapat disamakan dengan statemen a=a-1.
Penggunaan operator increment dan decrement sebagai berikut :
Tabel 1.4 Operator Increment dan Decrement
Operator
Penggunaan
Keterangan
++
op++
++
++op
--
op--
--
--op
Hasil :
x > y adalah false
x >= y adalah false
x < y adalah true
x <= y adalah true
x = y adalah false
x != y adalah true
Pembahasan :
Operator relasi membandingkan dua nilai dan menentukan keterhubungan
diantara nilai-nilai tersebut. Hasil keluarannya berupa nilai boolean yaitu true
atau false.
Tabel 1.5 Operator Relasi
Operator
Penggunaan
>
>=
<
<=
==
Op1 == op2
!=
Op1 != op2
Keterangan
Hasil :
Hasil tes1 : false
Hasil tes2 : true
Pembahasan :
Opearator logika memiliki satu atau lebih operand boolean yang
menghasilkan nilai boolean. Operator logika AND (&&) dan boolean logika &
memiliki tabel logika sebagai berikut :
X2
Hasil
TRUE
TRUE
TRUE
TRUE
FALSE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
Contoh jika diberikan pernyataan exp1 && exp2, operator logika AND
(&&) akan mengevaluasi pernyataan exp1, dan segera mengembalikan nilai false
dan menyatakan bahwa exp1 bernilai false. Jika exp1 bernilai false, operator
tidak akan pernah mengevaluasi exp2 karena hasil operasi operator akan menjadi
false tanpa memperhatikan nilai dari exp2. Sebaliknya, operator logika AND (&)
selalu mengevaluasi kedua nilai dari exp1 dan exp2 sebelum mengembalikan
suatu nilai jawaban.
Operator logika OR (||) dan boolean logika OR (|), tabel kebenarannya
adalah sebagai berikut :
1.4
X1
X2
Hasil
TRUE
TRUE
TRUE
TRUE
FALSE
TRUE
FALSE
TRUE
TRUE
FALSE
FALSE
FALSE
Latihan
a) Buatlah program dengan output sebagai berikut :
Halo <nama anda> Selamat Datang di Dunia Java !
b) Buatlah program dengan output sebagai berikut :
Harga barang sebelum diskon : Rp.10.000,Diskon : 10%
Harga barang setelah diskon : Rp. 9.000,-
BAB 2
INPUT DARI KEYBOARD
2.1
Tujuan
Membuat program java yang interaktif yang bisa membaca input dari keyboard
menggunakan GUI
2.2
Latar Belakang
Pada bab ini kita akan mendiskusikan bagaimana Java menangani masukan (input) dari
pengguna melalui keyboard sehingga program menjadi lebih interaktif.
2.3
Percobaan
2.3..1 percobaan 1 (input.java)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
InputData
new
BufferedReader
(System.in));
String nama= ;
System.out.print (Masukkan nama anda : );
try {
nama = InputData.readLine();
}
catch (IOException e ){
System.out.println(Error);
}
System.out.println(Halo nama saya +nama);
}
}
(new
InputStreamReader
Hasil :
Masukkan nama anda : Bob
Halo nama saya Bob
Pembahasan :
Bahasa pemrograman Java tidak memiliki kelas default yang bisa digunakan
dengan cara yang langsung untuk menerima input ari pengguna, tidak seperti
bahasa-bahasa pemrograman lainnya. Meskipun demikian, dengan cara-cara
tertentu, kita tentu saja dapat membuat program Java yang dapat menerima input
dari penguna.
Statemen :
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
Menjelaskan
bahwa
InputStreamReader
kita
akan
menggunakan
class
BufferedReader,
contoh
diatas,
java.io
package
mengandung
class-class
yang
yang akan mengeluarkan semua class yang berada dalam package, dan
selanjutnya kita bisa menggunakan class-class tersebut dalam program kita.
Dalam statemen,
BufferedReader InputData = new BufferedReader(new InputStreamReader
(System.in));
Pernyataan diatas merupakan tempat untuk menyimpan input dari user. Nama
variabel diinisialisasi sebagai String kosong ( ). Sebaiknya kita selalu
menginisialisasi sebuah variabel setelah kita mendeklarasikannya.
Selanjutnya, blok dibawah ini merupakan try-catch block,
try {
nama=dataIn.readline();
catch (IOException e) {
System.out.println(Error!); }
Pada baris ini menjelaskan bahwa kemungkinan terjadi error pada pernyataan,
nama = dataIn.readline();
akan ditangkap. Kita perlu menambahkan kode ini untuk menggunakan method
readLine()
memberikan sebuah nilai String. Nilai akan disimpan ke dalam variabel nama,
yang akan kita gunakan pada statemen akhir untuk menyatakan nama kita.
System.out.println(Halo nama saya +nama);
Hasil :
Pembahasan :
Statemen pertama,
import javax.swing.JOptionPane;
Menjelaskan bahwa kita mengimpor class JOptionPane dari package javax.swing.
Bisa juga ditulis seperti,
import javax.swing.*;
Pernyataan,
nama=JOptionPane.showInputDialog(Silahkan masukkan nama anda);
Pernyataan,
JoptionPane.showMessageDialog(null,psn);
adalah menampilkan sebuah dialog yang berisi sebuah pesan dan tombol OK.
2.4
Latihan
a)
Halo <Nama>, NIM anda <NIM>, anda adalah Mahasiswa Jurusan <Jurusan>
BAB 3
STRUKTUR KONTROL
3.1
Tujuan
Latar Belakang
Pada bab ini kita akan mendiskusikan bagaimana membuat program yang menggunakan
struktur kontrol pemilihan dan pengulangan serta menggunakan pernyataan-pernyataan
percabangan.
3.3
Percobaan
3.3.1
Percobaan 1 (seleksi_if.java)
public class seleksi_if {
public static void main (String[] args) {
int jmlhmhs = 105;
int dayatampungkelas=100;
if (jmlhmhs>100) {
System.out.println (Kelas melebihi kapasitas);
}
}
Hasil :
Kelas melebihi kapasitas
Pembahasan :
Struktur kontrol pemilihan menggunakan if adalah pernyataan kondisi yang
digunakan untuk pengambilan keputusan terhadap dua buah kemungkinan.
Statemen if bisa berdiri sendiri atau dengan menggunakan else.
Bentuk pernyataan if :
if (kondisi) {
Percobaan 2 (seleksi_if_else.java)
public class seleksi_if_else {
public static void main (String[] args) {
int totalbelanja = 100000;
int jmlh_brg_dibeli = 2;
double diskon = 0.25;
double hrg_brg_stlh_diskon;
if (totalbelanja>50000 && jmlh_brg_dibeli>1)
{hrg_brg_stlh_diskon = totalbelanja-(totalbelanja*diskon);
System.out.println ("Harga barang setelah diskon :"+hrg_brg_stlh_diskon);
}
else { System.out.println( "Maaf anda belum dapat diskon"); }
}
}
Hasil :
Harga barang setelah diskon :75000.0
Pembahasan :
Pernyataan if-else mengatur pernyataan yang dijalankan sewaktu kondisi
bernilai true atau false.
Bentuk pernyataan :
if (kondisi) {
// blok pernyataan yang dijalankan, bila kondisi benar }
else {
//blok pernyataan yang dijalankan, bila kondisi salah}
3.3.3
Percobaan 3 (seleksi_if_bersarang.java)
public class seleksi_if_bersarang {
Hasil :
Nilai Huruf B
Pembahasan :
Pernyataan if-else if mengatur pernyataan yang dijalankan sewaktu kondisi
berupa pilihan
Bentuk pernyataannya :
if (kondisi x) {
// pernyataan yang dijalankan, apabila kondisi x benar }
else if (kondisi y) {
// pernyataan yang dijalankan, apabila kondisi y benar }
else if (kondisi z) {
// pernyataan yang dijalankan, apabila kondisi z benar }
else {
// pernyataan yang dijalankan untuk kondisi selain itu }
3.3.4
Percobaan 4 (seleksi_switch.java)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class seleksi_switch {
public static void main (String[] args){
BufferedReader
InputData
new
BufferedReader
(new
InputStreamReader
(System.in));
String angkaInput= null;
System.out.print ("Masukkan kode hari [1...7] : " );
try {
angkaInput = InputData.readLine();
}
catch (IOException e ){
System.out.println("Error");
}
int Hari=Integer.valueOf(angkaInput).intValue();
switch (Hari){
case 1:System.out.println("Minggu"); break;
case 2:System.out.println("Senin"); break;
case 3:System.out.println("Selasa"); break;
case 4:System.out.println("Rabu"); break;
case 5:System.out.println("Kamis"); break;
case 6:System.out.println("Jum'at"); break;
case 7:System.out.println("Sabtu"); break;
default :System.out.println("Kode hari yang anda masukkan salah"); }
}
}
Hasil :
Masukkan kode hari [1...7] : 4
Rabu
Pembahasan :
Pernyataan switch mengijinkan beberapa pilihan jalur eksekusi. Pernyataan
Switch bekerja pada tipe data byte, short, char dan int yang merupakan tipe data
primitif.
Tidak seperti pada pernyataan if, beberapa pernyataan pada struktur pernyataan
switch akan dieksekusi tanpa memerlukan tanda kurung kurawal ({})
Pada program diatas pernyataan switch akan menganalisa hasil inputan dari
keyboard yang ditampung dalam variabel angkaInput yang awalnya adalah
sebuah String. Pada pernyataan :
int Hari=Integer.valueOf(angkaInput).intValue();
variabel angkaInput yang tadinya berupa String dirubah kedalam Integer yang
ditampung dalam variabel Hari. Pernyataan switch nantinya akan menyeleksi isi
dari variabel Hari tersebut.
3.3.5
Percobaan 5 (loop_for.java)
public class loop_for {
public static void main (String[] args){
int i;
for(i=1;i<5;i++)
{
if(i%2==0)
{System.out.println(i+" adalah Genap");}
else
{System.out.println(i+" adalah Ganjil");}
}
}
}
Hasil :
1 adalah Ganjil
2 adalah Genap
3 adalah Ganjil
4 adalah Genap
Pembahasan :
For sering disebut dengan for loop, karena digunakan untuk proses looping atau
pengulangan.
Bentuk pernyataan :
for (inisialisasi;kondisi;step_ekspresi) {
pernyataan; }
dimana,
inisialisasi
kondisi
step_ekspresi
sedangkan i<5 merupakan kondisi dimana jika nilai variabel i mencapai batas
(i<5)
3.3.6
Percobaan 6 (loop_while.java)
public class loop_while {
public static void main(String[] args){
int x=10;
while (x>0) {
System.out.println("Nilai x :" +x);
x--;
}
}
Hasil :
Nilai x :10
Nilai x :9
Nilai x :8
Nilai x :7
Nilai x :6
Nilai x :5
Nilai x :4
Nilai x :3
Nilai x :2
Nilai x :1
Pembahasan :
Pernyataan while digunakan untuk melakukan proses pengulangan suatu blok
pernyataan selama kondisinya bernilai true. Ketika kondisi salah, pernyataan
dalam blok bisa saja tidak dijalankan sama sekali.
Bentuk pernyataan:
while (kondisi) {
pernyataan; }
3.3.7
Percobaan 7 (loop_do_while.java)
public class loop_do_while {
public static void main(String[] args){
int i=1;
do {
System.out.println("Nilai i :" +i);
i++;
}
while (i<10);
}
}
Hasil :
Nilai i :1
Nilai i :2
Nilai i :3
Nilai i :4
Nilai i :5
Nilai i :6
Nilai i :7
Nilai i :8
Nilai i :9
Pembahasan :
Do-while
3.3.8
Percobaan 8 (pernyataanBreak.java)
public class pernyataanBreak {
public static void main (String[] args){
for(int i=1;i<5;i++){
if(i%2==0) break;
System.out.println("Nilai i: " +i);
}
}
}
Hasil:
Nilai i: 1
Pembahasan :
3.3.9
Percobaan 9 (pernyataanContinue.java)
public class pernyataanContinue {
public static void main(String[] args){
int i=1;
while (i<11){
if(i==7);{
i++;
continue;
}
System.out.println("Nilai i "+ i);
i++;
Hasil :
Nilai i : 11
Pembahasan :
pernyataan continue
3.3.10
Percobaan 10 (pernyataanReturn.java)
public class pernyataanReturn {
void perkalian(int i,int j){
int hasilkali=i*j;
System.out.println("Hasil perkalian :" +hasilkali);
return;
}
Hasil :
Hasil perkalian :30
Pembahasan :
Pernyataan return digunakan untuk keluar dari sebuah method. Pernyataan return
memiliki dua bentuk : memberikan sebuah nilai, dan tidak memberikan sebuah
nilai.
Untuk memberikan nilai, cukup berikan nilai (atau ekspresi yang menghasilkan
sebuah nilai) sesudah kata return. Contohnya,
return ++count;
atau
return Hello;
Tipe data dari nilai yang diberikan harus sama dengan tipe dari method yang
dibuat. Ketika sebuah method void dideklarasikan, gunakan bentuk return yang
tidak memberikan nilai. Contohnya ,
return;
3.4
Latihan
a) Buatlah program dengan menggunakan pernyataan seleksi yang menentukan hari
kerja atau hari libur, dimana hari kerja yaitu hari senin sampai dengan jum'at.
Sedangkan hari libur adalah sabtu dan minggu.
b) Buatlah program dengan output sebagai berikut :
*
**
***
c) Buatlah program menggunakan seleksi dipadukan dengan input keyboard dimana
outputnya adalah sebagai berikut :
BAB 4
ARRAY
4.1
Tujuan
Mendeklarasikan dan membuat array
Mengakses elemen-elemen didalam array
Menentukan jumlah elemen didalam sebuah array
Mendeklarasikan dan membuat array multidimensi
4.2
Latar Belakang
Pada bab ini kita akan mendiskusikan mengenai array dalam Java. Pertama, kita akan
mendefinisikan apa yang dimaksud dengan array, k emudian
kita
juga
4.3
Percobaan
4.3.1
Percobaan1
public class array1 {
public static void main(String[] args){
int myArray[]={10,20,30,40,50};
System.out.println("Isi elemen MyArray pertama : " +myArray[0]);
System.out.println("Isi elemen MyArray kedua
: " +myArray[1]);
Hasil :
Isi elemen MyArray pertama : 10
Isi elemen MyArray kedua
: 20
akan
Pembahasan :
Sebuah array akan menyimpan beberapa item data yang memiliki tipe data sama
dalam didalam sebuah blok memori yang berdekatan yang kemudian dibagi
menjadi beberapa ruang. Array adalah sebuah variabel / sebuah lokasi tertentu
yang memiliki satu nama sebagai identifier, namun identifier ini dapat
menyimpan lebih dari sebuah nilai.
Langkah-langkah menciptakan array yaitu pertama, mendeklarasikan variabel
array, kedua menciptakan objek array.
Bentuk deklarasi variabel array :
tipedataprimitif[] namaVariabel;
namakelas[] namaVariabel;
Atau,
tipedataprimitif namaVariabel[];
namakelas namaVariabel[];
Contoh :
String[] kata;
int[] nomor;
Atau,
String kata[];
int nomor[];
Contoh :
nomor = new int[10];
kota = new String[5];
Atau kita dapat mempersingkat deklarasi variabel dan objek array sebagai berikut
:
String[] kota = new String[8];
int [] nomor = new int[7];
Selanjutnya, kita dapat mengakses elemen array dengan deklarasi sebagai berikut
:
namaVariabelArray[nomorelemen];
Contoh :
negara[0] = Indonesia;
Atau kita dapat secara langsung memberi nilai ketika objek array diciptakan.
Seperti pada percobaan1 diatas :
int myArray[]={10,20,30,40,50};
4.3.2
Percobaan2
public class array2 {
public static void main(String[] args){
int myArray[]={30,50,70,90,110};
for (int i=0;i<myArray.length;i++)
System.out.println("Elemen ke-"+i +":"+myArray[i] );
}
}
Hasil :
Elemen ke-0:30
Elemen ke-1:50
Elemen ke-2:70
Elemen ke-3:90
Elemen ke-4:110
Pembahasan:
Kita dapat memodifikasi kode program untuk dapat mengakses elemen array
dengan menggunakan loop, seperti pada contoh diatas kita mendefinisikan
maka tambahkan satu nilai i (i=i+1) sampai nilai i sama dengan panjang array
sehingga keluar dari loop.
4.3.3
Percobaan3
public class array3 {
public static void main(String[] args){
String myArray[][] = {{"Negara ","Ibukota "},{"Indonesia","Jakarta"}};
System.out.println(myArray[0][0]+myArray[1][0]);
System.out.println(myArray[0][1]+myArray[1][1]);
}
}
Hasil :
Negara Indonesia
Ibukota Jakarta
Pembahasan :
Array
multidimensi
adalah
array
dari
array,
dengan
pengaksesan
Latihan
a) Buatlah program dengan output sebagai berikut menggunakan array multidimensi :
Budi adalah anak dari Bapak Yanto
Joko adalah anak dari Bapak Yudi
Ibu Rina adalah Istri dari Bapak Yanto
Ibu Lina adalah Istri dari Bapak Yudi
BAB 5
KELAS DAN OBJEK
5.1
Tujuan
Membuat class sendiri
Mendeklarasikan atribut dan method pada class
Membuat dan memanggil overloading method
Mengimport dan membuat constructor
Menggunakan access modifier untuk mengendalikan akses terhadap class member
5.2
Latar Belakang
Pada bab ini kita akan mempelajari bagaimana menuliskan sebuah class sendiri.
5.3
Percobaan
5.3.1
Percobaan1 (Manusia.java)
public class Manusia {
public void identitas(String nama, String tempat_lahir, String tgl_lahir,int
berat_badan, int tinggi_badan){
System.out.println("Nama saya : " +nama);
System.out.println("Tempat lahir : " +tempat_lahir);
System.out.println("Tanggal lahir : " +tgl_lahir);
System.out.println("Berat Badan : " +berat_badan +" kg");
System.out.println("Tanggal lahir : " +tinggi_badan +" cm"); }
public static void main(String[] args){
Manusia Orang_Indonesia = new Manusia();
Orang_Indonesia.identitas("Budi", "Yogyakarta", "01-01-1991", 65, 175);
}}
Hasil :
Nama saya : Budi
Tempat lahir : Yogyakarta
Tanggal lahir : 01-01-1991
Berat Badan : 65 kg
Tanggal lahir : 175 cm
Pembahasan :
Untuk membuat sebuah objek atau sebuah instance pada sebuah class.
Kita menggunakan operator new. Sebagai contoh, jika anda ingin membuat
instance dari class String, kita menggunakan kode berikut :
String str2 = new String (Hello World);
5.3.2
Percobaan2 (Mobil.java)
public class Mobil {
String warna;
int jumlah_pintu;
float isi_tangki;
Hasil :
Mobil maju sejauh 75 meter
Mobil mundur sejauh 5 meter
Pembahasan :
Perhatikan syntax program diatas bahwa baik metode/fungsi Maju() serta
Mundur() kita deklarasikan sebagai public. Apa artinya ? Artinya :
BMW.Maju(75);
BMW.Mundur(5);
Syntax untuk pemanggilan metode/fungsi itu secara umum adalah :
Nama_Kelas/Nama_Objek.Nama_metode(parameter)
parameter yang kita berikan saat pemanggilan metode Maju() maupun
Mundur() adalah bilangan bulat (integer).
5.3.3
Percobaan3 (penduduk.java)
public class penduduk {
private String nama,ttl,alamat,nama_ortu,pekerjaan;
private int penghasilan;
public void setNama(String nama){
}
public void setTTL(String ttl){
}
public void setAlamat(String alamat){
}
public void setOrtu(String nama_ortu){
}
public void setPekerjaan(String pekerjaan){
}
public void setPenghasilan(int penghasilan){
}
public void printIdentitas(String nama,String ttl, String alamat,
String nama_ortu, String pekerjaan){
System.out.println("Nama Penduduk : " +nama);
System.out.println("Tempat/Tanggal Lahir : "+ttl);
System.out.println("Alamat Rumah : "+alamat);
System.out.println("Nama Orang Tua : " +nama_ortu);
System.out.println("Pekerjaan : " +pekerjaan);
}
public void printIdentitas(int penghasilan){
Januari
Hasil :
Nama Penduduk : Ruby
Tempat/Tanggal Lahir : Gorontalo/01 Januari 1990
Alamat Rumah : Jl.Cempaka No.5 Gorontalo
Nama Orang Tua : Wiryana
Pekerjaan : Wiraswasta
Penghasilan bersih perbulan Rp.5000000
Pembahasan :
Dalam class yang kita buat, kadangkala kita menginginkan untuk
membuat method dengan nama yang sama namun mempunyai fungsi yang
berbeda menurut parameter yang digunakan. Kemampuan ini dimungkinkan
dalam pemrograman java, dan dikenal sebagai overloading method.
Overloading method mengijinkan sebuah metode/fungsi dengan nama
yang sama namun memiliki parameter yang berbeda sehingga mempunyai
implementasi dan return value yang berbeda pula. Daripada memberikan nama
yang berbeda pada setiap pembuatan metode/fungsi, overloading method dapat
digunakan pada operasi yang sama namun berbeda dalam implementasinya.
5.3.4
Percobaan4 (konstruktor.java)
public class Aktor {
String nama;
int umur;
Aktor(String n,int u){
nama=n;
umur=u;
}
void tampilAktor(){
System.out.println("Namaku : "+nama);
System.out.println("Umurku : "+umur+" tahun");
}
Hasil :
Namaku : Dedy Mizwar
Umurku : 50 tahun
============
Namaku : Rano Karno
Umurku : 45 tahun
============
Pembahasan :
5.4
Latihan
5.4.1 Modifikasi program Mobil.java dengan menambahkan beberapa metode/fungsi
pada kelas Mobil dan buatlah dua objek lagi dari kelas Mobil yang memanggil
metode/fungsi baru yang sudah anda buat !
5.4.2 Buatlah program yang menerapkan konsep kelas dan objek dengan output
sebagai berikut :
Nama Mahasiswa
: Joni
NIM
: 5314110007
Semester
: V
IP Semester ini
: 3,50
5.4.3 Buatlah program yang menerapkan konsep overloading method dan constructor
pada sistem perpustakaan. Kembangkan sesuai kemampuan anda !
BAB 6
PEWARISAN, POLIMORFISME, INTERFACE
6.1
6.2
Tujuan
Latar Belakang
Pada bab ini kita akan membicarakan bagaimana suatu class dapat mewariskan sifat dari
class yang sudah ada. Kita juga akan membicarakan sifat khusus dari Java dimana kita
dapat secara otomatis memakai method yang tepat untuk setiap objek tanpa
memperhatikan asal dari subclass object. Pada akhirnya, kita akan mendiskusikan
tentang interface
6.3
Percobaan
6.3..1 Percobaan 1
public class Person {
protected String name;
protected String address;
/**
* Default constructor
*/
public Person(){
System.out.println("Inside Person:Constructor");
name = "";
address = "";
}
/**
Hasil :
Inside Person:Constructor
Inside Student:Constructor
Pembahasan :
Perhatikan bahwa atribut name dan address dideklarasikan sebagai protected.
Alasannya kita melakukan ini yaitu, kita inginkan atribut-atribut ini untuk bisa
diakses oleh subclasses dari superclassess. Jika kita mendeklarasikannya sebagai
private, subclasses tidak dapat menggunakannya. Catatan bahwa semua properti
dari superclass yang dideklarasikan sebagai public, protected dan default dapat
diakses oleh subclasses-nya.
Sekarang, kita ingin membuat class lain bernama Student. Karena Student juga
sebagai Person, kita putuskan hanya meng-extend class Person, sehingga kita
dapat mewariskan semua properti dan method dari setiap class Person yang ada.
Untuk melakukan ini, kita tulis,
public class Student extends Person
{
public Student(){
System.out.println(Inside Student:Constructor);
//beberapa kode di sini
}
// beberapa kode di sini
}
Ketika object Student di-instantiate, default constructor dari superclass secara
mutlak meminta untuk melakukan inisialisasi yang seharusnya. Setelah itu,
pernyataan di dalam subclass dieksekusi. Untuk mengilustrasikannya, perhatikan
kode berikut,
public static void main( String[] args ){
Student anna = new Student();
}
Dalam kode ini, kita membuat sebuah object dari class Student.
6.3..2 Percobaan 2
public class Person {
protected String name;
protected String address;
/**
* Default constructor
*/
public Person(){
System.out.println("Inside Person:Constructor");
name = "";
address = "";
}
/**
* Constructor dengan dua parameter
*/
public Person( String name, String address) {
this.name = name;
this.address = address;
}
/**
* Method accessor
*/
public String getName() {
System.out.println("Person Name : " +name);
return name;
}
public String getAddress() {
return address;
}
public void setName(String name) {
this.name = name;
}
public void setAddress(String add) {
this.address = add;
}
}
public class Student extends Person{
public Student()
{
//super( "SomeName", "SomeAddress");
//super();
//super.name = "name";
System.out.println("Inside Student:Constructor");
}
public String getName() {
System.out.println("Student Name : " +name);
return name;
}
public static void main( String[] args) {
Student anna = new Student();
}
}
public class Employee extends Person{
public String getName() {
System.out.println("Employee Name:" +name);
return name;
}
public static void main(String[] args)
{
Person ref;
Student studentObject = new Student();
Employee employeeObject = new Employee();
ref = studentObject; //Person menunjuk kepada object Student
String temp
dipanggil
ref.getName();
//getName
dari
Student
class
System.out.println(temp);
ref = employeeObject; //Person menunjuk kepada object Employee
temp = ref.getName(); //getName dari Employee class dipanggil
System.out.println(temp);
}
}
Hasil :
Inside Person:Constructor
Inside Student:Constructor
Inside Person:Constructor
Inside Student:Constructor
Inside Person:Constructor
Student Name :
Employee Name:
Pembahasan :
Dalam Java, kita dapat membuat referensi yang merupakan tipe dari superclass
ke sebuahobject dari subclass tersebut. Sebagai contohnya,
public static main( String[] args )
{
Person
ref;
Student
Employee
studentObject = new Student();
employeeObject = new Employee();
6.4
Latihan
6.4..1 Kembangkan class matematika dan matematikaBeraksi, lakukan overloading
pada method yang ada (pertambahan, pengurangan, perkalian, pembagian). Method
baru adalah bertipe data double (pecahan) dan memiliki 3 parameter
Uji di kelsa matematikaBeraksi dengan parameter pecahan : 12,5 28,7, 14,2
Misalnya : pertambahan(12,5, 28,7, 14,2)
BAB 7
EXCEPTION HANDLING
Tujuan
Menangani exception dengan menggunakan try, catch dan finally
Membedakan penggunaan antara throw dengan throws
Menggunakan exception class yang berbeda-beda
Membedakan antara checked exceptions dan unchecked exceptions
Membuat exceptions class sendiri
Latar Belakang
Pada bab ini akan dipelajari bagaimana penanganan akan kesalahan pada program yang
dikembangkan. Bahasa pemrograman Java dapat menangani kesalahan-kesalahan yang
secara potensial dapat dipulihkan melalui suatu objek yang bernama exception, yaitu
suatu objek khusus yang dapat secara virtual menangani semua kesalahan dalam
program yang ditulis menggunakan Java.
Percobaan
Percobaan1
public class TesException {
public static void main(String[] args){
int array1[]=new int[10];
try {
array1[1]=10;
System.out.println("Pernyataan yang benar");
array1[100]=20;
System.out.println("Pernyataan yang tidak benar");
}
catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Kesalahan dalam indeks array");
}
} }
Hasil :
Pernyataan yang benar
Kesalahan dalam indeks array
Pembahasan :
Pada contoh program diatas, larik
array1
Kemudian, pernyataan deklarasi larik diikuti oleh pernyataan try yang memuat
beberapa pernyataan yang akan dilakukan oleh bahasa Java saat tidak terjadi
masalah.
array1[1]=10;
Pernyataan
dan
array1[100]=20;
akan menghasilkan
exception karena ukuran array1 yang hanya 10 dipaksakan diisi oleh elemen
ke-100 sehingga
try
catch
sehingga
Percobaan2
public class TesFinally {
public static void main(String[] args){
int bilangan=100;
System.out.println("Sebelum pembagian");
for(int i=5;i>=0;i--){
try {
System.out.print(bilangan +" / " +i +" = ");
System.out.println(bilangan/i);
}
catch(RuntimeException r){
Hasil :
Sebelum pembagian
100 / 5 = 20
Bagian finally dikerjakan
100 / 4 = 25
Bagian finally dikerjakan
100 / 3 = 33
Bagian finally dikerjakan
100 / 2 = 50
Bagian finally dikerjakan
100 / 1 = 100
Bagian finally dikerjakan
100 / 0 = Error karena pembagian nol !
Bagian finally dikerjakan
Selesai
Pembahasan :
Pada program diatas terdapat perulangan dimana bilangan yang nilainya adalah
100 akan dibagi dengan nilai i dan pengurangannya satu persatu sehingga dapat
dilihat bahwa blok pernyataan dibawah try yaitu System.out.print(bilangan
System.out.println(bilangan/i);
catch(RuntimeException
r).
RuntimeException
Percobaan3
public class TesThrow {
public static void main(String[] args){
int[] lariksaya = new int[10];
try{
lariksaya[100] = 1;
}
catch (ArrayIndexOutOfBoundsException e)
{
e = new ArrayIndexOutOfBoundsException("Masukkan elemen yang
diperkenankan!");
throw(e);
}
} }
Hasil :
Exception
in
thread
"main"
java.lang.ArrayIndexOutOfBoundsException:
Masukkan
elemen
yang
diperkenankan! at pertemuan7.TesThrow.main(TesThrow.java:20)
Java Result: 1
Pembahasan :
Kata kunci throw memulai konstruksi throw, diikuti dengan daftar parameter
dimana parameter ini merupakan objek eksepsi dan objek dideklarasikan sebagai
jenis eksepsi (exception) yang dikehendaki. Dalam Java (yaitu dalam
java.lang.Exception) atau exception-exception (exception) yang kita tentukan
sendiri.
Saat exception dilemparkan menggunakan pernyataan throw, kode yang sedang
berjalan akan dihentikan. Eksepsi (exception) akan dilewatkan ke rutin
pemanggil dan tidak ada kode yang dijalankan hingga eksepsi ditangani di suatu
tempat di bagian lain program.
Pada contoh diatas pada pernyataan lariksaya[100] = 1; akan menghasilkan
exception
yang
akan
ditangkap
(ArrayIndexOutOfBoundsException
oleh
e) sehingga, pernyataan e
ArrayIndexOutOfBoundsException("Masukkan
catch
pernyataan
elemen
new
yang
Percobaan4
public class ThrowingClass {
static void myMethod() throws ClassNotFoundException {
throw new ClassNotFoundException ("just a demo");
} }
ThrowingClass.myMethod();
} catch (ClassNotFoundException e) {
System.out.println(e);
} } }
Hasil :
java.lang.ClassNotFoundException: just a demo
Pembahasan :
Jika sebuah method dapat menyebabkan sebuah exception namun tidak
menangkapnya, maka digunakan keyword throws. Aturan ini hanya berlaku pada
checked exception. Berikut ini penulisan syntax menggunakan keyword throws :
<type> <methodName> (<parameterList>) throws <exceptionList> {
<methodBody>
}
Sebuah method perlu untuk menangkap ataupun mendaftar seluruh exceptions
yang mungkin terjadi, namun hal itu dapat menghilangkan tipe Error,
RuntimeException, ataupun subclass-nya.
Contoh diatas menunjukkan bahwa method myMethod tidak menangani
ClassNotFoundException
Checked
exceptions
adalah
exception
yang
Percobaan5
public class HateStringException extends RuntimeException {
}
Latihan
Tentukan sebuah huruf bilangan heksadesimal (a-f) sebagai input. Konversi huruf
tersebut menjadi bilangan desimal. Tentukan exception class anda sendiri dan lakukan
mahasiswa informatika atau bukan berdasarkan input kode jurusan. Misalkan kode
jurusan : 01-Teknik Informatika, 02-Teknik Sipil, 03-Teknik Elektro, 04-Teknik Industri,
05-Teknik Arsitektur, 06-Teknik Kriya. Jika yang dimasukkan bukan kode (misalkan
huruf) maka akan ditangani kesalahan tersebut menggunakan try..catch
BAB 8
ABSTRACT WINDOWING TOOLKIT (AWT) DAN SWING
8.1
Tujuan
Memahami persamaan dan perbedaan antara AWT dan Swing
Mengetahui perbedaan antara komponen dan kontainer
Mendesain aplikasi GUI menggunakan AWT
Mendesain aplikasi GUI menggunakan Swing
Menjelaskan tentang flow layout, border layout, dan grid layout dalam
komponen GUI
8.2
Latar Belakang
Tanpa mempelajari tentang Grapichal User Interface (GUI) API. Anda masih
tetap bisa membuat suatu program. Tetapi, program anda akan kelihatan tidak
menarik dan tidak nyaman digunakan bagi para user. Memiliki GUI yang baik
dapat memberi efek pada penggunaan aplikasi. Java menyediakan banyak tool
seperti Abstract Windowing Toolkit (AWT) dan Swing untuk mengembangkan
aplikasi GUI yang interaktif.
8.3
Percobaan1 (TesLabel.java)
import java.awt.*;
public class TesLabel extends java.applet.Applet{
@Override
public void init(){
setFont(new Font ("Arial", Font.BOLD, 14));
setLayout(new GridLayout(3, 1));
add(new Label("rata kiri", Label.LEFT));
add(new Label("rata tengah", Label.CENTER));
add(new Label("rata kiri", Label.LEFT));
}
}
Hasil :
Pembahasan :
Bentuk paling sederhana dari komponen UI adalah label, yakni string teks yang
dapat kita pakai untuk memberi label pada komponen UI lainnya. Label tidak
bisa diedit.
Keunggulan label atas string teks lainnya adalah :
Kita tidak perlu menggambar ulang label sebagaimana string teks. Label
adalah elemen awt sehingga penggambarannya adalah tanggung jawab
awt.
Label mengikuti tata letak panel dimana ia berada dan dapat ditata
bersama dengan komponen UI lainnya.
Label adalah string teks yang tidak dapat diedit yang bekerja sebagai
pendeskripsi komponen awt lain. Untuk membuat label gunakan konstruktor
berikut ini :
Label(String) membuat label dengan string teks tertentu, juga tertata rata
kiri
8.4
Percobaan2 (TesTombol.java)
import java.awt.*;
public class TesTombol extends java.applet.Applet {
@Override
public void init(){
add(new Button("Rewind"));
add(new Button("Play"));
add(new Button("Fast Forward"));
add(new Button("Stop"));
}
}
Hasil :
Pembahasan :
Button adalah komponen antarmuka UI yang memicu beberapa aksi dalam
antarmuka saat di-klik. Untuk membuat button atau tombol ini dapat digunakan
konstruktor-konstruktor berikut ini :
Setelah memiliki objek Button, kita dapat mengambil nilai labelnya dengan
metode getLabel() dan mengatur labelnya dengan menggunakan metode
setLabel(String)
8.5
Percobaan3 (TesCheckbox.java)
import java.awt.*;
public class Teschechkbox extends java.applet.Applet{
@Override
public void init(){
setLayout(new FlowLayout(FlowLayout.LEFT));
add(new Checkbox("Es Teh"));
add(new Checkbox("Es Jeruk"));
add(new Checkbox("Es Sirup"));
add(new Checkbox("Es Kelapa Muda",null,true));
add(new Checkbox("Es Campur"));
}
}
Hasil :
Pembahasan :
Checkbox adalah komponen UI yang memiliki dua kondisi : on dan off (atau
dipilih dan tidak dipilih, ditandai dan tidak ditandai, benar atau salah, dan
sebagainya). Tidak seperti button, checkbox biasanya tidak memicu aksi
langsung dalam UI, tetapi digunakan untuk menunjukkan fitur tambahan atau
aksi lain.
Checkbox dapat digunakan dalam dua cara :
Kita dapat membuat check box dengan menggunakan salah satu konstruktor
berikut ini :
8.6
Percobaan4 (CheckboxGroupTest.java)
import java.awt.*;
public class CheckboxGroupTest extends java.applet.Applet{
@Override
public void init(){
setLayout(new FlowLayout(FlowLayout.LEFT));
CheckboxGroup cbg = new CheckboxGroup();
add(new Checkbox("Red", cbg, false));
add(new Checkbox("Blue", cbg, false));
add(new Checkbox("Yellow", cbg, false));
Pembahasan :
Radio button memiliki penampilan yang sama dengan check box, tetapi hanya
satu dari sekelompok yang dapat dipilih atau ditandai. Untuk membuat
sekelompok
radio
button,
mula-mula
harus
dibuat
instance
dari
CheckboxGroup.
CheckboxGroup cbg = new CheckboxGroup();
Kemudian kita buat dan kita tambahkan satu persatu check box menggunakan
konstruktor dengan 3 (tiga) argumen (yakni label, grup, dan kondisi checkbox).
Harap diingat bahwa karena radio button, perdefinisi hanya memiliki satu
checkbox yang terpilih pada satu saat, maka kondisi true terakhirlah yang akan
dipilih secara default.
add(new Checkbox(Tes, cbg, true);
add(new Checkbox(Tes, cbg, true);
8.7
Percobaan5 (TesChoice.java)
import java.awt.*;
public class TesChoice extends java.applet.Applet {
@Override
public void init(){
Choice c = new Choice();
c.addItem("Novel");
c.addItem("Komik");
c.addItem("Kumpulan Puisi");
c.addItem("Majalah");
c.addItem("Koran");
Component add = add(c);
}
}
Hasil :
Pembahasan :
Menu pilihan (choice menu) adalah komponen UI yang lebih konpleks dari pada
label, button ataupun checkbox. Menu pilihan adalah menu pop-up (atau pulldown) dimana dapat memilih satu dari beberapa item yang tersedia. Kemudian
menu akan menampilkan pilihan tersebut pada layar. Fungsi menu pilihan ada
dasarnya sama untuk semua platform, tetapi tampilannya berbeda-beda
tergantung platform dimana menu tersebut dijalankan.
Untuk membuat menu pilihan kita harus membuat instance dari kelas Choice dan
kemudian menggunakan metode addItem() untuk menambahkan satu-persatu
item dalam urutan tertentu.
8.8
Percobaan6 (TesTextField.java)
import java.awt.*;
public class TesTextField extends java.applet.Applet {
@Override
public void init() {
add(new Label("Ketikkan nama Anda"));
add(new TextField("Nama anda disini",45));
add(new Label("Ketikkan nomor telepon anda"));
add(new TextField(25));
add(new Label("Ketikkan password yang anda inginkan"));
TextField t = new TextField(20);
t.setEchoChar('*');
add(t);
}
}
Hasil :
Pembahasan :
Text field adalah komponen UI yang memungkinkan kita memasukkan dan
mengedit teks. Biasanya text field hanya memiliki satu baris tampilan dan tidak
mempunyai penggulung (scrollbar). Berbeda dengan label, text field dapat diedit,
sehingga cocok untuk mengambil masukan teks dari pengguna, sedangkan label
hanya cocok untuk menampilkan teks.
Untuk membuat text field, gunakan konstruktor berikut ini :
Sebagai contoh, baris berikut ini membuat text field selebar 30 karakter dengan
string Zinedine Zidane sebagai isi awalnya.
TextField tf = new TextField(Zinedine Zidane,30);
add(tf);
Kita juga dapat membuat text field yang menutupi karakter yang sebenarnya
diketik seperti misalnya pada password. Untuk membuatnya, mula-mula kita
harus membuat text field itu sendiri, kemudian menggunakan metode
setEchoCharacter() untuk mengatur karakter yang ditampilkan pada layer.
Berikut ini adalah contohnya :
TextField tf = new TextField(30);
tf.setEchoCharacter('*');
8.9
Percobaan7 (TesFlowLayout.java)
import java.awt.*;
public class TesFlowLayout extends java.applet.Applet{
@Override
public void init(){
setLayout(new FlowLayout());
add(new Button("Tombol x"));
add(new Button("Tombol y"));
add(new Button("Tombol z"));
add(new Button("Tombol 1"));
add(new Button("Tombol 2"));
add(new Button("Tombol 3"));
}
}
Hasil :
Pembahasan :
Kelas FlowLayout adalah layout yang paling dasar. Pada flow layout ini
komponen ditambahkan ke panel satu persatu, baris demi baris. Jika komponen
tidak pas masuk satu baris, ia akan diteruskan ke baris lainnya. Flow layout juga
memiliki tatanan perataan (alignment) yang menentukan penataan tiap baris.
menambahkan
variabel
kelas
FlowLayout.RIGHT
atau
8.10
Percobaan8 (tesGridLayout.java)
import java.awt.*;
public class TesGridLayout extends java.applet.Applet{
@Override
public void init(){
setLayout(new GridLayout(3,2));
add(new Button("Tombol x"));
add(new Button("Tombol y"));
add(new Button("Tombol z"));
add(new Button("Tombol 1"));
add(new Button("Tombol 2"));
add(new Button("Tombol 3"));
}
}
Hasil :
Pembahasan :
Grid Layout memberikan pengontrolan yang lebih baik dalam penempatan
komponen di dalam panel. Dengan menggunakan grid layout kita membagi area
tampilan panel ke dalam baris dan kolom. Setiap komponen yang ditambahkan
pada panel akan ditempatkan dalam sel, dari baris paling atas menuju baris-baris
berikutnya melalui kolom dari kiri ke kanan.
Pembuatan layout pola jala (grid layout) ini dilakukan dengan menentukan
jumlah baris dan kolom jala ketika kita membuat instance baru dari kelas
GridLayout.
Layout pola jala juga dapat diberi gap horisontal dan vertikal antarkomponen.
Untuk membuat gap antarkomponen kita harus menambahkan baris perintah
berikut ini :
setLayout(new GridLayout(3, 3, 10, 30);
8.11
Percobaan9 (TesBorderLayout.java)
import java.awt.*;
public class TesBorderLayout extends java.applet.Applet{
@Override
public void init(){
setLayout(new BorderLayout());
Pembahasan :
Pada border layout, penempatan komponen ditunjukkan dengan geografis , yakni
utara, selatan, barat, timur, dan tengah. Sama seperti pada layout lainnya, untuk
menggunakan
border
layout
kita
harus
mendefinisikannya,
kemudian
yang
memiliki dua argumen. Argumen pertama adalah string yang menunjukkan posisi
dari komponen dalam layout, dan kedua adalah komponen yang ditambahkan,
misalnya :
add(North, new TextField(Title, 50);
Kita juga dapat menggunakan bentuk add() tersebut untuk pengelola layout
lainnya, argumen string akan diabaikan jika tidak diperlukan.
Komponen-komponen dalam border layout bisa dibuat berjarak dari komponen
lain. Untuk memberi gap antar komponen, nilai pikselnya disertakan dalam
8.12
Percobaan10 (TesButtonSwing.java)
import javax.swing.*;
public class TesButtonSwing extends JFrame{
JButton load = new JButton("load");
JButton save = new JButton("Save");
public TesButtonSwing(){
super("Button Beraksi");
setSize(140,170);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel pane = new JPanel();
pane.add(load);
pane.add(save);
add(pane);
setVisible(true);
}
public static void main(String[] args){
TesButtonSwing t = new TesButtonSwing();
}
}
Hasil :
Pembahasan :
Seperti pada package AWT, package dari Swing menyediakan banyak class untuk
membuat aplikasi GUI. Package tersebut dapat ditemukan di javax.swing.
Perbedaan utama antara keduanya adalah komponen Swing ditulis menyeluruh
menggunakan Java. Kesimpulannya, program GUI ditulis menggunakan banyak
class dari Package Swing yang mempunyai tampilan look and feel yang sama
meski dijalankan pada platform yang berbeda. Lebih dari itu, Swing
menyediakan komponen yang lebih menarik seperti color chooser dan option
pane.
Nama dari komponen GUI milik Swing hampir sama persis dengan komponen
GUI milik AWT. Perbedaan jelas terdapat pada penamaan komponen. Pada
dasarnya, nama komponen Swing sama dengan nama komponen AWT tetapi
dengan tambahan huruf J pada prefixnya. Sebagai contoh, satu komponen dalam
AWT adalah button class. Sedangkan pada Swing, nama komponen tersebut
menjadi JButton Class.
Pada kode berikut ini :
JButton load = new JButton("load");
JButton save = new Jbutton("Save");
Ini membuat objek load dan save dengan menggunakan kelas JButton pada
Swing.
8.13
Percobaan11 (FrameSwing.java)
import java.awt.*;
import javax.swing.*;
void launchframe(){
//inisialisasi
frame = new JFrame("Frameku");
panel = new JPanel();
textfield = new JTextField("Teks");
button=new JButton("Klik saya");
contentpane = frame.getContentPane();
//menambahkan komponen-komponen ke panel menggunakan
//Flowlayout sebagai default
panel.add(textfield);
panel.add(button);
//menambahkan komponen-komponen contentpane
//menggunakan BorderLayout
contentpane.add(panel, BorderLayout.CENTER);
frame.pack();
//menyebabkan ukuran frame menjadi dasar pengaturan komponen
frame.setVisible(true);
}
Hasil :
Pembahasan :
Top-level containers seperti Jframe dan Japplet dalam Swing sangat tidak cocok
dengan AWT. Ini adalah syarat menambahkan komponen ke dalam kontainer.
Jika anda ingin menambahkan langsung sebuah komponen kedalam kontainer
sebagai kontainer AWT, pertama-tama anda telah mendapatkan content pane dari
kontainer. Untuk melakukan hal tersebut, anda akan menggunakan method
getContentPane dari container.
Perlu diperhatikan pada package java.awt masih saja diimpor karena layout
manager yang digunakan terdapat pada package tersebut. Juga, memberi judul
pada frame dan mengepack komponen di dalam frame dapat juga dilakukan
untuk frame AWT.
8.14
Percobaan12 (BorderLayoutSwing.java)
import java.awt.*;
import javax.swing.*;
public BorderLayoutSwing(){
super("Border Layout Beraksi");
setSize(240,280);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
add(Tombol1, BorderLayout.NORTH);
add(Tombol2, BorderLayout.SOUTH);
add(Tombol3, BorderLayout.EAST);
add(Tombol4, BorderLayout.WEST);
add(Tombol5, BorderLayout.CENTER);
}
Hasil :
Pembasahan :
Program diatas sebenarnya hampir sama dengan membuat BorderLayout pada
AWT, karena untuk mengatur layout tombol baik untuk posisi NORTH, SOUTH,
EAST, WEST, dan CENTER. Hanya saja untuk membuat frame disini kita
menggunakan kelas JFrame yang ada pada Swing.
8.15
Latihan
a) Buatlah 5 buah tombol dan textfield dengan menggunakan Flow, Grid dan
Border Layout baik menggunakan Java AWT maupun Swing !
BAB 9
GUI EVENT HANDLING
9.1
Tujuan
Menerangkan komponen-komponen delegation event model
Mengerti bagaimana delegation event model bekerja
Menciptakan aplikasi GUI yang berinteraksi dengan user
9.2
Latar Belakang
Pada bagian ini anda akan diperkenalkan dengan beberapa perintah kejadian yang sering
dipakai dalam membuat program aplikasi. Ini sangat penting anda kuasai, supaya
kualitas pemrograman anda bisa tambah sempurna.
9.3
Percobaan1
(a)
Buat project baru dengan memilih perintah File > New Project.. (Ctrl+Shift+N)
(b)
Muncul jendela New Project, pilih Java di kotak Categories dan pilih Java
Klik Next >, muncul jendela New Java Project dan ketik Modul9a di kotak
Project Name, jangan pilih opsi Create Main Class kita akan menset main classnya
setelah desain dan programnya selesai.
(d)
Klik Finish
(e)
Buat form baru, klik kanan pada Project Modul9a > New > Jframe Form beri
Jbutton pada Jpanel tersebut di tab Design dengan properties sebagai berikut :
No
Nama Kelas
Properties
JLabel
Name = jLabel1
Text = Nama Mahasiswa
JLabel
Name = jLabel2
Text = Nilai Ujian
JLabel
Name = jLabel3
Text = Keterangan
JTextField
Name = jTextField2
Text = null / dikosongkan
Event
JTextField
Name = jTextField2
Text = null / dikosongkan
JTextField
Name = jTextField3
Text = null / dikosongkan
JButton
Name = jButton1
Text = Mulai
ActionPerformed
JButton
Name = jButton2
Text = Keluar
ActionPerformed
Jpanel
Name = jPanel1
TitleBorder = Program Event
Handling 1
(g)
FocusLost
Klik kanan pada jButton2 pilih menu Events > Action > ActionPerformed,
maka
akan
muncul
pada
tab
Source,
sebuah
method
Private
void
Kembali ke tab Design, klik kanan pada jButton1 pilih menu Events > Action >
ActionPerformed, maka akan muncul pada tab Source, sebuah method Private void
jButton1ActionPerformed(java.awt.event.ActionEvent evt), pada badan method
tersebut tambahkan baris perintah berikut ini :
jTextField1.setText();
jTextField1.setText();
jTextField1.setText();
(i)
Kembali ke tab Design, klik kanan pada jTextField2 pilih menu Events >
Action > ActionPerformed, maka akan muncul pada tab Source method Private void
JtextField2FocusLost (java.awt.event.FocusEvent evt), pada badan method tersebut
tambahkan baris perintah berikut ini :
float nilai;
nilai = Float.parseFloat(jTextField2.getText());
if(nilai>=55) {
jTextField3.setText(Lulus);
}
else {
jTexField3.setText(Tidak lulus); }
(j)
Set Main Class Project Modul9a, klik kanan pada Project Modul9a >
Properties. Pilih Categories > Run, browse Main Class pilih Event1. Lalu jalankan
program anda.
Hasil :
Pembahasan :
Salah satu interface Event Listener pada AWT yaitu Action Listener yang berfungsi
ketika user melakukan klik pada Button, menekan tombol Enter / Tab saat
memasukkan input dalam text field atau memilih menu item. Satu metode pada Action
Listener
yaitu
ActionPerformed,
dimana
jButton2ActionPerformed(java.awt.event.ActionEvent
method
evt)
Private
berisi
void
perintah
System.exit(0); dimana program akan berhenti jika tombol Keluar ditekan. Untuk
method Private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
berisi perintah jTextField1.setText(); dimana akan menset semua text field
dengan string kosong lagi jika tombol Mulai ditekan.
Untuk method Private void JtextField2FocusLost (java.awt.event.FocusEvent evt)
merupakan salah satu method yang terdapat pada interface FocusListener yang
berfungsi ketika komponen memperoleh keyboard focus. Pada badan method tersebut
jika sebuah nilai yang dimasukkan pada JtextField2 bernilai lebih atau sama dengan 55
maka akan menset sebuat text pada JtextField3 yaitu sebuah String Lulus selain itu
akan diset ke Tidak Lulus.
9.4
Percobaan2
(a) Buat project baru dengan memilih perintah File > New Project.. (Ctrl+Shift+N)
(b) Muncul jendela New Project, pilih Java di kotak Categories dan pilih Java
Application di kotak Projects
(c) Klik Next >, muncul jendela New Java Project dan ketik Modul9b di kotak
Project Name.
(d) Klik Finish
(e) Buat form baru, klik kanan pada Project Modul9b > New > Jframe Form beri
nama pada Class Name yaitu Event2
(f) Tambahkan 2 jLabel, 1 jTextField, 1 jPasswordField, dan 1 jButton ke dalam form
tersebut dengan properties sebagai berikut :
No
Nama Kelas
Properties
Event
JLabel
Name = jLabel1
Text = ID User
JLabel
Name = jLabel2
Text = Password
JTextField1
Name = jTextField1
KeyPressed
JButton
ActionPerformed
KeyPressed
Name = jButton1
Text = OK
(g) Tambahkan event klik pada tombol OK (jButton1), klik kanan pada tombol OK >
Events > Action > actionPerformed. Maka akan muncul sebuah method private
void jButton1ActionPerformed pada tab Source. Tambahkan baris perintah berikut
pada badan method tersebut :
JOptionPane.showMessageDialog(this,
jTextField1.getText(),
Selamat
Pesan
Datang
Login,
JOptionPane.INFORMATION_MESSAGE);
(h) Tambahkan event yang kedua untuk jTextField1. Klik kanan pada jTextField1 >
Events > Key > KeyPressed. Maka akan muncul sebuah method private void
jTextField1KeyPressed pada tab Source. Tambahkan baris perintah berikut pada
badan method tersebut :
if (evt.getKeyCode() == 10) {
jPasswordField1.requestFocus(); }
(i) Tambahkan event yang ketiga untuk jPasswordField1. Klik kanan pada
jPasswordField1 > Events > Key > KeyPressed. Maka akan muncul sebuah
method private void jPasswordField1KeyPressed pada tab Source. Tambahkan
baris perintah berikut pada badan method tersebut :
if (evt.getKeyCode() == 10) {
jButton1.requestFocus(); }
(j) Lakukan perubahan pada kelas Main,java, agar melakukan pemanggilan form
Event2 yaitu dengan baris perintah sebagai berikut :
new Event2().setVisible(true);
(k) Jalankan program anda.
Hasil :
Pembahasan :
Event pada jButton1 (tombol OK) yaitu ActionPerformed digunakan ketika user
menekan tombol jButton1 (tombol OK). Kelas JoptionPane memiliki method
showMessageDialog. Method ini bisa menampilkan berbagai jenis pesan / jendela
dialog. Dalam hal ini dialognya adalah INFORMATION_MESSAGE, yaitu jenis
jendela pesan informasi saja yang dilengkapi dengan satu tombol OK. Parameter
pertama adalah isi pesan yang ditampilkan, sedangkan parameter kedua adalah nama
jendela pesan ini, parameter ketiga adalah jenis dialog / jendela.
Event kedua dan ketiga untuk jTextField1 dan jPasswoField1 yaitu KeyPressed, hal
ini untuk memberikan respon ketika user memasukkan ID user dan menekan tombol
Enter, maka kursor secara otomatis akan berpindah ke isian berikutnya (password).
Hal ini dapat dilakukan dengan memanfaatkan kemampuan event, dengan kategori
Key untuk interface KeyListener pada method keyPressed().
Perintah getKeyCode() adalah untuk mendapatkan nilai angka unik untuk setiap
tombol pada keyboard. Dalam hal ini java mengenali enter sebagai angka 10.
selanjutnya
requestFocus()
untuk
memerintahkan
kursor
berpindah
ke
9.5
Percobaan3
(a) Buat project baru dengan memilih perintah File > New Project.. (Ctrl+Shift+N)
(b) Muncul jendela New Project, pilih Java di kotak Categories dan pilih Java
Application di kotak Projects
(c) Klik Next >, muncul jendela New Java Project dan ketik Modul9c di kotak Project
Name.
(d) Klik Finish
(e) Buat form baru, klik kanan pada Project Modul9c > New > Jframe Form beri
nama pada Class Name yaitu Event3
(f) Tambahkan 3 jLabel, 2 jTextField dan 1 jCombobox ke dalam form tersebut dengan
properties sebagai berikut :
No
Nama Kelas
Properties
JLabel
Name = jLabel1
Text = Nama Kota
horizontalAlignment = LEFT
JLabel
Name = jLabel2
Text = Besar UMR
horizontalAlignment = LEFT
JLabel
Name = jLabel3
Text = Makanan Khas
horizontalAlignment = LEFT
JcomboBox
Name = jComboBox1
Model = Yogyakarta, Surabaya, Jakarta
selectedIndex = 1
JTextField
Name = txtUMR
JTextField
Name = txtMakanan
(g) Untuk merubah nama variabel pada jTextField1, klik kanan pada jTextField1 >
Change Variable Name.. isikan dengan txtUMR. Lakukan hal yang sama pada
jTextField2 dengan nama variabel txtMakanan.
(h) Tambahkan
sebuah
event
ItemStateChanged
pada
pilihan
nama
kota
(jComboBox1), dengan cara klik kanan jComboBox1 > Events > Item >
ItemStateChanged.
(i) Perbaiki metode jComboBox1ItemStateChanged pada tab Source yaitu sebagai
berikut :
if(jComboBox1.getSelectedIndex() == 0){
txtUMR.setText("500.000");
txtMakanan.setText("Gudeg");
}
else if (jComboBox1.getSelectedIndex() == 1){
txtUMR.setText("900.000");
txtMakanan.setText("Rawon");
}
else if (jComboBox1.getSelectedIndex() == 2){
txtUMR.setText("1.000.000");
txtMakanan.setText("Ketoprak");
}
(j) Lakukan perubahan pada kelas Main.java, agar melakukan pemanggilan form
Event3, yaitu dengan menambahkan baris berikut ini :
new Event3().setVisible(true);
Hasil :
Pembahasan :
Pada form ini akan menampilkan informasi mengenai kota-kota tertentu. Dengan
memilih nama kotanya, akan ditampilkan informasi mengenai besarnya UMR (ipah
minimum regional) dan informasi mengenai jenis makanan khasnya. Hal ini
mendemonstrasikan event ItemStateChanged, yakni kejadian ketika user memilih
pilihan pada ComboBox kota.
Pada
method
jCombobox1ItemStateChanged
pada
baris
perintah
9.6
Percobaan4
(a)
Buat project baru dengan memilih perintah File > New Project.. (Ctrl+Shift+N)
(b)
Muncul jendela New Project, pilih Java di kotak Categories dan pilih Java
Klik Next >, muncul jendela New Java Project dan ketik Modul9d di kotak
Project Name, jangan pilih opsi Create Main Class kita akan menset main classnya
Klik Finish
(e)
Buat form baru, klik kanan pada Project Modul9d > New > Jframe Form beri
nama pada Class Name yaitu Event4. Tambahkan JToolBar pada Form dengan posisi
layout Last. Tambahkan jLabel pada pada toolbar tadi, dengan cara klik kanan pada
jToolbar > Add From Palete > Swing Controls > Label
(f)
jTextButton pada Jpanel tersebut di tab Design dengan properties sebagai berikut :
No
(g)
Nama Kelas
Properties
JLabel
Name = jLabel1
JLabel
Name = jLabel2
Text = No MHS
JLabel
Name = jLabel3
Text = Nama
JLabel
Name = jLabel4
Text = Alamat
JTextField
Name = txtNoMhs
JTextField
Name = txtNama
JTextField
Name = txtAlamat
JButton
Name = jButton1
Text = Simpan
JPanel
Name = jPanel1
Layout Direction = Center
10
JToolBar
Name = jToolBar1
Layout Direction = Last
Masukkan event focusGained yang pertama, dengan cara klik kanan txtNoMhs
> Events > Focus > focusGained. Tambahkan baris perintah berikut ini pada badan
method private void txtNoMhsFocusGained (java.awt.event.FocusEvent evt) :
jLabel1.setText(Masukkan nomor mahasiswa);
(h)
Masukkan event focusGained yang kedua, dengan cara klik kanan txtNama >
Events > Focus > focusGained. Tambahkan baris perintah berikut ini pada badan
method private void txtNamaFocusGained (java.awt.event.FocusEvent evt) :
jLabel1.setText(Masukkan nama lengkap mahasiswa);
(i)
Masukkan event focusGained yang pertama, dengan cara klik kanan txtAlamat
> Events > Focus > focusGained. Tambahkan baris perintah berikut ini pada badan
method private void txtAlamatFocusGained (java.awt.event.FocusEvent evt) :
jLabel1.setText(Masukkan alamat domisili mahasiswa);
(j)
Set Main Class Project Modul9d, klik kanan pada Project Modul9a >
Properties. Pilih Categories > Run, browse Main Class pilih Event4. Lalu jalankan
program anda.
Hasil :
Pembahasan :
Form ini akan menunkukkan manfaat dari event focusGained (salah satu dari event
focus). FocusGained akan dibangkitkan ketika sebuah objek menerima focus (kursor
aktif), dalam form EventFocus tersebut, ketika kursor masuk dalam kotak isian No
MHS, maka status bar akan menampilkan pesan terkait dengan isian No.MHS tersebut
(Masukkan nomor Mahasiswa). Begitu juga jika kursor aktif pada isian nama dan
alamat, maka status bar akan menampilkan informasi / pesan terkait dengan isian
tersebut.
9.7
Percobaan5
(a) Buat project baru dengan memilih perintah File > New Project.. (Ctrl+Shift+N)
Muncul jendela New Project, pilih Java di kotak Categories dan pilih Java
(g) Tambahkan dua lagi jLabel dengan properti icon, arahkan ke file gambar alat
tulis1.JPG dan rumah1.JPG
(h) Tambahkan satu lagi jLabel untuk menampilkan sebuah gambar yang lebih besar,
letakkan disebelah kanan jLabel sebelumnya, dan masukan gambar rumah2.JPG
dalam properti icon.
(i) Masukkan event mouse motion yang pertama, dengan cara klik kanan jLabel1 >
Events > MouseMotion > mouseMoved. Selanjutnya tambahkan perintah dalam
Hasil :
Pembahasan :
Pada baris perintah :
private void jLabel1MouseMoved (java.awt.event.MouseEvent evt) {
String imgSouce = ./img/komputer2.PNG;
jLabel4.setIcon(new ImageIcon(imgSource));
}
Event
MouseMoved
digunakan
apabila
mouse
menuju
pada
gambar
komputer1.GIF maka gambar pada jLabel4 akan memunculkan gambar dari file
komputer2.PNG dengan perintah :
String imgSouce = ./img/komputer2.PNG;
jLabel4.setIcon(new ImageIcon(imgSource));
9.8
Percobaan6
(a) Buat project baru dengan memilih perintah File > New Project.. (Ctrl+Shift+N)
Muncul jendela New Project, pilih Java di kotak Categories dan pilih Java
Application di kotak Projects
(b) Klik Next >, muncul jendela New Java Project dan ketik Modul9f di kotak Project
Name, jangan pilih opsi Create Main Class kita akan menset main classnya setelah
desain dan programnya selesai.
(c) Klik Finish
(d) Buat form baru, klik kanan pada Project Modul9e > New > Jframe Form beri
nama pada Class Name yaitu Event6
(e) Masuk dalam design form, pilih properties title dari form tersebut, masukkan
Aplikasi Pemesanan Menu
(f) Tambahkan dua buah jLabel dengan properti text masing-masing Daftar Menu
dan label kedua Tambahan
(g) Tambahkan sebuah jComboBox, sebuah jTextArea, dan sebuah jButton. Seperti pada
gambar dibawah ini :
(h) Tambahkan event windowOpened, dibangkitkan ketika form ini dibuka, dengan
cara klik kanan pada area form > Events > Window > windowOpened. Tambahkan
perintah dibawah ini :
private void formWindowOpened(java.awt.event.WindowEvent evt) {
jComboBox1.removeAllitems();
jComboBox1.addItem(Paket Sarapan);
jComboBox1.addItem(Paket Makan Siang );
jComboBox1.addItem(Prasmanan );
jComboBox1.addItem(Paket Keluarga); }
(i) Tambahkan event windowClosing, dibangkitkan ketika form ini ditutup, dengan
cara klik kanan pada area form > Events > Window > windowClosing. Tambahkan
perintah dibawah ini :
int closing;
closing=JOptionPane.showConfirmDialog(this,
Apakah
mau
keluar
dari
form
ini
anda
yakin,
konfirmasi,
JOptionPane.YES_NO_OPTION);
if(closing==0) {
this.dispose(); }
(j) set pada properties form, defaultCloseOperation = DO_NOTHING
(k) Set Main Class Project Modul9f, klik kanan pada Project Modul9f > Properties.
Pilih Categories > Run, browse Main Class pilih Event6. Lalu jalankan program
anda.
Hasil :
Pembahasan :
Pada events windowOpened yang didefinisikan pada form dengan perintah
removeAllItems() artinya adalah untuk menghapus semua pilihan dalam
jCombobox, sedangkan addItem() adalah untuk menambahkan sebuah pilihan
dalam jCombobox.
Pada events windowClosing, pernyataan :
int closing;
closing=JOptionPane.showConfirmDialog(this,
Apakah
mau
keluar
dari
form
ini
anda
yakin,
konfirmasi,
JOptionPane.YES_NO_OPTION);
if(closing==0) {
this.dispose(); }
Dideklarasikan terlebih dahulu sebuah variabel yang akan digunakan untuk
mendefinisikan sebuah kotak dialog konfirmasi apabila sebuah window akan ditutup
dengan menggunakan method pada JOptionPane yaitu showConfirmDialog yang
menggunakan model YES_NO_OPTION.
BAB 10
JDBC
10.1 Tujuan
(b)
(c)
DriverManager.getConnection("jdbc:mysql:///modul10a",
"root", "rahasia");
if (!con.isClosed())
catch(SQLException e) {}
} } }
(d)
Tambahkan MySQL JDBC driver dengan cara klik kanan pada project
Modul10a > Properties > Libraries pada tab Compile pilih Add Library tambahkan
MySQL JDBC Driver seperti terlihat pada gambar dibawah ini :
(e)
Hasil :
Pembahasan :
Pada deklarasi awal, program ini menggunakan beberapa class pada java.sql dengan
perintah
import
java.sql.Connection,
java.sql.DriverManager
dan
DriverManager.getConnection("jdbc:mysql:///modul10a",
"root",
"rahasia");
DriverManager adalah kelas untuk manajemen driver yang digunakan untuk mengakses
database, dalam hal ini database yang ingin diakses adalah modul10a. Jika belum
ditambahkan sebuah MySQL JDBC driver kedalam project ini, maka program akan
mengeksekusi baris perintah :
catch(Exception e) {
System.err.println("Exception: " + e.getMessage()); }
10.4 Percobaan2
(a)
Butlah tabel user dengan field user_id (varchar (25)), password (varchar(10))
(d)
package Modul10b;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
DriverManager.getConnection("jdbc:mysql:///modul10a",
"rahasia");
if (!con.isClosed())
System.out.println("Sukses terhubung ke MySQL server...");
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("Select * from user");
while(rs.next()){
no=no+1;
System.out.println(no +")");
System.out.println("User ID : " +rs.getString("user_id"));
System.out.println("Password : " +rs.getString("password"));
System.out.println("Jabatan : " +rs.getString(3));
}
st.close();
rs.close();
}
catch(Exception e) {
System.err.println("Exception : " + e.getMessage());
}
finally {
try {
if (con != null)
con.close();
} catch(SQLException e) {}
}
"root",
(e)
Tambahkan MySQL JDBC driver dengan cara klik kanan pada project
Modul10b > Properties > Libraries pada tab Compile pilih Add Library
tambahkan MySQL JDBC Driver.
(f)
Hasil :
Pembahasan :
Kelas Statement digunakan untuk mengirimkan statemen SQL ke database, tanpa
menggunakan paramater. Sebagai contoh pada baris perintah Statement st =
con.createStatement();. Instance st tersebut membuat sebuah statement baca, yaitu
select * from user, melalui method executeQuery yang dimilikinya. Selain itu,
statement tersebut juga bisa melakukan operasi baca dengan metode executeUpdate()
yang juga dimiliki oleh kelas ini.
Sedangkan kelas ResultSet digunakan untuk menyimpan dataset (sekumpulan data) dari
hasil statement query SELECT. Seperti pada baris :
ResultSet rs = st.executeQuery("Select * from user");
while(rs.next()){
no=no+1;
System.out.println(no +")");
System.out.println("User ID : " +rs.getString("user_id"));
Instance rs, akan menyimpan hasil query yang bisa diakses dengan cara memanggil
method getter untuk setiap jenis datanya. Misalnya getString() adalah untuk mendapat
nilai string, diikuti nama fieldnya. Sedangkan untuk membaca record berikutnya bisa
dilakukan dengan method next().
10.5 Percobaan3
(a)
(b)
DriverManager.getConnection("jdbc:mysql:///modul10a",
"root",
"rahasia");
if (!con.isClosed())
System.out.println("Sukses terhubung ke MySQL server...");
(c)
Tambahkan MySQL JDBC driver dengan cara klik kanan pada project Modul10c
> Properties > Libraries pada tab Compile pilih Add Library tambahkan
MySQL JDBC Driver.
(d)
Hasil :
Pembahasan :
Kelas PreparedStatement digunakan untuk mengirimkan statement SQL ke database,
yang disertai dengan penggunaan parameter, seperti contoh :
PreparedStatement pStatement = null;
String sql ="insert into user(user_id, password, jabatan)" +"Values (?,?,?)";
pStatement = con.prepareStatement(sql);
pStatement.setString(1, "Joko");
pStatement.setString(2, "jack");
pStatement.setString(3, "Manajer Personalia");
int intTambah= pStatement.executeUpdate();
Instance pStatement tersebut membuat sebuah statement tulis, yaitu insert into
user
(user_id,password,jabatan),
dan
dijalankan
melalui
method
user_id=Joko,
10.6 Percobaan4
(a)
(b)
DriverManager.getConnection("jdbc:mysql:///modul10a",
"root",
"rahasia");
if (!con.isClosed())
System.out.println("Sukses terhubung ke MySQL server...");
PreparedStatement pStatement = null;
String sql ="update user set password=?,"+
"jabatan=? where
user_id=? ";
pStatement = con.prepareStatement(sql);
pStatement.setString(1, "s3cr3t");
pStatement.setString(2, "Manajer IT");
pStatement.setString(3, "Joko");
(c)
Tambahkan MySQL JDBC driver dengan cara klik kanan pada project
Modul10d > Properties > Libraries pada tab Compile pilih Add Library
tambahkan MySQL JDBC Driver.
(d)
Hasil :
Pembahasan :
Pada program Modul10d ini tidak jauh berbeda dengan program pada Modul10c yang
berbeda hanyalah pada baris perintah berikut :
String sql ="update user set password=?,"+
Dimana ini adalah perintah untuk melakukan update record yang akan menset password
dan jabatan baru yang sesuai dengan user_id.
10.7 Percobaan5
(a)
(b)
package Modul10e;
import java.sql.*;
public class Main {
public static void main(String[] args) {
Connection con = null;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
con
DriverManager.getConnection("jdbc:mysql:///modul10a",
"rahasia");
if (!con.isClosed())
System.out.println("Sukses terhubung ke MySQL server...");
PreparedStatement pStatement = null;
String sql ="delete from user " + " where user_id=? ";
pStatement = con.prepareStatement(sql);
pStatement.setString(1, "Joko");
int intBaris= pStatement.executeUpdate();
if (intBaris>0)
System.out.println("Penghapusan data berhasil");
else
System.out.println("Penghapusan data gagal");
pStatement.close();
con.close(); }
catch(Exception e) {
System.err.println("Exception: " + e.getMessage());
}
finally {
try {
if (con != null)
con.close();
} catch(SQLException e) {}
} }
"root",
(c)
Tambahkan MySQL JDBC driver dengan cara klik kanan pada project Modul10e
> Properties > Libraries pada tab Compile pilih Add Library tambahkan MySQL
JDBC Driver.
(d)
Hasil :
Pembahasan :
Pada program Modul10e ini juga tidak jauh berbeda dengan program pada Modul10d
yang berbeda hanyalah pada baris perintah berikut :
String sql ="delete from user " + " where user_id=? ";
Dimana ini adalah perintah untuk melakukan penghapusan record yang yang sesuai
dengan user_id.
10.8 Percobaan6
(a)
Buat project baru dengan nama Modul10f, jangan pilih opsi Create Main
Class.
(b)
Tambahkan satu package didalam Modul10f dengan cara klik kanan pada project
Tambahkan sebuah Jframe pada project Modul10f dengan cara klik kanan pada
project Modul10f > New > Jframe Form. Beri nama Tampildata
(d)
tengah form
(e)
Object[][] data1=null;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
con
DriverManager.getConnection("jdbc:mysql:///modul10a",
"rahasia");
if (!con.isClosed())
System.out.println("Sukses terhubung ke MySQL server...");
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("Select * from user");
rs.last();
int rowCount=rs.getRow();
rs.beforeFirst();
data1= new Object[rowCount][3];
int no=-1;
while(rs.next()){
no=no+1;
data1[no][0]=rs.getString("user_id");
data1[no][1]=rs.getString("password");
data1[no][2]=rs.getString("jabatan");
}
st.close();
con.close();
}
catch(Exception e) {
System.err.println("Exception : " + e.getMessage());
}
finally {
try {
"root",
if (con != null)
con.close();
} catch(SQLException e) {}
}
return data1;
}
(f)
Tambahkan satu method lagi yaitu tampilTabel() untuk inisialisasi Jtable, dan
(g)
Set Main Class pada project modul10f dengan cara klik kanan pada project
modul10f > Properties > Run > Main Class > Browse > modul10f.Tampildata
(i)
Hasil :
Pembahasan :
Method
setViewportView()
10.9 Percobaan7
(a) Buat project baru dengan nama Modul10g, jangan pilih opsi Create Main Class
(b) Tambahkan satu package ke dalam project Modul10g, dengan cara klik kanan pada
project Modul10g > New > Java Package. Beri nama Modul10g
(c) Tambahkan sebuah Jframe pada project Modul10g dengan cara klik kanan pada
project Modul10g > New > Jframe Form. Beri nama FormInput
(d) Tambahkan 3 buah JLabel, 3 JTextField dan satu JButton
(e) Atur properties-nya sehingga akan tampil sebagai berikut :
(f) Tambahkan perintah import dibawah deklarasi package Modul10g, sehingga akan
tampil sebagai berikut :
package modul10g;
import java.sql.*;
import javax.swing.JOptionPane;
(g) Tambahkan event ActionPerformed pada Jbutton dengan cara klik kanan pada
Jbutton1 > events > Action > actionPerformed. Tambahkan baris perintah,
sehingga akan tampak sebagai berikut :
Connection con = null;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection("jdbc:mysql:///modul10a", "root",
"rahasia");
if (!con.isClosed())
System.out.println("Sukses terhubung ke MySQL
server...");
PreparedStatement pStatement = null;
String sql ="insert into user(user_id, password, jabatan)" +"Values
(?,?,?)";
pStatement = con.prepareStatement(sql);
pStatement.setString(1, jTextField1.getText());
pStatement.setString(2, jTextField2.getText());
pStatement.setString(3, jTextField3.getText());
"Penambahan
sukses","Informasi",JOptionPane.INFORMATION_MESSAGE);
else
JOptionPane.showMessageDialog(this,
gagal","Informasi",JOptionPane.INFORMATION_MESSAGE);
pStatement.close();
con.close();
jTextField1.setText("");
jTextField2.setText("");
jTextField3.setText("");
}
catch(Exception e) {
System.err.println("Exception: " + e.getMessage());
}
finally {
try {
if (con != null)
con.close();
} catch(SQLException e) {}
} }
"Penambahan
(h) Set Main Class pada project modul10g dengan cara klik kanan pada project
modul10g > Properties > Run > Main Class > Browse > modul10g.FormInput
(i) Jangan lupa tambahkan MySQL JDBC Driver pada project modul10g.
Hasil :
Pembahasan :
Program ini hampir mirip dengan percobaan3, hanya saja yang membedakan disini
menggunakan interaksi GUI Event Handling (actionPerformed) dengan konektifitas
database (JDBC) dan sedikit memanfaatkan kelas JOptionPane untuk menampilkan
informasi apakah penambahan data sukses atau tidak.
10.10 Percobaan8
(a)
Buat project baru dengan nama Modul10h, jangan pilih opsi Create Main Class
(b)
Tambahkan satu package ke dalam project Modul10h, dengan cara klik kanan
pada project Modul10h > New > Java Package. Beri nama Modul10h
(c)
Tambahkan sebuah Jframe pada project Modul10h dengan cara klik kanan pada
project Modul10h > New > Jframe Form. Beri nama FormUpdate
(d)
(e)
Ganti variabel Jbutton1 menjadi btnCekUser, dengan cara klik kanan pada
sebagai berikut :
package modul10h;
import java.sql.*;
import javax.swing.JOptionPane;
(g)
DriverManager.getConnection("jdbc:mysql:///modul10a",
"root", "rahasia");
if (!con.isClosed())
System.out.println("Sukses terhubung ke MySQL Server...");
} catch(Exception e) {
System.err.println("Exception: " + e.getMessage());
} finally {
try {
if (con != null)
con.close();
} catch(SQLException e) {}
}
}
(i)
user_id=?";
pStatement = con.prepareStatement(sql);
pStatement.setString(1, jTextField1.getText());
pStatement.setString(2, jTextField2.getText());
pStatement.setString(3, jTextField3.getText());
int intTambah= pStatement.executeUpdate();
if (intTambah>0)
JOptionPane.showMessageDialog(this,
"Update
sukses","Informasi",JOptionPane.INFORMATION_MESSAGE);
else
JOptionPane.showMessageDialog(this,
gagal","Informasi",JOptionPane.INFORMATION_MESSAGE);
pStatement.close();
con.close();
jTextField1.setText("");
jTextField2.setText("");
jTextField3.setText("");
"Penambahan
}
catch(SQLException e){
System.out.println("Koneksi gagal "+e.toString());
} }
(j)
berikut :
(k)
Referensi