handout java (copy).pdf

Upload: ivan-ferdian-afifka

Post on 05-Jul-2018

237 views

Category:

Documents


0 download

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