handout java (copy).pdf
Post on 05-Jul-2018
237 Views
Preview:
TRANSCRIPT
-
8/15/2019 Handout Java (Copy).pdf
1/102
MODULPELATIHAN
PEMROGRAMAN J AVA
Level III : Java
Handout Kuliah
POLITEK NIK GAJAHTUNGGAL
-
8/15/2019 Handout Java (Copy).pdf
2/102
2
MODUL I
THREAD
Tujuan
Memahami multithreading dalam perograman Java
1.1. Multitasking
- Multitasking adalah istilah yang menjelaskan bahwa sebuah komputer dapat menjalankan
beberapa aktifivas secara simultan/bersamaan
- Process based multitasking adalah aktifitas aktifitas yang dijalankan bersamaan dan
aktifitas-aktifitas tersebut berbasis sebuah proses/program
- Thread based multitasking adalah aktifitas-aktifitas yang dijalankan bersamaan yang
berbasis pada thread
1.2. Pengertian Thread
- Thread adalah suatu bagian program (berupa barisan kode) yang berdiri sendiri tidak
bergantung pada bagian program yang lain dan dapat dijalankan secara simultan
- Suatu Thread dapat diistirahatkan tanpa harus menghentikan bagian program yang lain atau
keseluruhan program, karena setiap thread didefinisikan dalam lokasi eksekusi yang
berbeda- Sebuah program java dapat memiliki lebih dari satu thread
- Pada saat sebuah program java dijalankan, otomatis ada satu buah thread yang dibuat,
thread ini disebut thread utama (main thread)
- Thread utama dalah induk dari thread-thread lain yang ada dalam program tersebut, yang
disebut thread anak (child thread)
- Walaupun thread utama dibuat secara otomatis, namun dapat dikontrol oleh objek dari
kelas Thread, yeng terdapat dalam pacakage java.lang.
- Untuk melalukan ini, kita harsu memanggil method currentThread() yang didefinisikan pada kelas Thread
- Deklarasi method ini adalah
static Thread currentThread()
- Method currentThread() mengembalikan referensi ke thread yang sedang aktif
- Perhatikan contoh program berikut
-
8/15/2019 Handout Java (Copy).pdf
3/102
-
8/15/2019 Handout Java (Copy).pdf
4/102
4
• suspend()
Menghentikan aktivitas thread untuk sementara sampai method resume dipanggil.
• resume()
Method yang digunakan untuk menjalankan kembali aktivitas thread yang dihentikan
sementara oleh method suspend().• isAlive()
Ini adalah method yang digunakan untuk mengetahui apakah suatu method masih
hidup.
• start()
Method yang digunakan untuk menjalankan thread.
1.4. Membuat Thread
- Ada dua cara membuat
- Cara pertama, dengan mengimplementasi interface Runnable
- Interface Runnable terdapat dalam package java.lang, deklarasinya sebagai berikut
public interface Runnable{
public void run();
}• Method run() disiikan oleh kode untuk proses yang akan dijalankan oleh thread yang
bersangkutan• Setelah kita membuat kelas yang mengimplementasi interface Runnable, buat objek dari
kelas tersebut• Kemudian lewatkan objek tersebut ke dalam konstruktor Thread, bentuk umum sintaksnya
adalah
Thread(Runnable objThread)
Thread(Runnable objThread, String namaThread)• Menjalankan thread dilakukan melalui pemanggilan method start()• Method start() secara otomatis akan memanggil method run() yang terdapat
dalam kelas yang mengimplementasi interface Runnable• Perhatikan contoh berikut
class MyRunnable implements Runnable {// mengimplementasikan method run() yang dideklarasikan// di dalam interface Runnablepublic void run() {
System.out.println("Thread anak dieksekusi"); }
}
-
8/15/2019 Handout Java (Copy).pdf
5/102
5
class DemoImplementRunnable1 {public static void main(String[] args) {
// (LANGKAH KE-1)// membuat objek RunnableMyRunnable obj = new MyRunnable(); // (LANGKAH KE-2)
// membuat objek Thread dengan melewatkan objek RunnableThread t = new Thread(obj);// (LANGKAH KE-3)// menjalankan threadt.start();
System.out.println("Thread utama dieksekusi");}
}
Contoh lain
class MyRunnable implements Runnable {private Thread t;
// constructor kelas MyRunnableMyRunnable() {
t = new Thread(this); // melewatkan objek MyRunnablet.start(); // menjalankan thread
}
public void run() {System.out.println("Thread baru dieksekusi");
}
}
class DemoImplementRunnable2 {
public static void main(String[] args)
{ MyRunnable obj = new
MyRunnable();
System.out.println("Thread utama dieksekusi");
}
}
• Cara kedua untuk membuat thread adalah dengan membuat kelas yang merupakan turunan
kelas Thread.• Perhatikan contoh berikut
class MyThread extends Thread {
// melakukan override terhadap method run()public void run() {
System.out.println("Thread baru dieksekusi"); }
}
-
8/15/2019 Handout Java (Copy).pdf
6/102
6
class DemoExtendsThread {public static void main(String[] args) {
MyThread t = new MyThread();t.start();
System.out.println("Thread utama dieksekusi");}}
1.5. Menghentikan Thread
- Thread yang telah dijalankan secara otomatis akan dihentikan ketika semua proses (kode
dalam method run()) telah selesai dieksekusi
- Namun kita diijinkan untuk menghentikan thread secara manual
- Untuk menghentikan thread yang sedang berjalan, gunakan variabel bertipe boolean
class MyThread extends Thread {// mendeklarasikan variabel boolean// untuk mengontrol pengulanganprivate boolean selesai = false;public void run() {
int counter = 0;System.out.println("Thread anak dijalankan");while (!selesai)
{ System.out.print((++counter) + "");
} System.out.println("Thread anak selesai");}
public void stopThread() {selesai = true;
}}
class DemoStopThread {public static void main(String[] args)
throws InterruptedException
{ System.out.println("Thread utama
dijalankan");
MyThread t = new MyThread();// menjalankan thread anakt.start();
// mengistirahatkan thread utama selama 1/40 detikThread.sleep(25);// menghentikan thread anak
t.stopThread(); // JANGAN GUNAKAN: t.stop();
System.out.println("¥nThread utama selesai");}
-
8/15/2019 Handout Java (Copy).pdf
7/102
7
Jika kode program tesebut dieksekusi, outputnya adalah:
Terlihat bahwa thread utama dihentikan sebelum thread anak selesai
1.6. Multithreading
- Dalam sebuah program Java, kita diijinkan untuk memiliki banyak thread
- Thread-thread tersebut dapat dijalankan secara simultan
- Perhatikan contoh berikut
class MyThread1 extends Thread {public void run() {
try {for (int i=0; i
-
8/15/2019 Handout Java (Copy).pdf
8/102
8
sleep(1000);} else {
System.out.println("Thread kedua selesai...¥n"); }
} } catch (InterruptedException ie)
{ System.out.println(ie.getMessage());}
}}
class DemoMultipleThread {public static void main(String[] args)
{ MyThread1 t1 = new MyThread1();t1.start();
MyThread2 t2 = new MyThread2();t2.start();
}}
1.7. Siklus Hidup Thread
Berikut adalah siklus hidup suatu thread
1.8. Menentukan Prioritas Thread
- Prioritas thread digunakan oleh scheduler (penjadwal thread) untuk menentukan thread
mana yang seharusnya dieksekusi terlebih dahulu.
- Thread dengan prioritas lebih tinggi akan mendapatkan waktu CPU yang lebih
dibandingkan dengan thread yang prioritasnya lebih rendah
-
8/15/2019 Handout Java (Copy).pdf
9/102
9
- Thread dengan prioritas lebih tinggi dapat mengesampingkan thread dengan prioritas lebih
rendah. Contohnya, apabila terdapat thread dengan prioritas lebih rendah sedang berjalan
dan kemudian thread dengan prioritas lebih tinggi di- resume atau dijalankan ulang (dari
keadaan wait maupun sleep), maka thread dengan prioritas rendah tersebut akan
dikesampingkan
- Untuk menentukan prioritas thread, gunakan method setPriority() , yang
deklarasinya adalah
final void setPriority(int level)
- Untuk memperoleh informasi tentang prioritas suatu thread, gunakan method
getPriority() , yang deklarasinya adalah
final int getPriority()
- Perhatikan contoh berikut
class MyThread implements Runnable {private Thread t;private long n; // jumlah pengulangan yang dihasilkanprivate boolean selesai = false;MyThread(String nama, int prioritas) { t = new Thread(this, nama);t.setPriority(prioritas);n = 0;
}public void run() {
while (!selesai) { n++;
}} public void start() {
t.start(); }public void stop() {selesai = true;
}public long getN() {return n;
}public Thread getThread() { return t;
}}
-
8/15/2019 Handout Java (Copy).pdf
10/102
10
class DemoPrioritasThread {public static void main(String[] args)
throws InterruptedException {
MyThread t1 = new MyThread("prioritas-tinggi",Thread.NORM_PRIORITY + 2);
MyThread t2 = new MyThread("prioritas-rendah",Thread.NORM_PRIORITY - 2);
t1.start();t2.start();
// mengistirahatkan thread utama selama 5 detikThread.sleep(5000);
t1.stop();t2.stop();
t1.getThread().join();t2.getThread().join();
System.out.println("Jumlah pengulangan pada " +t1.getThread().getName() + ": " + t1.getN());
System.out.println("Jumlah pengulangan pada " +t2.getThread().getName() + ": " + t2.getN());
}}
Output program di atas adalah
Terlihat bahwa thread dengan prioritas lebih tinggi mendapatkan jumlah pengulangan yang
lebih banyak
1.9. Method join() dan isAlive()
- Pada contoh sebelumnya, kita melihat bahwa thread utama dihentikan sebelum thread anak
- Pada beberapa kasus, terkadang kita ingin thread utama adalah thread terakhir yang
dihentikan
- Untuk itu kita harus memanggil method join() dari semua thread anak
- Untuk mengetahui apakah suatu thread masih hidup, gunakan method isAlive()
-
8/15/2019 Handout Java (Copy).pdf
11/102
11
class MyThread implements Runnable {private Thread t;private int n;
MyThread(String nama, int n){ t = new Thread(this,
nama); this.n = n;}
public void run() {try {
for (int i=0; i
-
8/15/2019 Handout Java (Copy).pdf
12/102
12
t2.getThread().join();t3.getThread().join();
// setelah thread t1, t2, dan t3 selesaiSystem.out.println();System.out.println("t1.getThread().isAlive() : " +
t1.getThread().isAlive());System.out.println("t2.getThread().isAlive() : " +t2.getThread().isAlive());
System.out.println("t3.getThread().isAlive() : " +t3.getThread().isAlive());
System.out.println("¥nThread utama selesai");}
}
1.10. Sinkronisasi Thread
- Thread-thread dalam sebuah program saling membagi ruang memori, artinya thread-thread
tersebut dapat saling berbagi resource
- Pada saat dua atau lebih thread mengakses suati resource yang di-share, maka dibutuhkan
suatu cara untuk meyakinkan bahwa resource tersebut hanya akan digunakan oleh satu
buah thread pada satu waktu tertentu
- Cara yang digunakan ini disebut sinkronisasi
- Untuk dapat melakukan sinkronisasi thread , teknologi Java memperkenalkan terminologi
lock pada obyek.
- Lock merupakan ”kunci ” virtual yang dimiliki oleh obyek. Kunci virtual ini dapat dimiliki
oleh obyek lain yang mengakses obyek pemilik kunci.
- Akibatnya adalah : selama obyek A memiliki kunci dari obyek yang diakses ( misalnya
obyek B) , maka obyek C tidak dapat mengakses obyek B.
- Obyek C akan terus menunggu sampai obyek A melepaskan kunci obyek B dan obyek B
memiliki kembali kunci tersebut.
-
8/15/2019 Handout Java (Copy).pdf
13/102
13
- Untuk menghasilkan sinkronisasi di antara thread , maka teknologi Java menyediakan katakunci synchronized yang akan menyebabkan lock / kunci obyek berpindah ke thread yang
mengakses obyek tersebut.
- Berikut adalah ilustrasi sinkronisasi Thread
- Pada diagram state model tersebut, terdapat tambahan status, yaitu BLOCKED in object ’ s
lock pool . Artinya, ketika ada thread yang mengakses suatu obyek B yang memiliki method
atau blok yang menggunakan kata kunci synchronized, thread lain harus menunggu untuk
mengakses obyek B tersebut. Thread lain tersebut masuk ke dalam status BLOCKED in
object ’s lock pool.
- Ketika thread pemegang lock tersebut mengembalikan kunci kepada obyek B, maka thread
yang sedang menunggu di BLOCKED in object ’ s lock pool mendapatkan kunci obyek B,
dan masuk ke dalam status Runnable . Seperti pada Model I, thread pemegang kunci obyek
B tersebut dipilih oleh scheduler untuk masuk ke status Running .
- Singkatnya:
Ketika sebuah method / blok dari sebuah obyek yang menggunakan kata kunci
synchronized diakses oleh sebuah thread , thread lain tidak dapat mengakses method-method tersinkronisasi milik obyek tersebut.
-
8/15/2019 Handout Java (Copy).pdf
14/102
14
Ketika sebuah method / blok dari sebuah obyek yang menggunakan kata kunci
synchronized diakses oleh sebuah thread , thread lain masih dapat mengakses method-
method yang tidak tersinkronisasi milik obyek tersebut.
Sinkronisasi Pada Method
- Sinkronisasi pada method berarti sinkronisasi dilakukan untuk keseluruhan isi method .
Akibatnya, ketika method tersebut diakses oleh sebuah thread , maka thread lain harus
menunggu sampai method tersebut selesai dieksekusi.
- Untuk mendefinisikan sebuah method tersinkronisasi pada kelas, sintaknya adalah sebagai
berikut :
[modifiers] synchronized data_type identifier(arguments) {
//code block
}
Perhatikan contoh berikut
class TestKelas {public synchronized void test(String s)
{ System.out.print("[" + s);try
{ Thread.sleep(3000);
} catch (InterruptedException e) {e.printStackTrace();
}System.out.println("]");
}}
class MyThread implements Runnable {private TestKelas obj;private Thread t;
private String msg;
MyThread(TestKelas obj, String msg) {t = new Thread(this);this.obj = obj;this.msg = msg;t.start();
}
public void run() {obj.test(msg);
}
}
-
8/15/2019 Handout Java (Copy).pdf
15/102
15
class DemoSinkronisasiMethod {public static void main(String[] args)
throws InterruptedException {
TestKelas tk = new TestKelas();
MyThread t1 = new MyThread(tk, "Contoh");MyThread t2 = new MyThread(tk, "Sinkronisasi");MyThread t3 = new MyThread(tk, "Method");
}}
Output program di atas adalah
Sinkronisasi Pada Baris Program Tertentu
- Terkadang tidak semua baris pada method perlu disinkronisasi. Mungkin hanya satu atau
dua baris pada method yang dibutuhkan untuk sinkronisasi. Agar bagian dari method sajayang disinkronisasi, maka sintaknya adalah sebagai berikut :
[modifiers] data_type identifier(arguments) {//code block 1synchronized(Object obj){
//code block 2 }//code block 3}
public synchronized void batal(String nama){if(persediaan
-
8/15/2019 Handout Java (Copy).pdf
16/102
16
MODUL II
KELAS-KELAS DASAR DI JAVA
Tujuan
- Memahami penggunaan beberapa kelas dasar di Java
2.1. Input-output
- Java menyediakan dukungan terhadap proses Input/Output (I/O) dalam package java.io.
- Di dalam package tersebut tersimpan banyak interface dan kelas yang akan memudahkan
programmer melakukan pengambilan dan penyimpanan informasi ke media lain (misalnya
ke suatu file)
2.1.1 Stream
- Stream adalah sebuah abstraksi yang dapat memberikan atau mendapatkan informasi.
- Stream dapat dihubungkan dengan peralatan fisik yang terdapat dalam sistem I/O, seperti
keyboard, file, layar console, dll.
- Cara kerja stream selalu sama, meskipun peralatan yang terhubung dengannya berbeda.
- Kode program yang kita tulis akan sama untuk masing-masing peralatan fisik yang
terhubung dengan stream yang bersangkutan
- Contohnya, programmer dapat menggunakan method dan kelas yang sama untuk
melakukan penulisan teks, baik ke console maupun ke dalam file
Tipe-tipe Stream:
- Byte Stream
memberikan atau menyimpan informasi data dalam bentuk byte, misalnya untuk menulis
dan membaca file biner.
- Character Stream
digunakan untuk melakukan I/O yang melibatkan data dalam bentuk karakter, misalnya
proses baca/tulis ke file berisi teks.
Kelas-kelas Stream:
- Stream didefinisikan dengan empat buah kelas abstrak: InputStream,
OutputStream, Reader, Writer
- Kelas InputStream dan OutputStream adalah kelas abstrak yang merupakan kelas
induk dari kelas-kelas yang termasuk dalam kategori byte stream
- Kelas Reader dan Writer adalah kelas abstrak yang merupakan kelas induk dari kelas-
kelas yang termasuk dalam kategori character stream
-
8/15/2019 Handout Java (Copy).pdf
17/102
17
- Semua kelas turunan dari InputStream maupun Reade r memiliki method read()
untuk membaca data
- Semua kelas turunan dari OutputStream maupun Writer memiliki method write()
untuk menulis data
- Kedua method tersebut adalah method abstrak
Byte Stream
- Byte stream didefinisikan dengan menggunakan dua buah hirarki kelas
- Urutan paling atas dari hirarki tersebut adalah kelas InputStream dan OutputStream
- Tabel berikut memperlihatkan beberapa daftar kelas turunan dari kelas InputStream
dan OutputStream
Nama Kelas Keterangan
BufferedInputStream Input stream yang telah ter-buffer
BufferedOutputStream Output Stream yang telah ter-buffer
ByteArrayInputStream Input stream yang membaca dari array byte
ByteArrayOutputStream Output stream yang menulis ke array byte
DataInputStream Input stream yang meiliki method-method untuk membaca
tipe data standar yang terdapat dalam java
DataOutputStream Out stream yang meiliki method-method untuk menulis tipe
data standar yang terdapat dalam java
FileInputStream Input stream yang membaca data dari sebuah file
FileOutputStream Output stream yang menulis data ke sebuah file
PipedInputStream Penyalur input
PipedOutputStream Penyalur output
PrintStream Output stream yang berisi method println() dan print()
Character Stream
- Character stream didefinisikan dengan menggunakan dua buah hirarki kelas
- Urutan paling atas dari hirarki tersebut adalah kelas Reader dan Writer
Tabel berikut memperlihatkan beberapa daftar kelas turunan dari kelas Reader dan Writer
-
8/15/2019 Handout Java (Copy).pdf
18/102
18
Nama Kelas Keterangan
BufferedReader Character stream input yang telah ter-buffer
BufferedWriter Character Stream output yang telah ter-buffer
CharArrayReader membaca dari array character
CharArrayWriter menulis ke array character
InputStreamReader Input stream yang menerjemahkan byte ke character
OtuputStreamWriter Out stream yang menerjemahkan karakter ke byte
FileReader membaca data dari sebuah file
FileWriter menulis data ke sebuah file
PipedWriter Penyalur input
PipedReader Penyalur output
PrintWriter Output stream yang berisi method println() dan print()
StringReader Input stream yang membaca dari sebuah String
StringWriter Output stream yang menulis ke sebuah String
- Semua program Java otomatis mengimport package java.lang. Di dalam package ini
didefinisikan sebuah kelas bernama System. Kelas ini mendefinisikan beberapa aspek yang berkaitan dengan runtime.
- Kelas System mendefinisikan tiga variabel stream: in, out, err. Ketiga variabel ini
didefinisikan sebagai public dan static
- System.out mengacu kepada output stream standar, yang berupa console
- System.in mengacu kepada input stream standar yang berupa keyboard
- System.err mengacu pada stream error standar yang berupa console
2.1.2. Proses Input
- Dalam Java, input console dilakukan dengan pembacaan terhadap stream System.in
-
8/15/2019 Handout Java (Copy).pdf
19/102
19
- Untuk mendapatkan karakter-karakter yang dimasukkan melalui keyboard ke layar console,
System.in perlu dibungkus didalam objek BufferedReader .
- Hal ini dilakukan untuk membentuk character stream, karena sebenarnya System.in
adalah byte stream
- Bentuk konstruktor dari BufferedReader adalahBufferedReader(Reader inputReader)
- inputReader adalah stream yang akan dihubungkan dengan objek dari kelas
BufferedReade r yang dibuat.
- Karena Reader adalah kelas abstrak, kita perlu menggunakan kelas turunannya yang
berupa kelas konkrit. Salah satunya adalah InputStreamReader yang dapat
mengonversi byte ke character
- Agar objek dari InputStreamReader dapat dihubungkan dengan System.in , perlu
digunakan konstruktor dengan bentuk:
InputStreamReader(InputStream is)
- Pada konstruktor di atas, is dapat diisi dengan System.in, sehingga untuk membuat objek
BufferedReader yang terhubung dengan keyboard dapat menggunakan kode:
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
- Untuk membaca input berupa karakter, gunakan method read() yang terdapat dalam
kelas BufferedReader .
- Deklarasi method read() adalah sebagai berikut:
int read() throws IOException
Berikut adalah contoh membaca input data karakter
import java.io.*;class DemoInputKarakter {
public static void main(String[] args) throws IOException
{ System.out.print("Masukkan sembarang karakter: ");
char ch;
InputStreamReader isr = new InputStreamReader(System.in);BufferedReader br = new BufferedReader(isr);
ch = (char) br.read();12
System.out.println("Karakter yang dimasukkan adalah ¥'" +ch + "¥'");
}}
- Untuk melakukan input berupa String , gunakan method readLine()
-
8/15/2019 Handout Java (Copy).pdf
20/102
20
- Deklarasi method tersebut adalah
String readLine() throws IOException
Contoh input data String
import java.io.*;class DemoInputString { public static void main(String[] args) throws IOException
{ System.out.print("Masukkan nama Anda: ");
String nama;
InputStreamReader isr = new InputStreamReader(System.in);BufferedReader br = new BufferedReader(isr);
nama = br.readLine();
System.out.println("Halo " + nama +", sudahkah Anda mengerti Java?");
}
Contoh input data numeric
import java.io.*;class DemoInputNumerik1 {
public static void main(String[] args) throws IOException
{ System.out.print("Masukkan sebuah bilangan bulat: ");String temp;int bilangan = 0;
InputStreamReader isr = new InputStreamReader(System.in);BufferedReader br = new BufferedReader(isr);
// input data dianggap sebagai stringtemp = br.readLine();
try {// konversi dari string ke integer
bilangan = Integer.parseInt(temp);} catch (NumberFormatException nfe) { System.out.println("Data yang dimasukkan “+"bukan bilangan
bulat");System.exit(1);
}System.out.println("Bilangan yang dimasukkan " +
"adalah " + bilangan);}
}
-
8/15/2019 Handout Java (Copy).pdf
21/102
-
8/15/2019 Handout Java (Copy).pdf
22/102
22
- Selain menggunakan System.out , kita juga dapat menggunakan kelas PrintWriter
untuk menuliskan data ke layar console.
- Terdapat beberapa bentuk konstruktor dari PrintWriter , di antaranya ialah
- PrintWriter(OutputStream os, boolean flushOnNewLine)
- os adalah objek dari OutputStream , sedangkan flushOnNewLine adalah parameter
bertipe boolean yang menyatakan apakah stream output akan dibuang atau tidak setiap kali
method println() dipanggil.
- PrintWriter mendukung method print() dan println() untuk semua tipe data
- Cara pembentukan objek PrintWriter yang dapat digunakan untuk pembentukkan output
adalah:
PrintWriter pw = new PrintWriter(System.out, true)- Berikut contoh penggunaan PrintWriter
import java.io.PrintWriter;class DemoPrintWriter {public static void main(String[] args) {
// membuat objek PrintWriterPrintWriter pw = new PrintWriter(System.out, true);
double d = 3.1416;
int i = 123;byte b = 65;char c = 'A';String s = "Ini adalah string";
pw.println("Data bertipe double : " + d);pw.println("Data bertipe int : " + i);pw.println("Data bertipe byte : " + b);pw.println("Data bertipe char : " + c);pw.println("Data bertipe string : " + s);}}
2.1.4. Baca Tulis File
- Pada contoh program berikut ditunjukkan cara untuk membaca data dari sebuah file dan
kemudian menampilkan isi file tersebut ke layar monitor.
import java.io.*;
class DemoBacaFile {public static void main(String[] args)
{ FileInputStream finput = null;int data;// membuka file
-
8/15/2019 Handout Java (Copy).pdf
23/102
23
try {finput = new FileInputStream("d:/INPUT.TXT");
} catch (FileNotFoundException fnfe){ System.out.println("File tidakditemukan."); return; // keluar dari method
}
// membaca data dari dalam file// dan menampilkan hasilnya ke layar consoletry {
char
while ((data = finput.read()) != -1) {// ketika ditampilkan, data dikonversi ke tipe
System.out.print((char) data); }
} catch (IOException ioe){ System.out.println(ioe.getMessage()); return;
}
// menutup filetry {finput.close();
} catch (IOException ioe) {}}
}
- Berikut contoh menuliskan data ke file
import java.io.*;class DemoTulisFile {
public static void main(String[] args) {
FileOutputStream foutput = null;String data = "Baris pertama ¥nBaris kedua ¥nBaris
ketiga";
// membuka filetry {
foutput = new FileOutputStream("d:/OUTPUT.TXT");} catch (FileNotFoundException fnfe)
{ System.out.println("File tidak dapatterbentuk."); return; // keluar dari method
}
// menulis data ke dalam filetry {
for (int i=0; i
-
8/15/2019 Handout Java (Copy).pdf
24/102
24
try {foutput.close();
} catch (IOException ioe) {}}
}
- Berikut demo menyalin isi suatu file ke dalam file lain
import java.io.*;class DemoSalinFile {
public static void main(String[] args) { FileInputStream finput = null;FileOutputStream foutput = null;int data;// membuka file inputtry {
finput = new FileInputStream("d:/FILE1.TXT");
} catch (FileNotFoundException fnfe){ System.out.println("File input tidakditemukan"); return; // keluar dari method
}// membuka file outputtry {
foutput = new FileOutputStream("d:/FILE2.TXT"); } catch (FileNotFoundException fnfe)
{ System.out.println("File output tidak dapatterbentuk");
return; // keluar dari method }
// membaca data dari file input // dan memasukkannya ke dalam file outputtry {
while ((data = finput.read()) != -1) {foutput.write(data);
}} catch (IOException ioe) {
System.out.println(ioe.getMessage());return;
}try
{ finput.close()
;foutput.close();} catch (IOException ioe) {}
}}
2.2 Kelas File
Kelas File menyediakan beragam fasilitas yang berhubungan dengan file dan informasinya. Dalam
teknologi Java, sebuah direktori adalah salah satu contoh bentuk file. Sebuah obyek File dapat dibuat
untuk merepresentasikan sebuah direktori dan menggunakannya untuk mengidentifikasi file lainnya.
Berikut ini cara membuat obyek File.
-
8/15/2019 Handout Java (Copy).pdf
25/102
25
File myFile;myFile = new File(“myfile.txt”) ; myFile = new File(“MyDocs” , “myfile.txt”) ;
a tau
File myDir = new File( “MyDocs”) ;myFile = new File(myDir, “myfile.txt”) ;
Bentuk konstruktor yang digunakan tergantung obyek File lainnya yang akan diakses. Sebagai
contoh, jika hanya menggunakan satu file, maka gunakan bentuk konstruktor yang pertama.
Tetapi, jika menggunakan beberapa file sekaligus dari sebuah direktori, maka akan lebih mudah
jika menggunakan bentuk yang kedua.
Berikut ini method-method untuk pengujian dan pengecekkan kelas File :1. boolean exists()
Method ini mengembalikan nilai boolean true jika file atau direktori yang dirujuk oleh
obyek File tersedia.
2. boolean isDirectory()
Method ini mengembalikan nilai boolean true jika obyek File merujuk ke sebuah direktori
dan false jika sebaliknya.
3. boolean isFile()
Method ini mengembalikan nilai boolean true jika obyek File merujuk ke sebuah file dan
false jika sebaliknya;
4. boolean canRead()
Method ini mengembalikan nilai boolean true jika proses pembacaan file yang dirujuk oleh
obyek File diizinkan dan false jika sebaliknya. Method ini dapat melemparkan exception
SecurityException jika akses untuk membaca file tidak diizinkan.
5. boolean canWrite()
Method ini mengembalikan nilai boolean true jika proses penulisan file yang dirujuk olehobyek File diizinkan dan false jika sebaliknya. Method ini dapat melemparkan exception
SecurityException jika akses untuk menulis ke file tidak diizinkan.
Berikut ini Method untuk mengakses obyek File1. String getName()
Mengembalikan obyek String yang berisikan nama file tanpa path nya. Untuk sebuah
obyek File yang merepresentasikan sebuah direktori, yang dikembalikan adalah nama
direktorinya saja.
-
8/15/2019 Handout Java (Copy).pdf
26/102
26
2. String getPath()
Mengembalikan obyek String yang berisikan path ke file tersebut termasuk nama file atau
direktorinya.
3. String getAbsolutePath()
Mengembalikan obyek String yang berisikan absolute path dari file atau direktori yangdirujuk oleh obyek File.
4. String getParent()
Mengembalikan obyek String yang berisikan nama direktori induk ( parent directory ) dari
file atau direktori yang di- refer oleh obyek File.5. String length()
Mengembalikan nilai (dalam bentuk long) berupa panjang byte dari obyek File yang
bersangkutan.
Berikut ini Method untuk memodfikasi obyek File :1. boolean renameTo(File newName)
Method ini digunakan untuk mengubah nama obyek File menjadi newName.2. boolean mkdir()
Method ini membuat sebuah direktori yang direpresentasikan oleh obyek File.3. boolean delete()
menghapus file atau direktori yang dirujuk oleh obyek File. Jika proses penghapusan
berhasil, method ini akan mengembalikan nila true .Kode program berikut ini membaca file teks dan mencetak setiap baris ke output standar:
Contoh
import java.io.*;public class ReadFile {
public static void main(String[] args) {File file = new File("D:/work/ngaco.txt");
try { //buat sebuah buffered reader untuk baca tiap baris fileBufferedReader in =
new BufferedReader(new FileReader(file));String s = in.readLine();
while(s != null){ System.out.println("read: " +s); s = in.readLine();
}in.close();
} catch(FileNotFoundException e1) {//if this file doesn't existSystem.err.println("file not found: " + file);
} catch(IOException e2) {//catch any other IO exceptione2.printStackTrace();
} }
}
-
8/15/2019 Handout Java (Copy).pdf
27/102
-
8/15/2019 Handout Java (Copy).pdf
28/102
28
2.3 Kelas StringBuffer
Obyek StringBuffer m e rup akan uru tan kara kte r Unicode yang dapa t diub ah (mu ta ble). D ianjurkanun tuk m enggunakan StringBuffer ke t ika m e m bu a t banyak m od ifikasi te rh adap su a tu String .
Berikut ini m e ru pakan bentuk-bentuk kon stru ktor yang ada di da la m ke las StringBuffer :
public StringBuffer()
Kon stru ktor ini m e m bu a t se bu ah ob yek StringBuffer yang koso ng. Sebaga i con toh :
StringBuffer sb1 = new StringBuffer();
public StringBuffer(int capacity)
Kon stru ktor ini m e m bu a t sebu ah obyek StringBuffer kosong dengan kapasitas se be sa r int .Sebaga i con toh :
StringBuffer sb 2 = ne w StringBuffe r(50 );
Kode di a tas akan m e m bu a t sebu ah ob yek StringBuffer yang m e m iliki kapasitas 50 kara kte r.
public StringBuffer(String string)
Kon stru ktor ini m e m bu a t sebuah obyek StringBuffer yang berisikan String te rtentu. Sebaga icon toh :
StringBuffer sb3 = new StringBuffer(“hell o world”) ;
Kode di a tas akan m e m bu a t re ferensi obyek be rt ipe StringBuffer sb3 dan m enginisia lisa sinyadenga n st ring “ hello world
” .
Berikut ini m e ru pakan method-method yang digunakan un tuk m e m od ifikasi ob yek StringBuffe r.
public synchronizedStringBuffer append(String s)
Method ini akan m e m od ifikasi StringBuffer dengan m enam bahkan String s di ujun g bu ff er .Ke las StringBuffer juga m e m iliki bentuk over loa ded method un tuk tipe para m e ter boolean ,char , char[] , double , float , long , dan Object . Berikut ini m e ru pakan con toh daripenggunaa n StringBuffer .
-
8/15/2019 Handout Java (Copy).pdf
29/102
29
StringBuffer sb = new StringBuffer("set ");
sb.append("point");
System.out.println( sb ); // "set point"
public synchronized StringBuffer insert(int offset,String s)
Method ini m e m od ifikasi StringBuffer dengan m ena m bahkan String s pada lokasi off settertentu. Ke las StringBuffer juga m e m iliki bentuk over loa ded method un tuk tipe para m e ter:boolean , char , char[] , double , float , long , dan Object . Sebaga i con toh :
StringBuffer sb = new StringBuffer("01234567");
sb.insert(4, "---");
System.out.println( sb ); // "0123---4567"
public synchronized StringBuffer reverse()
Method ini akan m e m ba likkan uru tan karakte r da ri ob yek StringBuffer . Sebaga i con toh :
StringBuffer sb = new StringBuffer("A man");
System.out.println( sb.reverse() );
2.4 Kelas Wra pp er Ke las Wrapper m e m iliki du a fun gsi uta m a, ya itu :
a . m enyediakan m ekanism e un tuk m e m bun gkus da ta prim it if ke da la m obyek sehingga da ta prim it ifini dapa t m enggu nakan op e ra si-op e ra si yang khu su s dipe ru ntukkan un tuk obyek, se pe rt ipena m bahan ke da la m koleksi a tau penge m ba lian da ri sebuah method yang m enge m ba likanse bu ah ob yek;
b. m enyediakan sa tu set fun gs i utility un tuk da ta prim it if. Sebagian be sa r dari fun gsi-fun gsi iniberhubungan dengan kon versi da ta prim it if da ri sa tu bentuk ke bentuk yang la inn ya, se baga icon toh , m engubah da ta prim it if ke da lam bentuk String dan se ba liknya , m engubah data prim it ifke da lam bentuk basis yang be rb eda-beda ( bina r y, octa l, dan decima l).
Se t iap da ta prim itif da la m Java m e m iliki ke las wrapper yang be rse su a ian. Sebaga i con toh , ke las wr a pp erun tuk int ada lah Integer , un tuk float ada lah Float , dan se baga inya. Yang pa tut diinga t ada lahna m a da ri ke las wrapper su atu da ta prim it if ada lah sa m a dengan tipe da ta prim it if yang berse su a iandengan hu ru f perta m anya da la m bentuk hu ru f besa r, kecua li un tuk t ipe da ta char dengan ke laswrapper Character , dan int denga n ke las wrapper Integer . Tabe l di baw ah ini m enun jukkan t ipeda ta prim it if dan ke las wrapper yang be rse su a ian :
-
8/15/2019 Handout Java (Copy).pdf
30/102
30
Data Primitif dan Kelas Wrapper yang Sejenis Beser ta Konstr uk tor nya
TIPEDATAPR IMITIF
KE LASWRAPPER
ARGUMENKO NSTR UKT OR
boolean Boolean boolean a tau String
byte Byte byte a tau String
char Character char
short Short short a tau String
int Integer int a tau String
long Long long a tau String
float Float float a tau String
double Double double a tau String
Obyek wrapper bersifa t immu ta ble, yang be ra rt i bahw a se ka li diberikan nila i pada sebuah obyek wr a pp er , nila inya tidak dapa t diub ah.
Se m ua ke las wr a pp er , (kecua li Character ), m enyediakan dua buah konstru ktor: sa tu kon stru ktorm enggunakan nila i prim it if yang be rse su a ian, dan kon stru ktor yang la in m enggu nakan String yangm e ru pakan re pre sentasi dari da ta prim it if yang akan dibun gkus di da lam ke las wr a pp er .
Integer i1 = new Integer(42);Integer i2 = new Integer(“42”) ;
a tau
Float f1 = new Float(3.14);
Float f2 = new Float(“3.14”) ;
Untuk ke las wrapper Character , ia hanya m enyediakan sa tu buah kon stru ktor, yang m enga m bil nila i char se baga i argu m en. Sebaga i con toh :
Character c1 = new Character(„c‟) ;
Method sta t ik valueOf() yang dise diakan di sebagian besa r ke las wrapper (ke cua li ke las wr a pp erCharacter ) m e m berikan cara la in un tuk m e m bu a t obyek wr a pp er . Method ini m enggunakanString yang m erepre se ntasikan da ta prim it if yang bersesu a ian se baga i argum en pe rtam a, danargu m en kedu a (jika ada ) se baga i basis da ri nila i pada argu m en pe rtam a . Sebaga i con toh :
-
8/15/2019 Handout Java (Copy).pdf
31/102
-
8/15/2019 Handout Java (Copy).pdf
32/102
-
8/15/2019 Handout Java (Copy).pdf
33/102
33
Ke las wrapper Integer dan Long m e m iliki bentuk ke tiga da ri method toString() . Method ini be rt ipe sta t ik, a rgu m en pert a m anya ada lah nila i prim itif yang be rsesu a ian, dan argu m en kedu anya m e rup akan basis. Method ini m enge m ba likan nila i berupa String yang m e re pre se ntasikan nila iprim it if da lam bentuk basis yang se su a i dengan argu m en kedu a nya. Sebaga i con toh :
System.out.println("hex = " + Long.toString(254,16); //"hex = fe"
2.5 Kelas Koleksi
Koleksi m e ru pakan obyek yang m e repre se ntasikan sekum pu lan ob yek. Obyek yang berada di da lamsebuah koleksi dise bu t e le m en. Koleksi biasa nya be rk a itan dengan be ra ga m tipe obyek yangkese m uanya m e ru pakan turu nan dari t ipe ob yek tertentu.
Collection – m e ru pakan se kum pu lan obyek yang disebu t se baga i e le m en. Im ple m entasi dari Collection ini akan m enentukan apakah ada atura n m engena i ord er ing tertentu danapakah dup likasi e le m en dipe rb olehkan di da lam nya.
Set – m e ru pakan sebu ah koleksi yang tidak m e m iliki a turan unordered di m ana di da la m nya tidak bo leh ada dup likasi e le m en.
List – m e ru pakan sebuah koleksi yang m e m iliki a tura n ordered di m ana di da lam nya dup likasi e le m en dipe rb olehkan.
Se m ua jenis koleksi m e m iliki re fe re nsi ke ob yek-ob yek dengan t ipe Object . Ha l ini m e m un gkinkanse m ua jenis obyek un tuk disim pan di da lam koleksi. Im plikasi dari e le m en da lam koleksi yang bert ipeObject ada lah ha rus digunakan proses ca st ing yang bena r ke t ika m enga m bil sebu ah e le m en darida lam koleksi.
Collection
+ add(element : Object) : boolean + remove(element : Object) : boolean + size() : int + isEmpty() : boolean + contains(element : Object) : boolean + iterator() : Iterator
Set
HashSet
List
+ add(index : int, element : Object) + remove(index : int) : Object + get(index : int) : Object + set(index : int) : Object + indexOf(element : Object) : int + listIterator() : ListIterator
ArrayList LinkedList
Inter f a ce Collection dan hira rk i ke lasny a.
Ke las HashSet m enyediakan im ple m entasi dari inter f ace Set se m entara ke las ArrayList danLinkedList m enyediakan im ple m entasi bagi inter f a ce List .
-
8/15/2019 Handout Java (Copy).pdf
34/102
34
2.5.1 Set
Da la m con toh kode be rikut ini, dideklara sikan sebuah variabe l (se t ) dengan t ipe Se t. La lu diinisia lisa sivariabe l ini dengan sebuah obyek HashS e t . Se lanjutnya ditam bahkan beberapa e le m en ke da la m nyadan m ence tak isi da ri va riabe l se t ke output stand a r.
Contoh 16.9
import java.util.*;
public class SetExample {
public static void main(String[] args)
{ Set set = new HashSet();
set.add("one");
set.add("second");
set.add(new Integer(4));
set.add("second"); //duplikasi, tidak ditambahkan
set.add(new Integer(4)); //duplikasi,tidak ditambahkan
System.out.println(set);
}
}
2.5.2 List Da la m con toh kod e be rikut ini, didekla ra sikan sebu ah va riabe l (list ) denga n tipe List . Se lanjutnya ,variabe l ini diinisia lisa si dengan sebuah obyek ArrayList . Se lanjutnya ditam bahkan b ebe ra pae le m en ke da lam nya dan m ence tak isi dari variabe l list ke output stand ar. Berbeda denga n con tohse be lum nya, pada con toh ini be rh asil dilakukan penam bahan e le m en yang te rd up likasi.
Contoh 16.10
import java.util.*;
public class ListExample {
public static void main(String[] args)
{ List list = new ArrayList();
list.add("one");
list.add("second");
list.add("3rd");
list.add(new Integer(4));
-
8/15/2019 Handout Java (Copy).pdf
35/102
-
8/15/2019 Handout Java (Copy).pdf
36/102
36
ListIterator be rg e ra k sa tu a ra h, ya itu bege ra k m a ju denga n m enggu nakan method next() a tau m undu r dengan m enggunakan method previous() . Jika m enggunakan m e thod previous()se te lah m enggu nakan method next() akan dipe ro leh e le m en se be lum m e m anggil method next() . Begitu juga se ba liknya.
Method set m engubah e le m en yang ditun juk oleh kurso r iter a tor . Method add m e na m bah e le m enbaru ke da lam koleksi pada po sisi sebe lum kurso r iter a tor . Dengan de m ikian, jika m e m anggil methodprevious se te leh pe m anggilan method add , akan dipe ro leh e le m en yang baru dim asukk an ke da la mkoleksi te rse bu t . Jika proses penye t inga n dan pena m bahan e le m en tidak didu kun g oleh koleksi yangbe rsa ngkutan, m aka UnsupportedOperationException akan dile m pa rkan.
-
8/15/2019 Handout Java (Copy).pdf
37/102
37
MODUL III
GRAPHICAL USER INTERFACE
Tujuan
- Memahami dan menguasai pembuatan dan pengaplikasian Graphical User Interface
6.1 Pemahaman Dasar Graphical User Interface
Pada modul-modul sebelumnya, program yang kita buat menggunakan console sebagai
antarmuka. Pada modul kali ini kita akan mempelajari antarmuka grafis yang dikenal dengan
nama Graphical User Interface (GUI). GUI merupakan antar muka grafis yang memfasilitasi
interaksi antara pengguna dengan program aplikasi. Berikut adalah contoh GUI.
Salah satu komponen dalam bahasa pemrograman Java untuk membangun GUI adalah
Swing . Komponen ini didefinisikan di dalam paket javax.swing . Swing diturunkan dari Abstract Windowing Toolkit dalam paket java.awt . Hirarki dari komponen Swing adalah
sebagai berikut
java.lang.Object
java.awt.Component
java.awt.Container
java.swing.JComponent
-
8/15/2019 Handout Java (Copy).pdf
38/102
38
JComponent adalah superclass dari semua komponen Swing. Sebagian besar fungsionalitas
komponen diturunkan dari superclass ini.
Beberapa komponen utama dalam GUI adalah:
1. Containers: merupakan wadah yang berfungsi untuk menempatkan komponen-komponen
lain di dalamnya.2. Canvas.: merupakan komponen GUI yang berfungsi untuk menampilkan gambar atau
untuk membuat program grafis. Dengan canvas, kita bisa menggambar berbagai bentuk
seperti lingkaran, segitiga, dll.
3. User Interface (UI) components: contohnya adalah buttons, list, simple popup menus,
check boxes, text fields, dan elemen lain
4. Komponen pembentuk window: seperti frames, menu bars, windows, dan dialog boxes.
6.2 Komponen-komponen Dasar User Interface dengan Swing Berikut adalah beberapa komponen dasar antarmuka pengguna ( user interface ) yang
disediakan oleh Swing:
1. Top level containers : adalah container dasar untuk meletakkan komponen-komponen lain.
Contohnya adalah JFrame, JDialog, dll.
2. Intermediate level containers : merupakan container perantara. Umumnya digunakan hanya
untuk meletakkan atau mengelompokkan komponen-komponen yang digunakan, baik itu
container atau berupa atomic component. Contoh dari Intermediate level container adalah
JPanel (panel).
3. Atomic component : merupakan komponen yang memiliki fungsi khusus. Umumnya
pengguna langsusng berinteraksi dengan komponen ini. Contohnya adalah JButton
(tombol), JLabel (label), JTextField, JTextArea (area untuk menulis teks), dll.
Sekarang kita akan berkenalan dengan Top Level Container, yaitu JFrame. Cobalah
jalankan kode program di bawah:
import javax.swing.*;
public class FrameSederhana{ public static void main(String[]args){ JFrame f1;f1 = new JFrame("Ini Frame lho...");f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f1.setSize(500,500);f1.setVisible(true);
}}
-
8/15/2019 Handout Java (Copy).pdf
39/102
39
Keluaran kode program di atas adalah frame berikut:
Konstruktor untuk membentuk JFrame adalah JFrame() atau JFrame(String
NamaFrame).
Salah satu method yang sering digunakan di kelas JFrame adalah
setDefaultCloseOperation(int ops ). Method ini berfungsi untuk mengatur apa
yang akan dilakukan oleh program ketika tombil close di klik. Parameter method tersebut di
antaranya adalah:
1. JFrame.DO_NOTHING_ON_CLOSE : tidak ada satu aktivitas pun yang dilakukan secara
otomatis apabila frame ditutup.
2. JFrame.HIDE_ON_CLOSE : frame hanya disembunyikan, namun secara fisik frame
masih ada di memori sehingga dapat dimunculkan kembali. Merupakan aktivitas default.3. JFrame.DISPOSE_ON_CLOSE : mengilangkan tampilan frame dari layar,
menghilangkannya dari memori, dan membebaskan resource yang dipakai.
4. JFrame.EXIT_ON_CLOSE : menghentikan eksekusi program.
Selain JFrame , top level container yang lain adalah JDialog . Berbeda dengan
JFrame , JDialog tidak dibuat berdiri sendiri, melainkan dibuat bersama-sama dengan frame
sebagai parent- nya. Jika frame parent- nya ditutup, maka dialog akan dihapus dari memori.
Kemunculan dialog akan membuat semua input terhadap frame parent -nya akan terblokir
sampai dialog tersebut ditutup. Berikut contoh JDialog.
-
8/15/2019 Handout Java (Copy).pdf
40/102
-
8/15/2019 Handout Java (Copy).pdf
41/102
41
import javax.swing.*;import java.awt.event.*;import java.awt.*;
public class DemoBorderLayout extends JFrame implements ActionListener{private JButton tombol[]; private String names[]={"Hilangkan North","Hilangkan South",
"Hilangkan East","Hilangkan West","Hilangkan Center"};
private BorderLayout lout;
public DemoBorderLayout(){super ("Ini Adalah Contoh Border Layout"); Container c = getContentPane();lout = new BorderLayout (10,10);c.setLayout(lout);tombol = new JButton[names.length];
for (int i=0 ; i < names.length;i++){ tombol[i] = newJButton(names[i]);tombol[i].addActionListener(this);
} c.add(tombol[0], BorderLayout.NORTH); c.add(tombol[1], BorderLayout.SOUTH);c.add(tombol[2], BorderLayout.EAST);c.add(tombol[3], BorderLayout.WEST);c.add(tombol[4], BorderLayout.CENTER);setSize (500,300);
}
public void actionPerformed(ActionEvent e){for(int i=0; i
-
8/15/2019 Handout Java (Copy).pdf
42/102
42
a. setAlignment(position_CONSTANT): adalah method untuk menentukan posisi
layout . Nilai positition_CONSTANT dapat berupa FlowLayout.LEFT,
FlowLayout.CENTER, atau FlowLayout.RIGHT , yang masing-masing mengatur posisi rata kiri, rata tengah, atau rata kanan.
b. layoutContainer(container) : method untuk melakukan update container .Coba pelajari kode program berikut:
import javax.swing.*;import java.awt.*;import java.awt.event.*; public class FlowLayoutTest extends JFrame {
public FlowLayoutTest(){ super("Contoh Flow Layout"); FlowLayout lay = new FlowLayout();lay.setAlignment(FlowLayout.RIGHT);lay.setVgap(25);//mengatur jarak vertikal antar komponenlay.setHgap(25);//mengatur jarak horisontal antar komponenContainer c = getContentPane();c.setLayout(lay);JButton t1 = new JButton("Tombol 1"); JButton t2 = new JButton("Tombol 2");JButton t3 = new JButton("Tombol 3");JButton t4 = new JButton("Tombol terpanjang no4"); JButton t5 = new JButton("Tombol 5");JButton t6 = new JButton("Tombol 6");c.add(t1);c.add(t2); c.add(t3); c.add(t4);
c.add(t5);c.add(t6);
} public static void main(String[] args){
FlowLayoutTest flt = new FlowLayoutTest();flt.setSize(500, 200);flt.setVisible(true);flt.addWindowListener(new WindowAdapter(){
public void windowsClosing(WindowEvent e){ System.exit(0);
}});
}
} Output program di atas adalah sebagai berikut
-
8/15/2019 Handout Java (Copy).pdf
43/102
43
6 .3 .3 Box Layout
saja.
Layout jenis ini meletakkan komponen-komponen dalam satu baris atau satu kolom
Pe lajar i con toh be rikut.
import javax.swing.*;import java.awt.*;
public class ContohBoxLayout extends JFrame{
public ContohBoxLayout(){ super("Contoh Box Layout Dalam Satu Baris"); Container c = getContentPane(); Box box = new Box(BoxLayout.X_AXIS);JTextArea t1 = new JTextArea("Praktikum java",10,15); JButton b1 = new JButton("Tombol 1");JButton b2 = new JButton("Tombol 2");JTextArea t2 = new JTextArea("Ilmu komputasi",10,15); box.add(new JScrollPane(t1));box.add(b1); box.add(b2);box.add(new JScrollPane(t2)); c.add(box);
}
public static void main(String[]args){ ContohBoxLayout cbl = newContohBoxLayout(); cbl.setSize(300, 300);cbl.setVisible(true);cbl.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}}
Keluarannya adalah
-
8/15/2019 Handout Java (Copy).pdf
44/102
44
6.3.4 Card Layout
Card Layout menampilkan container-container /panel-panel seperti tumpukan kartu.
Hanya satu container yang akan tampil untuk satu waktu. Pelajari kode berikut:
import javax.swing.*;import java.awt.*;
public class TestCardLayout extendsJFrame{ JPanel p1;JPanel p2; JRadioButton pil1, pil2, pil3;ButtonGroup radioGroup;JTextArea g;public TestCardLayout(){
super("Uji Coba Card Layout"); p1 = new JPanel();p2 = new JPanel(); pil1 = new JRadioButton("Pilihan 1",true);pil2 = new JRadioButton("Pilihan 2",false);pil3 = new JRadioButton("Pilihan 3",false);p1.add(pil1);p1.add(pil2); p1.add(pil3);radioGroup = new ButtonGroup(); radioGroup.add(pil1); radioGroup.add(pil2);radioGroup.add(pil3); g = new JTextArea("text area");p2.add(g); JTabbedPane tab = new JTabbedPane(); tab.add(p1,"Tab dengan Radio Button");tab.add(p2,"Tab dengan Text Area");Container c = getContentPane();c.add(tab, BorderLayout.NORTH);
} public static void main (String[] args){ TestCardLayout
tcl = new TestCardLayout();tcl.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); tcl.setSize(500,100);tcl.setVisible(true);
}}
Hasil dari program di atas adalah tampilan berikut
-
8/15/2019 Handout Java (Copy).pdf
45/102
45
6.3.5 Grid Layout
Grid layout merupakan layout manager berbentuk grid. Semua komponen dalam layout
ini memiliki ukuran yang sama. Konstruktor GridLayout adalah sebagai berikut.a. GridLayout(rows, columns, hGap, vGap) . Konstruktor ini mendefinisikan
jumlah baris, kolom, dan ukuran gap horisontal/vertikal antar elemen dalam pixel .
b. GridLayout(rows, columns) . Sama halnya dengan konstruktor pertama, namun
dengan nilai default hGap dan vGap sama dengan 0.
Pelajari kode program berikut:
import javax.swing.*;import java.awt.event.*;import java.awt.*;public class GridLayoutTest extends JFrame{
private JButton tombol[]; private String m[] = {"Satu","Dua","Tiga","Empat","Lima","Enam"};private Container c; private GridLayout g; public
GridLayoutTest(){ super("Demonstrasi GridLayout"); g = newGridLayout(2,3,5,5);c = getContentPane(); c.setLayout(g); tombol = new JButton[names.length];for(int i = 0; i
-
8/15/2019 Handout Java (Copy).pdf
46/102
46
Output program tersebut adalah tampilan berikut
6 .3 .6 Grid Bag Layout
Grid bag layout adalah pengaturan layout yang dapat digunakan untuk meletakkan
komponen secara bebas. Setiap komponen dapat menempati ukuran yang berbeda dengan
komnponen lainnya.
Setiap komponen dapat menempati lebih dari satu grid.Berikut ini langkah-langkah untuk menggunakan GridBagLayout :
1. Gambarkan terlebih dahulu desain GUI di kertas.2. Bagi GUI tersebut ke dalam beberapa grid mulai dari baris dan kolom 0. Hal ini dilakukan
untuk menempatkan komponen di posisi yang benar.
3. Buat sebuah objek GridBagConstraints , untuk menentukan bagaimana komponen-
komponen ditempatkan.4. Kemudian, definisikan variabel instance seperti berikut :
- gridx- kolom .
- gridy- bar is. - gridwidth- jum lah kolom yan g dialokas ikan . - gridheight - jum lah bar is yan g dialokas ikan . - weightx- ukuran ruan g ho rison tal. - weighty- ukuran ruan g ve rtikal.
5. Inisialisasi nilai weight ke nilai positif (nilai default adalah 0).6. Definisikan ins ta nce va r ia ble fill dari GridBagConstraints ke N O NE (def a ult),
VERTICAL, HO RIZO NTAL, atau BO TH.
-
8/15/2019 Handout Java (Copy).pdf
47/102
47
7. Definisikan Instance variable anchor ke NO RTH , NO RTHEAST, EAST, SO UTHEAST, SO UTH, SO UTHW EST, W EST, NO RTHW EST, atau CENTER (nilai default ).
8. Masukkan komponen dan GridBagConstraints ke method setConstraints milik
kelas GridBagLayout.
gbLayout.setConstraints(c, gbConstraints ); 9. Setelah constraints ditentukan, tambahkan komponen ke ContentPane .
container.add (c);
Untuk lebih memahami penggunaan GridBagLayout , pelajari contoh kode program berikut
ini .
import javax.swing.*;import java.awt.*;
public class UjiGbl{ JFrame
f; GridBagLayout gbl;GridBagConstraints c;
public UjiGbl(){f = new JFrame("Contoh GridBagLayout"); gbl = new GridBagLayout(); c = new GridBagConstraints();f.getContentPane().setLayout(gbl);c.fill =GridBagConstraints.HORIZONTAL;
JButton j1 = new JButton(" 1 ");c.weightx = 2;//ukuran ruang horizontal
c.gridx = 0; // menempati kolom 0c.gridy = 0; // menempati baris 0gbl.setConstraints(j1,c);f.getContentPane().add(j1);
JButton j2 = new JButton(" 2 ");c.gridx = 1; // menempati kolom 1c.gridy = 0; // menempati baris 0gbl.setConstraints(j2,c);f.getContentPane().add(j2);
JButton j3 = new JButton(" 3 ");c.ipady = 30;//tingginya ditambah c.gridwidth = 2;// tombol menempati dua kolom
c.gridx = 0; // menempati kolom 0c.gridy = 1; // menempati baris 1gbl.setConstraints(j3,c);f.getContentPane().add(j3);
JButton j4 = new JButton(" 4 "); c.ipady = 50;//tingginya ditambahc.gridwidth = 1;// tombol menempati satu kolom c.gridx = 0; // menempati kolom 0c.gridy = 2; // menempati baris 2gbl.setConstraints(j4,c);f.getContentPane().add(j4);
JButton j5 = new JButton(" 5 "); c.ipady = 0;//tingginya normalc.gridwidth = 1;// tombol menempati satu kolom c.gridx = 1; // menempati kolom 1 c.gridy = 2; // menempati baris 2c.anchor = GridBagConstraints.SOUTH;
-
8/15/2019 Handout Java (Copy).pdf
48/102
48
import javax.swing.SpringLayout;
import javax.swing.JFrame;
gbl.setConstraints(j5,c);f.getContentPane().add(j5);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();f.setVisible(true);
}
public static void main(String[]args){ UjiGbl ugbl = newUjiGbl();
} }
Output dari program tersebut adalah:
6 .3 .7 Spring Layout
Ini adalah pengaturan tata letak yang sangat fleksibel, dan dapat meniru fitur-fitur
layout manager yang lain. Pada layout ini, ukuran komponen dapat berubah-ubah secara
ototmatis jika ukuran window diubah. Pelajari contoh kode program berikut:
import javax.swing.JTextField;import javax.swing.JLabel;
import java.awt.Container;public class
ContohSpring{ JFrame f;Container c; SpringLayout l;JLabel label;JTextField t;
public ContohSpring(){f = new JFrame("Demo SpringLayout");f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); c = f.getContentPane();l = new SpringLayout();c.setLayout(l); label = new JLabel("Ini label");t = new JTextField("Tuliskan Teks", 20); c.add(label); c.add(t);
-
8/15/2019 Handout Java (Copy).pdf
49/102
49
//mengatur batasan (constraint) untuk label sehingga berada//di posisi (20,10)
l.putConstraint(SpringLayout.WEST,label,20,SpringLayout.WEST, c);l.putConstraint(SpringLayout.NORTH,label,10,SpringLayout.NORTH, c);
//mengatur batasan untuk text field supaya posisinya di//(sisi_kanan_label+10,10)
l.putConstraint(SpringLayout.WEST,t,10,SpringLayout.EAST, label);l.putConstraint(SpringLayout.NORTH,t,10,SpringLayout.NORTH, c);
//mengatur posisi content pane: sisi kanannya 5 pixel di luar sisi//kanan textField dan sisi kirinya 5 pixel di bawah sisi bawah //komponen terpanjang
l.putConstraint(SpringLayout.EAST,c,5,SpringLayout.EAST, t);l.putConstraint(SpringLayout.SOUTH,c,5,SpringLayout.SOUTH,t); f.pack();f.show();
}public static void main(String[] args){
ContohSpring cs = new ContohSpring(); }
}
6.4 Event Handler
Event adalah peristiwa atau kejadian yang dibangkitkan atau distimulasi oleh pengguna
terhadap GUI. Untuk mendeteksi dan menangani apa yang dilakukan oleh pengguna terhadap
GUI, diperlukan suatu mekanisme yang disebut Event Handling . Mekanisme event handling pada bahasa Java ditangani oleh event handling component , yang terbagi menjadi dua bagian,
yaitu event listener dan event handler .
Ilustrasi dari mekanisme event handling adalah sebagai berikut. Misalkan suatu button
di tekan. Maka terciptalah suatu objek event , yaitu kejadian ditekannya button . Kejadian atau
event itu ditangkap oleh event listener . Selanjutnya event tersebut harus ditangani oleh program
dengan memanggil method event handler . Method tersebut berisi blok kode program yang
melakukan suatu proses sebagai respon atas terjadinya event tersebut.
Sebuah objek event mempunyai sebuah kelas event sebagai acuan bagi tipe datanya.
Kelas event memiliki akar hirarki yaitu kelas EventObject. Kelas ini berada di package
java.util. Kelas AWTEvent merupakan turunan dari kelas EventObject. Kelas AWTEvent
didefinisikan dalam package java.awt.
Berikut ini adalah daftar kelas yang merupakan turunan dari kelas AWTEvent.
1. ComponentEvent : turunan dari AWTEvent , dijalankan ketika sebuah komponen
dijalankan, di resize , dibuat terlihat, atau disembunyikan.
-
8/15/2019 Handout Java (Copy).pdf
50/102
50
2. InputEvent : turunan dari kelas ComponentEvent dan Abstract root class Event
untuk semua komponen input.
3. KeyEvent : turunan dari kelas InputEvent , dijalankan saat sebuah key pada keyboard
ditekan, dilepas, atau diketikkan.
4. ItemEvent : turunan dari kelas AWTEvent , dijalankan ketika sebuah item dipilih seperti pada combo box dan list .
5. ActionEvent : turunan dari kelas AWTEvent , dijalankan ketika sebuah tombol ditekan,
melakukan double click pada daftar item, atau memilih menu.
6. MouseEvent : turunan dari kelas InputEvent , dijalankan ketika pengguna melakukan
sesuatu terhadap mouse, seperti, ditekan, dilepas, diklik, masuk atau keluar window, di
drag, dll.
7. TextEvent: turunan dari kelas AWTEvent , dijalankan ketika sebuah nilai text berubah
8. WindowEvent : turunan dari kelas ComponentEvent , dijalankan ketika pengguna
melakukan sesuatu terhadap window, seperti dibuka, ditutup, diaktifkan, atau dinon-
aktifkan.
Even t Listener ad alah ke las yan g me ngim ple m e tas i inter f a ce Listene r. Bebe rap a even t
listener yang sering digunakan adalah:
1. ActionListener : listener yang bereaksi j ika terjadi event pada mouse atau keyboard.
2. MouseListener : listener yang bereaksi atas event yang terjadi pada mouse.
3. MouseMotionListener : menyediakan beberapa method untuk memantau perubahan
mouse seperti drag atau perpindahan mouse.
4. WindowListener : listener yang bereaksi atas event yang terjadi pada window.
Untuk lebih jelasnya, pelajari dan jalankan kode program berikut:
import javax.swing.*;import java.awt.*;import java.awt.event.*;
public class EventHandling{ privateJButton b1, b2; privateJTextField t1, t2; privateJPanel panel1,panel2; privateJLabel l1, l2;private JFrame f; private double a, b, c; private String konv1 = "Suhu dalam Celcius adalah...";private String konv2 = "Suhu dalam Fahrenheit adalah...";
public EventHandling(){f = new JFrame("Konversi Suhu");b1 = new JButton("Konversi ke Fahrenheit"); b2 = new JButton("Konversi ke Celcius");
-
8/15/2019 Handout Java (Copy).pdf
51/102
51
l1 = new JLabel("Suhu dalam Celcius");l2 = new JLabel("Suhu dalam Fahrenheit"); t1 = new JTextField(10);t2 = new JTextField(10);
}
public voidhitungSuhu(){ panel1 =new JPanel(); panel2 =new JPanel();b1.addActionListener(new FahrenheitHandler());b2.addActionListener(new CelciusHandler());panel1.add(l1);panel1.add(t1);panel1.add(b1);panel2.add(l2);panel2.add(t2);panel2.add(b2);JTabbedPane tab = new JTabbedPane();tab.add(panel1,"Celcius ke Fahrenheit");
tab.add(panel2,"Fahrenheit ke Celcius");f.getContentPane().add(tab, BorderLayout.NORTH);f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(600,100);f.setVisible(true);
}
private class FahrenheitHandler implements ActionListener{public void actionPerformed(ActionEvent e){try{ a = Double.parseDouble(t1.getText()); b = a*1.8+32;JOptionPane.showConfirmDialog(null,konv2+b,"Hasil",JOptionPane.OK_CANCEL_OPTION,JOptionPane.INFORMATION_MESSAGE)
;}catch(Exception j){ JOptionPane.showConfirmDialog(null,"Masukkan Angka!","Error",JOptionPane.OK_CANCEL_OPTION,JOptionPane.INFORMATION_MESSAGE);} }
}
private class CelciusHandler implements ActionListener{public void actionPerformed(ActionEvent e){ try{a = Double.parseDouble(t2.getText());
b = (a-32)/1.8;JOptionPane.showConfirmDialog(null,konv1+b,"Hasil",JOptionPane.OK_CANCEL_OPTION,JOptionPane.INFORMATION_MESSAGE);}catch(Exceptionj){ JOptionPane.showConfirmDialog(null,"MasukkanAngka!","Error",JOptionPane.OK_CANCEL_OPTION,JOptionPane.INFORMATION_MESSAGE);} }
}public static void main(String[] args){
EventHandling eh = new EventHandling();eh.hitungSuhu(); }
}
-
8/15/2019 Handout Java (Copy).pdf
52/102
52
Hasil dari kode di atas adalah program untuk mengkonversi suhu dengan tampilan berikut:
Latihan
Buatlah program berbasis GUI yang menerima inputan dua buah bilangan dan dapat melakukan
operasi penjumlahan, pengurangan, perkalian, dan pembagian dua bilangan tersebut, lalu
menampilkan hasilnya!
-
8/15/2019 Handout Java (Copy).pdf
53/102
53
MODUL IV
NETBEANS DAN JAVA DATABASE CONNECTION
Tu jua n
- Mengetahui kegunaan dan mampu menggunakan netbeans
- Memahami konsep Java Database Connection dan Java Applet, dan mampu
mengimplementasikannya
7.1 Netbeans
Netbeans adalah suatu perangkat lunak yang mempunyai fungsi sebagai platform
framework Java untuk aplikasi desktop dan sebagai integrated development environment (IDE)untuk membangun aplikasi yang menggunakan java, javaScript, PHP, C, C++, dan lain-lain.
Netbeans dapat diunduh secara gratis dari website www.netbeans.org. Pada praktikum kali ini
digunakan Netbeans IDE 6.9.1 dan JDK 1.6.0_22.
Dalam netbeans, semua perancangan dan pemrograman dibuat dalam kerangka Project.
Project merupakan sekumpulan file yang dikelompokkan di dalam suatu kesatuan. Untuk
mennguanakan Netbeans dalam pemrograman Java kita buat dulu project . Langkah-langkahnya
adalah:
1. Buka netbeans
2. Lalu klik menu file > new project
3. Setelah kotak dialog new project terbuka, pada kolom categories pilih Java, lalu padakolom projects pilih Java Application . Kemudian klik next.
http://www.netbeans.org/http://www.netbeans.org/
-
8/15/2019 Handout Java (Copy).pdf
54/102
54
4. Maka akan muncul tampilan seperti di bawah. Lalu klik Finish
Project otom a tiste lah m em iliki m ain class denga n nam a yang sam a denga n
-
8/15/2019 Handout Java (Copy).pdf
55/102
-
8/15/2019 Handout Java (Copy).pdf
56/102
-
8/15/2019 Handout Java (Copy).pdf
57/102
-
8/15/2019 Handout Java (Copy).pdf
58/102
58
ini JFram e (W ork Area)
Untuk memulai membuat interface, drag komponen Label dari Swing Containers ke dalam
work area. Lalu drag komponen-komponen lain seperti Text Field, Button, dan Text Area
sehingga terbentuk GUI seperti gambar di bawah
Setelah membuat kelas GUI, kita akan membuat action dari tombol masukkan . Untuk
menyisispkan action , klik kanan pada tombol masukkan, lalu pilih Events > Action >
actionPerformed . Maka akan muncul jendela berikut
-
8/15/2019 Handout Java (Copy).pdf
59/102
59
Di jendela inilah kita akan menuliskan kode program action dari tombol Masukkan . Di dalam blok metho d jButton1ActionPerformed() , tuliskan kode berikut:
Compile dan run kelas FormIsian.java , maka akan keluar tampilan GUI berikut:
-
8/15/2019 Handout Java (Copy).pdf
60/102
60
7.2 Java Database Connectivity (JDBC)
Java Database Connectivity (JDBC) adalah suatu fungsi dalam java yang
menghubungkan aplikasi yang dibangun dengan menggunakan bahasa Java dengan database .
JDBC adalah versi ODBC yang dibuat oleh Sun Microsystem. JDBC dibangun dengan Java
API dapat digunakan untuk lintas platform dan didasarkan pada X/Open SQL Level Interface.Dengan menggunakan JDBC API, database dari vendor-vendor ternama seperti Oracle,
Sysbase, dan lain-lain dapat diakses. Kita dapat melakukan pengiriman perintah-perintah SQL
RDBMS. Kelas-kelas serta interface-interface JDBC API dapat diakses dalam package java.sql
(core API) atau javax.sql(standard extension API).
Untuk dapat mengakses database di server kita membutuhkan driver . Setiap server dari
vendor yang berbeda mempunyai driver yang berbeda-beda. Driver dapat diunduh di alama t
http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html
Pada Netbeans 6.9.1 sudah terdapat beberapa driver yang dapat digunakan langsung. Diantaranya ialah Java DB, MySQL, dan PostgreSQL. Untuk menggunakannya, tinggal klik
kanan pada folder library pada project yang dibuat, lulu pilih driver yang akan kita pakai.
Nama driver berbeda-beda untuk setiap database yang digunakan. Berikut adalah nama-
nama driver untuk database :
- sun.jdbc.odbc.jdbcOdbcDriver (untuk MS Access)
- oracle.jdbc.driver.OracleDriver (untuk Oracle)
- org.gjt.mm.mysql.Driver (untuk MySQL)
Sintaks yang digunakan untuk menginisialisasi driver adalah
Class.forName(“nama driver”);
Setiap database mempunyai nama URL, di antaranya:
- jdbc:odbc:nama_database (untuk MS Access)
- jdbc:oracle:thin:localhost:1521:ORCL (untuk Oracle)
- jdbc:mysql://localhost/nama_database (untuk MySQL)
Sintaks yang digunakan untuk koneksi ke data base menggunakan URL adalah
Connection koneksi = DriverManager.getConnection(“nama_URL”,”userID”,”password”)
7.2.1 Menggunakan Database
Kelas pada Java yang digunakan untuk mengeksekusi suatu query adalah Statement .
Kelas ini digunakan setelah menginisialisasi variabel koneksi pada Connection. Misalkan
variabel koneksinya adalah koneksi , maka
Statement stm = koneksi.createStatement();
Suatu query diakhiri dengan cara menutup variabel statement yang sudah diinisialisasi.
Misalkan variabel statementnya adalah stm , maka sintaks untuk menutup variabel statement
tersebiut adalah stm.close() .
http://www.oracle.com/technetwork/database/features/jdbc/index-091264.htmlhttp://www.oracle.com/technetwork/database/features/jdbc/index-091264.htmlhttp://www.oracle.com/technetwork/database/features/jdbc/index-091264.htmlhttp://www.oracle.com/technetwork/database/features/jdbc/index-091264.html
-
8/15/2019 Handout Java (Copy).pdf
61/102
61
Setelah variabel statement selesai diinisialisasi, selanjutnya kita inisialisasi variabel
ResultSet yang akan digunakan untuk menyimpan suatu baris record pada database.
Artinya, variabel ini adalah pointer yang akan menunjuk suatu baris pada table. Sintaksnya
adalah
ResultSet variabelSet;Untuk mengakhiri koneksi ke database gunakan sintaks berikut (misalkan nama
variabel koneksinya adalah koneksi )
Koneksi.close()
7.2.2 Contoh kasus
Mari kita lihat contoh kasus penggunaan database. Database yang akan digunakan pada
praktikum kali ini adalah “Oracle Database 10g Express Editi on” yang bisa diunduh di alamat:
http://www.oracle.com/technetwork/database/express-edition/downloads/102xewinsoft-090667.html
Ada tiga versi untuk oracle express edition, untuk Windows formatnya EXE, untuk
Linux turunan Debian Formatnya DEB, untuk Linux turunan Redhat formatnya RPM. Di
praktikum ini akan digunakan untuk versi Windows.
Berikut langkah-langkah untuk menginstal Oracle Database 10g Express Edition. Buka
file installernya, setelah itu tunggu sampai proses selesai :
http://www.oracle.com/technetwork/database/express-edition/downloads/102xewinsoft-http://www.oracle.com/technetwork/database/express-edition/downloads/102xewinsoft-
-
8/15/2019 Handout Java (Copy).pdf
62/102
-
8/15/2019 Handout Java (Copy).pdf
63/102
63
Setelah itu tentukan lokasi untuk tempat file instalasi Oracle XE tersebut, setelah itu klik next :
Ketikkan password yang anda inginkan sebagai password untuk user, setelah itu klik next :
Gambar di atas adalah tampilan hasil instalasi, dan jangan lupa dicatat untuk portnya, setelahitu klik INSTALL :
-
8/15/2019 Handout Java (Copy).pdf
64/102
64
Tunggu sampai proses instalasi selesai …
Setelah selesai ceklis “L aunch the database homepag e” dan klik finish, maka akan keluar
browser yang membuat homepage database oracle express edition :
Setelah itu login menggunakan user SYSTEM dan password yang tadi dimasukkan saat proses
instalasi. Selesai.
-
8/15/2019 Handout Java (Copy).pdf
65/102
65
Sekarang login ke Oracle XE lewat menu :
Setelah browsernya tampil, masukkan username SYSTEM dan password sesuai dengan
password yang anda buat pada saat instalasi :
Setelah itu masuk ke bagian ADMINISTRATOR – > DATABASE USERS – > CREATE
USER :
Setelah itu buat user baru, otomatis pula akan terbuat schema baru :
-
8/15/2019 Handout Java (Copy).pdf
66/102
66
Setelah selesai, tekan tombol CREATE , dan sekarang kita sudah berhasil membuat user
sekaligus schema baru di Oracle XE dengan nama schema “be lajar ”. Sekarang anda bisa login
pada awal halaman website Oracle XE tadi dengan user “b elajar ” dan password yang anda
masukkan.
Setelah itu anda log out , lalu coba login lagi dengan username “be lajar ” dan password
yang anda buat tadi.
-
8/15/2019 Handout Java (Copy).pdf
67/102
-
8/15/2019 Handout Java (Copy).pdf
68/102
-
8/15/2019 Handout Java (Copy).pdf
69/102
69
Selanjutnya pada menu Primary key kita pilih “ Nim ” sebagai primary key. Ini akan
mengakibatk an “ Nim ” tertentu hanya bisa dimiliki oleh satu orang (unik).
Selanjutnya menu Foreign Key bisa dilewati. Menu constraints juga bisa dilewati, karena
dengan memilih primary key otomatis akan terbentuk constraints . Lalu masuk ke menu
confirm . Akan tampil tampilan berikut
Setelah itu, klik tombol Create . Maka akan muncul tampilan yang memperlihatkan tabel
database MAHASISWA
-
8/15/2019 Handout Java (Copy).pdf
70/102
70
Sekarang kita lakukan setting Oracle di Netbeans. Tapi sebelumnya anda harus punya
driver oraclenya terlebih dahulu. Tapi tak perlu khawatir karena waktu anda menginstall oracle
xe, otomatis driver nya ikut terinstal. Coba lihat di folder
“C:¥oraclexe¥app¥oracle¥product¥10.2.0¥server¥jdbc¥lib ”, disana ada file “ojdbc14.jar ”
yang digunakan sebagai drivernya.
Sekarang jalankan Netbeans, lalu masuk ke bagian SERVICE :
Setelah itu klik kanan treeitem Drivers lalu pilih New Driver :
-
8/15/2019 Handout Java (Copy).pdf
71/102
71
Setelah keluar dialog
“ojdbc14.jar ” tadi, lalu
New JDBC Driver, tinggal klik tombol Add, lalu masukkan file
ubah Driver Classnya jadi “o racle.jdbc.driver.OracleDriver ”, kalau
nama kelasnya terserah :
Setelah selesai klik tombol OK, dan sekarang driver Oracle sudah terinstall di Netbeans ,
tinggal kita buat koneksi ke schema BELAJAR yang sebelumnya kita buat :
Caranya klik kanan nama driver oraclenya, misalkan namanya Oracle OCI. Setelah itu itu klik
Connect Using :
-
8/15/2019 Handout Java (Copy).pdf
72/102
72
Setelah itu isi atributnya seperti dibawah ini :
Untuk host nya gunakan localhost, dan untuk SID kita pakai XE karena Kita memakai Oracle
Express Edition, sedangkan portnya 1521, soalnya pada saat proses instalasi Oracle XE
menggunakan port ini, untuk username dan password kita gunakan username dan password
yang telah kita buat sebelumnya.
Setelah itu klik tombol OK :
Pilih schema BELAJAR, karena kita menggunakan user BELAJAR,setelah itu klik OK :
-
8/15/2019 Handout Java (Copy).pdf
73/102
73
Selesai.Selanjutnya klik kanan pada folder Tables lalu pilih create tables
Akan muncul tampilan berikut. Isi Table Name dengan nama tabel yaitu MAHASISWA. Lalu
klik Add Column .
Buat kolom-kolom “n ama”, “ Nim ”, dan “ fakultas ” seperti gambar berikut:
-
8/15/2019 Handout Java (Copy).pdf
74/102
-
8/15/2019 Handout Java (Copy).pdf
75/102
75
Selanjutnya pada project AplikasiJava yang sudah kita buat sebelumnya, lakukan
perubahan pada kelas FormIsian yaitu menambahkan tombol “Tampilkan ”, menghapus
textArea dari panel, dan menambahkan komponen JTable dengan nama jTable1 . Buat
desainnya seperti gambar di bawah ini:
Setelah itu tambahkan driver Oracle Database 10g Express Edition dengan cara klik kanan pada
folder Libraries , lalu pilih add Library , maka akan muncul tampilan berikut
-
8/15/2019 Handout Java (Copy).pdf
76/102
76
Tekan tombol Create. Akan muncul dialog berikut:
Isikan nama library, misalkan namanya JDBC-Oracle. Klik OK.
Setelah muncul tampilan berikut, klik Add JAR/Folder
-
8/15/2019 Handout Java (Copy).pdf
77/102
77
Setelah muncul jendela Browse JAR/Folder , cari tempat di mana driver -nya disimpan, misalkandisimpan di
C:¥oraclexe¥app¥oracle¥product¥10.2.0¥server¥jdbc¥lib¥ojdbc14.jar .
-
8/15/2019 Handout Java (Copy).pdf
78/102
-
8/15/2019 Handout Java (Copy).pdf
79/102
79
Setelah membuat kelas DataBase.java , selanjutnya modifikasi kelas Mahasiswa.java
dengan menambahkan dua method saveMahasiswa dan getMahasiswa (tambahkan
import java.sql.ResultSet dan import Data.DataBase ). Berikut sintaks untuk
kedua method tambahan tersebut
public voidsaveMahasiswa(){ DataBase d1= new DataBase(); int i;String s = "INSERT INTO MAHASISWA VALUES('"+this.nama+"','"+this.Nim+"', '"+this.fakultas+"')";i = d1.query(s);if(i==1){
javax.swing.JOptionPane.showMessageDialog(null,"insert berhasil"); }else{javax.swing.JOptionPane.showMessageDialog(null,"insert gagal");}
}
public ResultSetgetMahasiswa(){ ResultSet rs =null;DataBase db1 = new DataBase();String str ="Select * From MAHASISWA"; rs = db1.getData(str);return rs;
}
Setelah itu, perlu ditambahkan action listener pada button di kelas FormIsian.java untuk
menangkap event yang terjadi pada tombol “Masukk an” dan “Tampilk an”. Sintaks kode action listener untuk tombol “Masukk an” adalah:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { Mahasiswa m = new Mahasiswa(jTextField1.getText(),Integer.parseInt(jTextField2.getText()),jTextField3.getText());m.saveMahasiswa();jTextField1.setText("");jTextField2.setText("");jTextField3.setText("");
}
Sedangkan sintaks kode action listener untuk tombol “Tampilk an” adalah:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { Mahasiswa m = new Mahasiswa();ResultSet rs = null;rs = m.getMahasiswa(); int i = 0 ;try{
while(rs.next()){ jTable1.setValueAt(rs.getString("nama"),i,0);jTable1.setValueAt(rs.getString("Nim"),i,1);jTable1.setValueAt(rs.getString("fakultas"),i,2); i++;
} rs.close();
}catch(SQLException ex){ Logger.getLogger(FormIsian.class.getName()).log(Level.SEVERE,null,ex);
}}
-
8/15/2019 Handout Java (Copy).pdf
80/102
80
Selanjutnya lakukan deploy aplikasi ini dengan mengklik Run > Clean and Build Project atau
tekan Shift + F121. Berikut output dari program tersebut:
Memasukkan data
Menampilkan data:
-
8/15/2019 Handout Java (Copy).pdf
81/102
81 Modul Java Politeknik Gajah Tunggal
Latihan
1. Buatlah sebuah kelas yang dinamakan CalculatorGUI yang mengimplementasikan disainGUI seperti di bawah ini :
Terdapat text field pada bagian atas frame (diguanakan untuk menampilkan hasil perhitungan) dan sebuah kumpulan tombol yang berukuran 4 x 4 (16 buah). sebuah label
juga dapat digunakan untuk menampilkan hasil perhitungan.
(sumber: 2)
2. Buatlah sebuah database untuk menyimpan data-data karyawan sebuah perusahaan, yangterdiri dari: NIP, Nama, Alamat, Tempat Lahir, Tanggal Lahir, Jabatan, Gaji.Lalu buatlah GUI untuk menampilkan seluruh data karyawan tersebut.
-
8/15/2019 Handout Java (Copy).pdf
82/102
82 Modul Java Politeknik Gajah Tunggal
MODUL 4
GUI dan Database My-SQL
1. Sebelumnya kita install dulu netbeans dengan jdk 1.5.0_7 atau versi diatasnya.
2. lalu kalau sudah terinstall, pilih File->New Project.Disini kita akan bikin project dan otomatis akan terbentuk Main.java3. klo sudah kita pilih File ->New File ada banyak tipe java disitu,kita pilih
Java GUI Form -> sesuai anak panah.
-
8/15/2019 Handout Java (Copy).pdf
83/102
83 Modul Java Politeknik Gajah Tunggal
4. lalu isi nama Classnya dan pilih packagenya sesuai anak panah.
5. kalau sudah pilih Finish.kita akan mulai membuat Form seperti pada tampilan dibawah ini
-
8/15/2019 Handout Java (Copy).pdf
84/102
84 Modul Java Politeknik Gajah Tunggal
:: Tutorial Membuat Tabel ::
1. Pertama kita membuat Table dengan Mendrag JTable pada Palette. Kita beri nama dgnklik kanan pilih “change variable name” , kita beri nama misal : “table”
2. Pilih Table klik kanan Properties,seperti gambar dibawah ini : -Pilih Inspector lalu -pilih
JScrollpane1 - pilih JTable.Utk
PengeditanTablenya
-
8/15/2019 Handout Java (Copy).pdf
85/102
85 Modul Java Politeknik Gajah Tunggal
3. kita buat kolom dengan klik Model lalu isi nama kolom – kolomnya seperti gambardibawah ini sesuai anak panah :
-
8/15/2019 Handout Java (Copy).pdf
86/102
86 Modul Java Politeknik Gajah Tunggal
4. Kalau sudah klik OK tinggal kita setting di source code nya.Pada baris paling akhir di sourcenya sebelum } paling akhir kita bikin objek untuk TableModel langsung ketik coding dibawah ini :
private javax.swing.table.DefaultTableModel tblModel = getDefaultTabelModel();
5. lalu kita buat fungsi getDefaultTabelModel(); dan Tabel untuk pengaturantable nya seperti pada gambar dibawah ini, juga diketik secara manual:
Nama Kolom di Tabel
6. Setelah itu kita setting di konstruktornya ,untuk pengaturan lebar kolomnya :Tambahin source code berikut :
// kita modelkan tablenya sesuai dgn objektblModel tabel.setModel(tblModel);
// kita kirim data ke fungsi Tabel :nama tabelnya,dan lebar tiap kolom2nya Tabel(tabel,new int[]{120,180,120,120});
7. Cara menginput data kedalam ke JTable : Pertama kali kita deklarasikan dulu variable array satu dimensi diluar fungsi supayadikenal disemua fungsi yang lain.
String data[] = new String[4];
4 adalah jumlah kolom dalam tabel
Didalam fungsi private void cmdsimpanactionperformed..
-
8/15/2019 Handout Java (Copy).pdf
87/102
-
8/15/2019 Handout Java (Copy).pdf
88/102
88 Modul Java Politeknik Gajah Tunggal
Dengan coding diatas maka secara otomatis jika kita klik 2x baris dalam JTable makadata dalam baris terpilih akan muncul dalam Form kemudian bisa kita edit dan delete.
9. Cara Mengedit Data Dalam JTable
Setelah data muncul dalam Form untuk mengeditnya ikuti coding dibawah ini :
10. Cara Menghapus Data Dalam JTable Ketikan Coding Dibawah Ini :
private void cmdhapusActionPerformed(java.awt.event.ActionEvent evt) { tblModel.removeRow(row);
}
-
8/15/2019 Handout Java (Copy).pdf
89/102
89 Modul Java Politeknik Gajah Tunggal
Belajar SQL(Structured Query Language)
1 Untuk belajar SQL bisa menggunakan MysQL Server di Dos untuk menjalankan Querynya ataudengan editor dari suatu MySQL yaitu MySQL Front,SQL Yog, dll.
2 SQL adalah standarisasi
SQL adalah sebuah ANSI (American National Standards Institute) yaitu standar bahasa komputeryang digunakan untuk mengakses dan memanipulasi sebuah database. Perintah SQL ini digunakan untuk menemukan dan merubah data di dalam database. SQL bekerja dengan programdatabase seperti MS Access, DB2, Informix, MS SQL Server, Oracle, Sybase, dll.
Dalam banyak hal, terdapat perbedaan di dalam setiap versi dari Bahasa SQL ini, tetapiperbedaan tersebut tetap harus mengacu kepada standar ANSI. Yaitu perbedaan tersebut tidakmenghilangkan perintah standar yang sudah ada sebelumnya seperti SELECT, UPDATE, DELETE,INSERT, WHERE, and others.
3 SQL sebagai tabel basis data
Sebuah database selalu terdiri dari satu atau lebih tabel. Sebuah tabel diidentifikasi dengansebuah nama seperti “Customers ” atau “Orders ”. Tabel terdiri dari record-record (rows) dengandata didalamnya.
Sebagai contoh dapat kita lihat tabel “Peserta” dibawah ini :
nm_dpn nm_blkg Alamat Kota Parto Listio JL.Bungur 10 Ulujami Sandi Puspita Jl.Merdeka IX Pesanggrahan Mira Dahlia Jl.Sabar 19 Pesanggrahan
Pada contoh di atas diperlihatkan satu buah table yang berisi tiga buah record dimana saturecord memiliki empat buah kolom yang nantinya kita sebut sebagai Field yaitu : nm_dpn,nm_blkg, alamat dan kota.
4 Komponen Sistem Basis Data
Ada beberapa komponen yang berurutan dalam Database :1. Database2. Tabel3. Field (kolom)4. Rows (Baris)5. Data
Pembahasan SQL terdiri dari 2 bagian yaitu DML dan DDL.akan lebih dijelaskan dibawah ini
-
8/15/2019 Handout Java (Copy).pdf
90/102
90 Modul Java Politeknik Gajah Tunggal
5 Data Manipulation Language (DML)
SQL (Structured Query Language) adalah sebuah syntax untuk melakukan eksekusi terhadapsebuah query. Tetapi bahasa SQL harus selalu ada syntak untuk melakukan update, insert, anddelete dari pada sebuah records atau lebih.Query dan perintah update ini bersamaan muncul dari Data Manipulation Language (DML) yangmerupakan bagian dari SQL diantaranya :
− SELECT : mengelompokkan data terpilih dari sebuah tabel− UPDATE : ubah/perbaiki dari sebuah tabel basis data− DELETE : hapus data dari sebuah tabel basis data− INSERT INTO : input data baru ke dalam sebuah tabel basis data
6 Data Definition Language (DDL) Data Definition Language (DDL) juga merupakan bagian dari SQL yang berfungsi untuk untukmembuat dan menghapur tabel dari sebuah database. Kita juga dapat mendefinisikan indexes(keys) untuk mencirikan dan membuat hubungan antar tabel.Yang terpenting dari perintah DDL didalam SQL adalah:
− CREATE TABLE : perintah untuk membuat tabel− ALTER TABLE : perintah untuk mengubah tabel− DROP TABLE : perintah untuk menghapus tabel− CREATE INDEX : perintah untuk membuat index suatu tabel− DROP INDEX : perintah untuk menghapus index dari suatu tabel
7 Perintah CREATE dalam SQL CREATE digunakan untuk membuat suatu database/table dalam SQL.
> Syntax Create Database :CREATE DATABASE nama_database;
Contoh :Kita akan membuat database dalam SQL dengan nama system_akademik, dapat digunakanperintah CREATE seperti berikut :CREATE DATABASE system_akademik;
> Syntax Create Tabel :CREATE TABLE nama_tabel(
Nama_field1 tipe(panjang),Nama_field2 tipe(panjang),..Nama_fieldn tipe(panjang),Primary Key(field_key)
);
Contoh :Sebelum membuat table kita harus memilih database yang akan kita pakai caranya ketik :USE SYSTEM_AKADEMIK;Setelah kita melakukan perintah diatas maka ada pesan :DATABASE ChangedKita akan membuat database dalam SQL dengan nama system_akademik, dapat digunakanperintah CREATE seperti berikut :
-
8/15/2019 Handout Java (Copy).pdf
91/102
91 Modul Java Politeknik Gajah Tunggal
CREATE TABLEMAHASISWA( Nimvarchar(10), Namavarchar(60), Jenkelvarchar(20), Jurusanvarchar(30),PRIMARY KEY(NIM)
);
8 Perintah INSERT INTO Perintah INSERT INTO digunakan untuk menambahkan data ke baris baru dalam suatu tabel.
Syntax :INSERT INTO table_name VALUES (value1, val
top related