SlideShare a Scribd company logo
1 of 154
Download to read offline
DITERBITKAN

MODUL JAVA          PERTAMA KALI
                    PADA TAHUN 2002




  Andino Maseleno
Bab 1 - Pengenalan Java




Bab 1

Pengenalan Java

Apakah Java itu?
      “Java adalah suatu teknologi di dunia software komputer. Selain merupakan suatu bahasa
pemrograman, Java juga merupakan suatu platform.”
      “Java merupakan teknologi di mana teknologi tersebut mencakup Java sebagai bahasa
pemrograman yang memiliki sintaks dan aturan pemrograman tersendiri, juga mencakup Java
sebagai platform yaitu di mana teknologi ini memiliki virtual machine dan library yang diperlukan
untuk menulis dan menjalankan program yang ditulis dengan bahasa pemrograman Java”.


Asal Muasal Java
      Java diciptakan oleh suatu tim yang dipimpin oleh Patrick Naughton dan James Gosling
dalam suatu proyek dari Sun Microsystem yang memiliki kode Green dengan tujuan untuk
menghasilkan bahasa komputer sederhana yang dapat dijalankan di peralatan sederhana dengan
tidak terikat pada arsitektur tertentu.
      Mula-mula James Gosling menyebut bahasa pemrograman yang dihasilkan dengan OAK
tetapi karena OAK sendiri merupakan nama dari bahasa pemrograman komputer yang sudah ada
maka kemudian Sun mengubahnya menjadi Java.
      Akhirnya setelah melalui beberapa transformasi dan proses, Sun akhirnya meluncurkan
browser dari Java yang disebut Hot Java yang mampu menjalankan applet. Setelah itu teknologi
Java diadopsi oleh Netscape yang memungkinkan program Java dijalankan di browser Netscape
sejak Januari 1996 yang kemudian diikuti oleh Internet Explorer. Karena keunikan dan
kelebihannya, teknologi Java mulai menarik banyak vendor terkemuka seperti IBM, Symantec,
Inprise, dll.
      Akhirnya Sun merilis versi awal Java secara resmi pada awal 1996 yang kemudian terus
berkembang hingga muncul JDK 1.1 kemudian JDK 1.2 yang menghasilkan banyak peningkatan
dan perbaikan sehingga mulai versi ini Java disebut Java 2. Perubahan yang utama adalah adanya
Swing yang merupakan teknologi GUI (Graphical User Interface) yang mampu menghasilkan
aplikasi window yang benar-benar portabel.
      Dan pada tahun-tahun berikutnya (1998-1999) lahirlah teknologi J2EE (Java 2 Enterprise
Edition) yang berbasis J2SE yang diawali dengan servlet dan EJB kemudian diikuti JSP. Kelebihan




Andino Maseleno                                                                                1
Bab 1 - Pengenalan Java




Java di lingkungan network dan terdistribusi serta kemampuan multithreading mengakibatkan Java
menjadi cepat populer di lingkungan server side.
      Terakhir teknologi Java melahirkan J2ME (Java 2 Micro Edition) yang sudah diadopsi oleh
Nokia, Siemens, Sony Ericsson, Motorola, Samsung untuk menghasilkan aplikasi mobile baik
games maupun software bisnis dan berbagai jenis software lain yang dapat dijalankan di peralatan
mobile seperti ponsel.


Kelebihan Java
      Mengapa Java sering dibicarakan dan memiliki daya tarik bagi para programmer? Karena
Java merupakan suatu teknologi yang unik dan revolusioner dan merupakan teknologi pertama di
dunia software yang memiliki semboyan “write once, run anywhere”. Semboyan tersebut telah
terbukti karena banyak program Java dapat dijalankan di berbagai platform Sistem Operasi, seperti
Linux, Windows maupun Unix.
      Java telah mengatasi masalah portabilitas yang sering menjadi kendala dan hambatan dalam
pembuatan suatu aplikasi software. Mengapa? Karena software developer harus mengeluarkan
banyak tenaga, pikiran dan waktu untuk menghasilkan aplikasi yang dapat berjalan di operating
system atau platform lain.
      Java dapat mengatasi kendala tersebut karena program Java dapat dijalankan secara langsung
tanpa banyak perubahan berarti di sistem operasi atau platform lain.
      Java juga didesain untuk menghasilkan program dengan seminimal mungkin bug karena
kemampuan sebagai berikut :
   Java didesain untuk menghilangkan alokasi memori dan dealokasi memori secara manual. Java
    memiliki garbage collection otomatis yang mencegah adanya memory leak. Memory leak
    adalah masalah yang sering dihadapi programmer C dan C++ dimana memori yang digunakan
    untuk objek atau variabel yang sudah tidak digunakan tidak didealokasikan sehingga
    memungkinkan adanya kehabisan memori karena proses alokasi maupun dealokasi yang tidak
    diatur dengan baik.
   Java memiliki array yang tidak memerlukan pointer sehingga memudahkan para programmer.
   Java menghilangkan banyak ketidakmengertian yang terjadi apabila terjadi proses assignment
    (pemberian nilai) pada statemen konditional seperti berikut:
    if (varnya=5)




Andino Maseleno                                                                                2
Bab 1 - Pengenalan Java




    Kode di atas menyebabkan program Java tidak dapat dikompilasi karena Java membedakan
    tanda = yang digunakan untuk pemberian nilai dan untuk pengecekan kondisi true atau false
    yang harus menggunakan tanda = ganda (==).
   Java menghilangkan multiple inheritance pada C++ dan menggunakan interface yang memiliki
    kemampuan sama tetapi lebih sederhana.


Karakteristik Java
Secara singkat, karakteristik Java adalah :
   Sederhana
    Java tidak memiliki sintaks aneh tetapi banyak menggunakan sintaks C++ yang sudah banyak
    dikenal sehingga Java tidak menyulitkan bagi para programmer. Bahkan Java memberikan
    banyak peningkatan dan kemudahan dibanding C++.
   Berorientasi objek
    Java merupakan pemrograman berorientasi objek yang murni. Dalam pemrograman Java semua
    adalah objek, terkecuali tipe data primitif.
   Dapat didistribusikan dengan mudah
    Sifat terdistribusi dari Java sangat tampak sebagai applet dan library yang mampu bekerja
    dalam jaringan dan bekerja dengan objek terdistribusi (RMI) dengan sangat baik. Saat ini Java
    juga memiliki kemampuan untuk server side processing yaitu teknologi Java Servlet dan Java
    Server Pages.
   Aman
    Aman karena program Java memiliki library security serta policy yang membatasi akses applet
    di komputer client.
   Diinterpretasi oleh interpreter
    Java memerlukan virtual machine yang bertindak sebagai interpreter yang menterjemahkan
    bytecode (file class) menjadi bahasa mesin yang dimengerti oleh komputer host.
   Portabel
    Portabel karena Java dapat dijalankan di berbagai platform tanpa perubahan kode sama
    sekali.
   Multithreading
    Java memiliki kemampuan untuk menangani dan menjalankanbanyak thread sekaligus.
   Dinamik
    Java merupakan teknologi yang terus berkembang, dan hal ini tampak nyata sekali dengan



Andino Maseleno                                                                                 3
Bab 1 - Pengenalan Java




    library yang terus ditingkatkan kemampuannya dan kelengkapannya. Bahkan Java saat ini telah
    menjadi teknologi handal untuk aplikasi mobile dengan adanya Java 2 Micro Edition.
   Netral terhadap arsitektur hardware
    Java dapat dijalankan dengan baik pada komputer yang memiliki arsitektur berbeda-beda.
   Robust
    Java merupakan teknologi yang mampu membantu programmer untuk menghasilkan program
    secara cepat dan handal karena Java mencegah adanya memory leaking, meniadakan pointer
    (yang merupakan keharusan pada programmer C dan C++) serta mencegah berbagai error yang
    mungkin terjadi dengan adanya berbagai proses pengecekan awal pada kompilasi.




Andino Maseleno                                                                                4
Bab 2 – Dasar-dasar Pemrograman Java




Bab 2

Dasar-dasar Pemrograman Java


Variabel pada Java
        Variabel merupakan container yang digunakan untuk menyimpan suatu nilai pada sebuah
program dengan tipe tertentu. Pada dasarnya ada dua macam tipe variabel data dalam bahasa Java,
yakni tipe primitif dan tipe reference. Tabel di bawah ini menunjukkan tipe primitif pada Java.


                      Tabel 2.1 Tipe primitif pada Java

                        Keyword             Description                   Size/Format

                                                       (integers)

                        byte      Byte-length integer               8-bit two's complement

                        short     Short integer                     16-bit two's complement

                        int       Integer                           32-bit two's complement

                        long      Long integer                      64-bit two's complement

                                                  (real numbers)

                        float     Single-precision floating point   32-bit IEEE 754

                        double    Double-precision floating point   64-bit IEEE 754

                                                   (other types)

                        char      A single character                16-bit Unicode character

                        boolean   A boolean value (true or false)   true or false



Contoh program
 //MaxVariablesDemo.java
 public class MaxVariablesDemo {
      public static void main(String args[]) {


           // integer
           byte largestByte = Byte.MAX_VALUE;
           short largestShort = Short.MAX_VALUE;
           int largestInteger = Integer.MAX_VALUE;
           long largestLong = Long.MAX_VALUE;




Andino Maseleno                                                                                             5
Bab 2 – Dasar-dasar Pemrograman Java




            // real
            float largestFloat = Float.MAX_VALUE;
            double largestDouble = Double.MAX_VALUE;


            char aChar = 'S';
            boolean aBoolean = true;


            System.out.println("Nilai terbesar byte :" + largestByte);
            System.out.println("Nilai terbesar short :“ + largestShort);
            System.out.println("Nilai terbesar integer : " + largestInteger);
            System.out.println("Nilai terbesar long : " + largestLong);


            System.out.println("Nilai terbesar float : " + largestFloat);
            System.out.println("Nilai terbesar double : " + largestDouble);


            if (Character.isUpperCase(aChar)) {
                  System.out.println("The character " + aChar + " is upper case.");
            } else {
                  System.out.println("The character " + aChar + " is lower case.");
            }
            System.out.println("Nilai boolean : " + aBoolean);
       }
 }


Sedangkan tipe data variabel berupa reference terdiri atas tipe variabel data:
    tipe class
    tipe array
    tipe interface


Operator pada Java
Operator pada Java dibedakan menjadi beberapa jenis, yaitu:
    Operator Aritmetika
    Operator Relasional
    Operator Kondisional
    Operator Shift dan Lojik
    Operator Assignment
    Operator lainnya

Andino Maseleno                                                                                   6
Bab 2 – Dasar-dasar Pemrograman Java




Operator Aritmetika


                 Tabel 2.2 Operator aritmatika

                  Operator   Penggunaan                       Deskripsi

                  +          op1 + op2    Menambahkan op1 dengan op2

                  -          op1 - op2    Megurangkan op1 dengan op2

                  *          op1 * op2    Mengalikan op1 dengan op2

                  /          op1 / op2    Membagi op1 dengan op2

                  %          op1 % op2    Menghasilkan sisa hasil bagi antara op1 dengan op2



Contoh program

 //ArithmeticDemo.java
 public class ArithmeticDemo {
     public static void main(String[] args) {


         int i = 37;
         int j = 42;
         double x = 27.475;
         double y = 7.22;
         System.out.println("Nilai variabel...");
         System.out.println("             i = " + i);
         System.out.println("             j = " + j);
         System.out.println("             x = " + x);
         System.out.println("             y = " + y);


         System.out.println("Penambahan...");
         System.out.println("             i + j = " + (i + j));
         System.out.println("             x + y = " + (x + y));


         System.out.println("Pengurangan...");
         System.out.println("             i - j = " + (i - j));
         System.out.println("             x - y = " + (x - y));


         System.out.println("Perkalian...");
         System.out.println("             i * j = " + (i * j));
         System.out.println("             x * y = " + (x * y));


Andino Maseleno                                                                                         7
Bab 2 – Dasar-dasar Pemrograman Java




        System.out.println("Pembagian...");
        System.out.println("      i / j = " + (i / j));
        System.out.println("      x / y = " + (x / y));


        System.out.println("Sisa hasil bagi...");
        System.out.println("       i % j = " + (i % j));
        System.out.println("      x % y = " + (x % y));


        //mixing types
        System.out.println("Mixing types...");
        System.out.println("      j + y = " + (j + y));
        System.out.println("      i * x = " + (i * x));
    }
}




//SortDemo.java
public class SortDemo {
    public static void main(String[] args) {
        int[] arrayOfInts = { 32, 87, 3, 589, 12, 1076,
                                 2000, 8, 622, 127 };


        for (int i = arrayOfInts.length; --i >= 0; ) {
             for (int j = 0; j < i; j++) {
                  if (arrayOfInts[j] > arrayOfInts[j+1]) {
                       int temp = arrayOfInts[j];
                       arrayOfInts[j] = arrayOfInts[j+1];
                       arrayOfInts[j+1] = temp;
                   }
             }
         }


         for (int i = 0; i < arrayOfInts.length; i++) {
             System.out.print(arrayOfInts[i] + " ");
         }
         System.out.println();
    }
}



Andino Maseleno                                                                           8
Bab 2 – Dasar-dasar Pemrograman Java




Operator Increment/Decrement


           Tabel 2.3 Operator increment/decrement

                  Operator     Penggunaam                                Deskripsi

             ++              op++               op dinaikkan nilainya 1 setelah dilakukan operasi pada op

             ++              ++op               op dinaikkan nilainya 1 sebelum dilakukan operasi pada op

             --              op--               op diturunkan nilainya 1 sebelum dilakukan operasi pada op

             --              --op               op diturunkan nilainya 1 setelah dilakukan operasi pada op




Operator Relasional
Operator relasional pada Java dapat digunakan untuk membandingkan antara dua variabel data,
lebih lengkapnya dapat dilihat dalam tabel berikut ini:


          Tabel 2.4 Operator relasional

            Operator         Penggunaan                                 Deskripsi

                  >           op1 > op2     Menghasilkan true jika op1 lebih besar dari op2

                  >=         op1 >= op2     Menghasilkan true jika op1 lebih besar atau sama dengan dari op2

                  <           op1 < op2     Menghasilkan true jika op1 lebih kecil dari op2

                  <=         op1 <= op2     Menghasilkan true jika op1 lebih kecil atau sama dengan dari op2

                  ==         op1 == op2     Menghasilkan true jika op1 sama dengan op2

                  !=         op1 != op2     Menghasilkan true jika op1 tidak sama dengan op2




Contoh program

 /RelationalDemo.java
 public class RelationalDemo {
      public static void main(String[] args) {


           int i = 37;
           int j = 42;
           int k = 42;


Andino Maseleno                                                                                                9
Bab 2 – Dasar-dasar Pemrograman Java




           System.out.println("Nilai variabel...");
           System.out.println("       i = " + i);
           System.out.println("       j = " + j);
           System.out.println("       k = " + k);


           System.out.println("Lebih besar dari...");
            System.out.println("      i > j = " + (i > j));
            System.out.println("       j > i = " + (j > i));
            System.out.println("       k > j = " + (k > j));


           System.out.println("Lebih besar atau sama dengan...");
           System.out.println("       i >= j = " + (i >= j));      //false
           System.out.println("       j >= i = " + (j >= i));      //true
           System.out.println("       k >= j = " + (k >= j));      //true


           System.out.println("Kurang dari...");
           System.out.println("       i < j = " + (i < j));        //true
           System.out.println("       j < i = " + (j < i));        //false
           System.out.println("       k < j = " + (k < j));        //false


           System.out.println("Kurang dari atau sama dengan...");
           System.out.println("       i <= j = " + (i <= j));      //true
           System.out.println("       j <= i = " + (j <= i));      //false
           System.out.println("       k <= j = " + (k <= j));      //true


           System.out.println("Sama dengan...");
           System.out.println("       i == j = " + (i == j));      //false
           System.out.println("       k == j = " + (k == j));      //true


           System.out.println("Tidak sama dengan...");
           System.out.println("       i != j = " + (i != j));      //true
           System.out.println("       k != j = " + (k != j));      //false


     }
 }


Operator Kondisional
         Operator kondisional dalam Java ada enam macam sebagaimana digambarkan pada tabel di
bawah:


Andino Maseleno                                                                             10
Bab 2 – Dasar-dasar Pemrograman Java




Tabel 2.5 Operator kondisional

      Operator     Penggunaan                                                 Deskripsi

 &&              op1 && op2          Menghasilkan true jika op1 dan op2, keduanya bernilai boolean true

 ||              op1 || op2          Menghasilkan true jika op1 atau op2, salah satunya bernilai boolean true

 !               ! op                Menghasilkan true jika op bernilai boolean false

 &               op1 & op2           Bitwise AND, menghasilkan true jika op1 dan op2 bernilai true

 |               op1 | op2           Bitwise OR, menghasilkan true jika op1 atau op2 salah satunya bernilai true

 ^               op1 ^ op2           Menghasilkan true jika salah satu diantara op1 atau op2 bernilai true, namun tidak keduanya



Operator Shift dan Lojik


                              Tabel 2.6 Operator shift dan lojik

                                Operator      Penggunaan                    Deskripsi

                                >>            op1 >> op2      Menggeser bit op1 ke kanan sejauh op2

                                <<            op1 << op2      Menggeser bit op1 ke kiri sejauh op2

                                >>>           op1 >>> op2     Menggeser bit op1 ke kiri sejauh op2



Operator Bitwise
Operator bitwise dalam Java juga digunakan untuk memanipulasi bit.


                                        Tabel 2.7 Operator Bitwise

                                          Operator     Penggunaan           Deskripsi

                                          &            op1 & op2       Bitwise AND

                                          |            op1 | op2       Bitwise OR

                                          ^            op1 ^ op2       Bitwise xor

                                          ~            ~op2            Bitwise complement




Bitwise AND
Bitwise AND akan menghasilkan bit “1” jika kedua operator bernilai bit “1”.




Andino Maseleno                                                                                                                    11
Bab 2 – Dasar-dasar Pemrograman Java




Tabel 2.8 Bitwise AND

 op1   op2   op1 & op2

 0     0     0

 0     1     0

 1     0     0

 1     1     1



Bitwise OR
Bitwise OR akan menghasilkan bit “1” jika salah satu operator bernilai bit “1”.


Tabel 2.9 Bitwise OR

 op1   op2   op1 | op2

 0     0     0

 0     1     1

 1     0     1

 1     1     1




Bitwise XOR
Bitwise XOR akan menghasilkan bit “1” jika kedua operator memiliki nilai bit yang berbeda


Tabel 2.10 Bitwise XOR

 op1   op2   op1^op2

 0     0     0

 0     1     1

 1     0     1

 1     1     0



Contoh program

 //BitwiseDemo.java
 public class BitwiseDemo {



Andino Maseleno                                                                                 12
Bab 2 – Dasar-dasar Pemrograman Java




     static final int VISIBLE = 1;
     static final int DRAGGABLE = 2;
     static final int SELECTABLE = 4;
     static final int EDITABLE = 8;


     public static void main(String[] args)
     {
           int flags = 0;


           flags = flags | VISIBLE;
           flags = flags | DRAGGABLE;


           if ((flags & VISIBLE) == VISIBLE) {
               if ((flags & DRAGGABLE) == DRAGGABLE) {
                     System.out.println("Flags are Visible and Draggable.");
               }
           }


           flags = flags | EDITABLE;


           if ((flags & EDITABLE) == EDITABLE) {
                System.out.println("Flags are now also Editable.");
           }
     }
 }




Operator Assignment
         Operator assignment pada Java digunakan untuk memberikan sebuah nilai ke sebuah
variabel. Operator assignment hanya berupa „=‟,




Andino Maseleno                                                                          13
Bab 2 – Dasar-dasar Pemrograman Java




                                 Tabel 2.11 Operator Assignment

                                    Operator      Penggunaan         Ekivalen dengan

                                    +=           op1 += op2        op1 = op1 + op2

                                    -=           op1 -= op2        op1 = op1 - op2

                                    *=           op1 *= op2        op1 = op1 * op2

                                    /=           op1 /= op2        op1 = op1 / op2

                                    %=           op1 %= op2        op1 = op1 % op2

                                    &=           op1 &= op2        op1 = op1 & op2

                                    |=           op1 |= op2        op1 = op1 | op2

                                    ^=           op1 ^= op2        op1 = op1 ^ op2

                                    <<=          op1 <<= op2       op1 = op1 << op2

                                    >>=          op1 >>= op2       op1 = op1 >> op2

                                    >>>=         op1 >>>= op2      op1 = op1 >>> op2

Operator Lainnya

                 Tabel 2.12 Operator lainnya
                  Operator                                     Deskripsi

                  ?:           Shortcut if-else statement

                  []           Used to declare arrays, create arrays, and access array elements

                  .            Used to form qualified names

                  ( params ) Delimits a comma-separated list of parameters

                  ( type )     Casts (converts) a value to the specified type

                  new          Creates a new object or a new array

                  instanceof   Determines whether its first operand is an instance of its second operand

Contoh program

 //ConditionalOp.java
 public class ConditionalOp
 {
     public static void main(String args[])
     {
         int nBuku = 1;            // jumlah buku
         System.out.println("Saya mempunyai " + nBuku + " buku" + (nBuku == 1 ?
 "." : "s."));




Andino Maseleno                                                                                                  14
Bab 2 – Dasar-dasar Pemrograman Java




          nBuku++;              // Increment jumlah buku
          System.out.println("Saya mempunyai " + nBuku + " buku" + (nBuku == 1 ?
 "." : "s."));
     }
 }




Controlflow pada Java


Operasi Kondisional
If-Else
          Statement if-else digunakan untuk mengeksekusi sebuah blok jika memenuhi sebuah
kondisi tertentu. Sintaks penggunaannya adalah :


                                        if (kondisi){
                                        statement
                                        }



Contoh program
 //IfDemo1.java
 class ifDemo1{
      public static void main(String args[]){
           int idx = 2;
                   if(idx>9){
              System.out.println(“Idx lebih besar dari 10”);
                   }
      }
 }




Ada kalanya kita menginginkan dua pencabangan, yakni jika suatu kondisi terpenuhi, lakukan aksi
A, jika tidak, lakukan aksi B. Dua percabangan ini dimungkinkan dengan menggunakan if-else()
sebagai berikut:




Andino Maseleno                                                                             15
Bab 2 – Dasar-dasar Pemrograman Java




                                         if (kondisi){
                                             statement1
                                         }else{
                                             statement2
                                         }



Pada pernyataan di atas, jika kondisi bernilai true, statement 1 akan dijalankan. Sebaliknya, jika
kondisi bernilai false, statement 2 yang akan dijalankan.


Contoh program
 //IfDemo2.java
 class ifDemo2{
          public static void main(String args[]){
           int idx=0;
                    if(idx>9)
                System.out.println(“Idx lebih besar dari 9”);
           }else{
                System.out.println(“Idx tidak lebih besar dari 10”);
           }
           }
 }


 //NumberCheck1.java
 public class NumberCheck1
 {
     public static void main(String[] args)
     {
         int number = 0;
         number = 1+(int)(100*Math.random());


         if(number%2 == 0)
           System.out.println("Anda memperoleh bilangan genap, " + number);
         else
           System.out.println("Anda memperoleh bilangan ganjil, " + number);
     }
 }




Andino Maseleno                                                                                      16
Bab 2 – Dasar-dasar Pemrograman Java




//NumberCheck2.java
public class NumberCheck2
{
    public static void main(String[] args)
    {
        int number = 0;
        number = 1+(int)(100*Math.random());


        if(number%2 == 0)
        {
            if(number < 50)
                System.out.println("Anda memperoleh bilangan genap < 50, " + number);
        }
        else
            System.out.println("Anda memperleh bilangan ganjil, " + number); // It is
odd
    }
}




//LetterCheck1.java
public class LetterCheck1
{
     public static void main(String args[])
     {
            char symbol = 'A';
            symbol = (char)(128.0*Math.random());


            if(symbol >= 'A')
            {
                if(symbol <= 'Z')
                   System.out.println("Anda memiliki
huruf besar " + symbol);
                else
                   if(symbol >= 'a')
                       if(symbol <= 'z')
                         System.out.println("Anda
memiliki huruf kecil " + symbol);
                       else
                         System.out.println(


Andino Maseleno                                                                            17
Bab 2 – Dasar-dasar Pemrograman Java




                               "Kode lebih besar
dari a, tetapi ini bukan huruf");
                else
                  System.out.println(
                               "Kode lebih kecil
dari a dan bukan huruf");
         }
         else
             System.out.println("Kode lebih kecil
dari A dan bukan huruf!!");
    }
}




//LetterCheck2.java
public class LetterCheck2
{
    public static void main(String args[])
    {
        char symbol = 'A';
        symbol = (char)(128.0*Math.random());


        if(symbol >= 'A' && symbol <= 'Z')
         System.out.println("Anda memiliki huruf besar " + symbol);
        else
         if(symbol >= 'a' && symbol <= 'z')
             System.out.println("Anda memiliki huruf kecil " + symbol);
         else
        System.out.println("Kode ini bukan huruf!!");
    }
}
//LetterCheck3.java
public class LetterCheck3
{
    public static void main(String args[])
    {
        char symbol = 'A';
        symbol = (char)(128.0*Math.random());


        if(Character.isUpperCase(symbol))


Andino Maseleno                                                                       18
Bab 2 – Dasar-dasar Pemrograman Java




            System.out.println("Anda memiliki huruf besar " + symbol);
          else
            if(Character.isLowerCase(symbol))
                System.out.println("Anda memiliki huruf kecil " + symbol);
            else
                System.out.println("Kode ini bukan huruf!!");
     }
 }


Switch-Case
          Statement switch-case digunakan untuk mengeksekusi sebuah blok jika memenuhi sebuah
kondisi tertentu.


Contoh program

 //SwitchDemo.java
 public class SwitchDemo {
      public static void main(String[] args) {


            int month = 8;
            switch (month) {
                  case 1:   System.out.println("Januari"); break;
                  case 2:   System.out.println("Februari"); break;
                  case 3:   System.out.println("Maret"); break;
                  case 4:   System.out.println("April"); break;
                  case 5:   System.out.println("Mei"); break;
                  case 6:   System.out.println("Juni"); break;
                  case 7:   System.out.println("Juli"); break;
                  case 8:   System.out.println("Agustus"); break;
                  case 9:   System.out.println("September"); break;
                  case 10: System.out.println("Oktober"); break;
                  case 11: System.out.println("November"); break;
                  case 12: System.out.println("Desember"); break;
            }
      }
 }




Andino Maseleno                                                                              19
Bab 2 – Dasar-dasar Pemrograman Java




//SwitchDemo2.java
public class SwitchDemo2 {
    public static void main(String[] args) {


        int month = 2;
        int year = 2000;
        int numDays = 0;


        switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                  numDays = 31;
                  break;
            case 4:
            case 6:
            case 9:
            case 11:
                  numDays = 30;
                  break;
            case 2:
                  if ( ((year % 4 == 0) && !(year % 100 == 0))
                          || (year % 400 == 0) )
                         numDays = 29;
                  else
                         numDays = 28;
                  break;
        }
        System.out.println("Jumlah hari = " + numDays);
    }
}




Andino Maseleno                                                                      20
Bab 2 – Dasar-dasar Pemrograman Java




Operasi Pengulangan
While
          Statement while digunakan untuk mengeksekusi sebuah blok secara berulang selama
memenuhi kondisi tertentu. Sintaks penggunaannya adalah sebagai berikut:


                                        while
                                      (ekspresi) {
                                      statement
                                          }



Pada pernyataan di atas, selama ekspresi menghasilkan nilai true, statement yang ada akan
dieksekusi secara terus menerus.
Contoh program
 //WhileDemo.java
 class WhileDemo{
          public static void main(String args[]){
           String str1 = “Welcome”;
           int idx = 0;
           while(idx<str1.length()){
           System.out.println(“Karakter ke : “ +idx+”=”+str1.charAt(idx));
           idx++;
                    }
            }
 }


 //WhileLoop.java
 public class WhileLoop
 {
     public static void main(String[] args)
     {
         int limit = 20;
         int sum = 0;
         int i = 1;
         while(i <= limit)
           sum += i++;
         System.out.println("sum = " + sum);
     }}



Andino Maseleno                                                                              21
Bab 2 – Dasar-dasar Pemrograman Java




Do-While
             Sama halnya dengan while, statement do-while digunakan untuk mengeksekusi sebuah blok
secara berulang sampai tidak memenuhi kondisi tertentu. Pada penggunaan while, ekspresi
diperiksa pada saat awal,        jadi ada kemungkinan blok statement dalam while tidak pernah
dieksekusi. Pada penggunaan do-while, ekspresi tidak diperiksa pada saat awal eksekusi, jadi
minimal blok statement do-while akan dieksekusi sekali. Sintaks penggunaannya sebagai berikut:


                                         do{
                                               statement
                                         }while     (ekspresi)
                                         {



Contoh program
 //DoWhileLoop.java
 public class DoWhileLoop
 {
     public static void main(String[] args)
     {
         int limit = 20;
         int sum = 0;
         int i = 1;
         do
         {
             sum += i;
             i++;
         }
         while(i <= limit);


         System.out.println("sum = " + sum);
     }
 }




For
             Statement for digunakan untuk mengeksekusi sebuah blok secara berulang dalam sebuah
range tertentu. Sintaks penggunaannya adalah sebagai berikut:



Andino Maseleno                                                                                   22
Bab 2 – Dasar-dasar Pemrograman Java




                           for
                           (inisialisasi;terminasi;increment)
                           {
                                 statement
                           }



Increment dalam for merupakan ekspresi yang dieksekusi pada awal eksekusi for. Terminasi
digunakan untuk menentukan kapan pengulangan akan dihentikan. Increment merupakan ekspresi
yang akan dieksekusi setiap selesai melakukan satu looping (pengulangan). Perlu diperhatikan
bahwa ketiga bagian di dalam for() bersifat opsional, jadi boleh tidak ada. Namun, jika ketiga
bagian di atas kosong, akan menyebabkan terjadinya pengulangan tanpa henti (loop forever).


Contoh program
 //ForLoop1.java
 class ForLoop1{
         public static void main(String args[]){
             for (int idx=0;idx<10;idx++){
                        System.out.println(idx +” ”);
                   }
             System.out.println(“”);
         }
 }




 //ForLoop2.java
 public class ForLoop2
 {
     public static void main(String[] args)
     {
          int limit = 20;
          int sum = 0;
          for(int i = 1; i <= limit; i++)
               sum += i;
          System.out.println("sum = " +sum);
     }
 }




Andino Maseleno                                                                               23
Bab 2 – Dasar-dasar Pemrograman Java




//ForLoop3.java
class ForLoop3{
         public static void main(String args[]){
             int idx=0;
             for(;idx<10;){
                    System.out.println(idx +” “);
                    idx++;
             }
             System.out.println(“”);
         }
}




//ForLoop4.java
public class ForLoop4
{
     public static void main(String[] args)
     {
            int limit = 20;
            int sum = 0;
            for(double radius = 1.0; radius <= 2.0; radius += 0.2)
            {
                 System.out.println("radius = " + radius + " area = " +
Math.PI*radius*radius);
            }
     }
}




//Factorial.java
public class Factorial1
{
    public static void main(String[] args)
    {
        long limit = 20;
        long factorial = 1;
        for(int i = 1; i <= limit; i++)
        {
            factorial = 1;
            int j =2;


Andino Maseleno                                                                             24
Bab 2 – Dasar-dasar Pemrograman Java




            while(j <= i)
                factorial *= j++;
            System.out.println(i + "!" + " adalah " + factorial);
        }
    }
}




//Factorial2.java
public class Factorial2
{
    public static void main(String[]
args)
    {
        long limit = 20;
        long factorial = 1;
        OuterLoop:
        for(int i = 1; i <= limit; i++)
        {
            factorial = 1;
            for(int j = 2; j <= i; j++)
            {
                if(i > 10 && i % 2 == 1)
                  continue OuterLoop;
                factorial *= j;
            }
            System.out.println(i + "!" + "
adalah " + factorial);
        }
    }
}




//BilanganPrima.java
public class BilanganPrima
{
     public static void main(String[] args)
     {
            int nValues = 50;
            boolean isPrime = true;


Andino Maseleno                                                                          25
Bab 2 – Dasar-dasar Pemrograman Java




         for(int i = 2; i <= nValues; i++)
         {
             isPrime=true;
             for(int j = 2; j < i; j++)
             {
                 if(i % j == 0)
                 {
                     isPrime = false;
                     break;
                 }
             }
         if(isPrime)
             System.out.println(i);
         }
     }
 }




//ForLoop1.java
class ForLoop1{
     public static void main(String args[]){
         for (int idx=0;idx<10;idx++){
                       System.out.println(idx +” ”);
                 }
         System.out.println(“”);
     }
}




Andino Maseleno                                                                         26
Bab 3 - Pemrograman Berorientasi Object pada Java




Bab 3

Pemrograman Berorientasi Object pada Java

Konsep Pemrograman Berorientasi Object
         Untuk dapat menguasai pemrograman Java, Anda harus mengerti dengan baik konsep
pemrograman berorientasi object, karena Java merupakan bahasa pemrograman berorientasi object.


Object
         Pada dasarnya semua benda yang ada di dunia nyata dapat dianggap sebagai sebuah object.
Rumah, mobil, sepeda motor, gelas, komputer dan kursi merupakan contoh-contoh object yang ada
di dunia nyata. Jika kita perhatikan lebih lanjut pada dasarnya ada dua karakteristik yang utama
pada sebuah object, yakni:
   Setiap object memiliki atribut sebagai status yang kemudian akan disebut sebagai state
   Setiap object memiliki tingkah laku yang kemudian akan disebut sebagai behaviour
Contoh sederhana adalah:
Object sepeda
   Sepeda memiliki atribut (state): pedal, roda, jeruji, warna, jumlah roda
   Sepeda memiliki tingkah laku (behaviour): kecepatannya menaik, kecepatannya menurun,
    perpindahan gigi sepeda
    Sama halnya dengan penggambaran dalam dunia nyata, pengembangan perangkat lunak
berorientasi objek akan menggunakan model object juga. Object dalam perangkat lunak akan
menyimpan state-nya dalam variabel dan menyimpan informasi tingkah laku (behaviour) dalam
method-method atau fungsi-fungsi/prosedur.




                                   Gambar 3.1 Pemodelan object



Andino Maseleno                                                                                    27
Bab 3 - Pemrograman Berorientasi Object pada Java




               Gambar 3.2 Pemodelan object sepeda dengan variabel dan method-nya


Contoh program


//mhs.java
class mhs{
   private String nama;
   private String nim;
   private String ttl;
   private String telp;


   //konstruktor
   public mhs(String nama, String nim, String ttl, String telp){
        this.nama = nama;
        this.nim = nim;
        this.ttl = ttl;
        this.telp = telp;
   }
   public String getNama(){
        return this.nama;
   }
   public String getNim(){
        return this.nim;
   }
  //pemakaian
   public static void main(String args[]){
        mhs m = new mhs(“Andino”, “123990072”,”21”, “0274886870”);



Andino Maseleno                                                                                    28
Bab 3 - Pemrograman Berorientasi Object pada Java




        System.out.println(“Nama = “ +m.getNama());
    }
}


Enkapsulasi
        Dalam sebuah object yang mengandung variabel dan method-method, dapat ditentukan hak
akses pada sebuah variabel atau method dari object. Pembungkusan variabel dan method dalam
sebuah object dalam bagian yang terlindungi inilah yang disebut enkapsulasi. Jika Anda perhatikan
Gambar 3.2 yang merupakan model object sepeda, tampak bahwa bagian lingkaran di dalam tidak
boleh diakses langsung dari luar (didefinisikan private).      Contohnya terdapat pada program
mhs.java di atas, bagian private misalnya nama, bisa diakses dengan memanfaatkan bagian-bagian
pada lingkaran luar yang bersifat public (boleh diakses langsung dari luar object), yakni getNama().
Manfaat dari proses enkapsulasi ini adalah:
   Modularitas
    Kode sumber dari sebuah object dapat dikelola secara independent dari kode sumber object
    yang lain. Jadi misalnya Anda memiliki object komputer, Anda bisa memberikan kepada orang
    lain, tanpa harus bergantung siapa orang tersebut, dan komputer tersebut tetap akan bisa
    digunakan oleh orang tersebut.
   Information Hiding
    Seperti telah dijelaskan sebelumnya, kita dapat menentukan hak akses sebuah variabel/method
    dari object. Dengan demikian, kita bisa menyembunyikan informasi yang tidak perlu diketahui
    object lain. Misalnya, dalam sebuah object komputer, seseorang tidak perlu tahu bagaimana
    sebuah komputer bekerja, untuk mengetahui data yang ditampilkan oleh komputer, dia hanya
    perlu sebuah method untuk mendapatkan informasi tersebut.


Message
        Message merupakan mekanisme yang digunakan oleh sebuah object Java untuk
berkomunikasi dengan object Java yang lain.


        Salah satu keuntungan adanya message ini adalah dimungkinkannya terjadi aplikasi yang
terdistribusi dimana object-object Java dapat berinteraksi melalui jaringan. Contoh implementasinya
adalah dalam CORBA (Common Object Request Broker) dan Java-RMI.




Andino Maseleno                                                                                   29
Bab 3 - Pemrograman Berorientasi Object pada Java




              Gambar 3.3 Komunikasi antar object Java dilakukan dengan message




                   Gambar 3.4 Komunikasi antara object sepeda dengan Anda




Class
        Class berbeda dengan object. Sebagai analogi, ada contoh sebagai berikut di dunia ini tidak
ada seorang manusia pun yang sama persis, namun pada sisi yang lain seluruh manusia di dunia ini,
tanpa memperdulikan usia, jenis kelamin, atau sifat-sifat lain, manusia digolongkan dalam
kelompok “homo sapiens”.
        Class merupakan prototype yang mendefinisikan variable-variabel dan method-method
secara umum. Object pada sisi yang lain merupakan instansiasi dari suatu kelas.
        Contoh dalam kehidupan sehari-hari adalah sepeda. Sebuah sepeda pasti memiliki roda,
pedal, stang (kemudi), di sisi lain sebuah sepeda memiliki fungsi-fungsi seperti memutar kemudi,
mengubah gigi, dan mengayuh pedal. Dari kondisi umum sepeda itulah dapat dibuat sebuah class
sepeda yang kemudian boleh muncul object-object yang ber-class sepeda dengan kondisi yang
berbeda-beda, misalnya object sepeda A dengan kondisi kemudi ke arah depan, gigi sepeda pada
posisi 4 dan object sepeda B yang lain dengan kondisi kemudi ke arah kiri, gigi sepeda pada posisi
2.
        Contoh program Java berikut ini akan menunjukkan beda antara class dan object, sebagai
implementasi kasus object sepeda di atas.



Andino Maseleno                                                                                  30
Bab 3 - Pemrograman Berorientasi Object pada Java




//sepeda.java
class sepeda{
    private int kecepatan_sepeda = 0;
    private int posisi_gigi = 0;
    private String merk_sepeda;
    private String pemilik_sepeda;


    public sepeda(String m, String p){
        this.merk_sepeda = m;
        this.pemilik_sepeda = p;
    }


    public static void main(String args[]){
    sepeda sepeda1 = new sepeda(“Honda”, “Andino”);
    sepeda sepeda2 = new sepeda(“Yamaha”, “Maseleno”);
    System.out.println(“Object”Sepeda-1” : “);
    System.out.println(“Merk : “+sepeda1.merk_sepeda);
    System.out.println(“Pemilik : “+sepeda1.pemilik_sepeda);
    System.out.println(“Object”sepeda-2” : “);
    System.out.println(“Merk : “+sepeda2.merk_sepeda);
    System.out.println(“Pemilik : “+sepeda2.merk_sepeda);
    }
}




Inheritance
        Class dapat didefinisikan dengan referensi pada class yang lain yang telah terdefinisi.
Inheritance merupakan pewarisan atribut dan method pada sebuah class yang diperoleh dari class
yang telah terdefinisi tersebut.
        Pada kasus class sepeda, dimungkinkan kita mendefinisikan class sepeda yang lain yang
menggunakan referensi class sepeda, seperti class sepeda balap, sepeda gunung, sepeda motor.


Andino Maseleno                                                                                  31
Bab 3 - Pemrograman Berorientasi Object pada Java




Class sepeda yang baru tersebut (sepeda balap, sepeda gunung, sepeda motor) akan mewarisi
berbagai atribut dan behaviour dari class sepeda. Pewarisan itu misalnya, sepeda memiliki atribut
roda, maka sepeda balap, sepeda gunung dan sepeda motor pun akan memiliki atribut roda. Class
sepeda balap, sepeda gunung dan sepeda motor dalam hal ini disebut sebagai subclass dari class
sepeda. Class sepeda, pada sisi lain, akan menjadi superclass dari sepeda balap, sepeda gunung, dan
sepeda motor.
        Setiap subclass akan mewarisi state (variabel-variabel) dan behaviour (method-method)
dari superclass-nya.   Subclass kemudian dapat menambahkan state dan behaviour baru yang
spesifik dan dapat pula memodifikasi (override) state dan behaviour yang diturunkan oleh class-
nya.
Keuntungan dari inheritance adalah:
   Subclass menyedakan state/behaviour yang spesifik yang membedakannya dengan superclass,
    hal ini akan memungkinkan programmer Java untuk menggunakan ulang source code dari
    superclass yang telah ada.
   Programmer Java dapat mendefinisikan superclass khusus yang bersifat generic, yang disebut
    abstrack class, untuk mendefinisikan class dengan tingkahlaku dan state secara umum.




                            Gambar 3.5 Inheritance pada class sepeda


Interface




Andino Maseleno                                                                                  32
Bab 3 - Pemrograman Berorientasi Object pada Java




        Sebagai tambahan di Java dikenal konsep interface, yang merupakan device yang
digunakan untuk komunikasi antar object berbeda yang tidak memiliki hubungan apa pun. Interface
bisa dikatakan sebagai protokol komunikasi antar object tersebut.


Pemrograman Berorientasi Object pada Java


Class pada Java
Secara garis besar susunan deklarasi class pada Java dapat dilihat pada Gambar 3.6.
        Jadi secara garis besar, ada dua bagian utama pada sebuah class Java yakni class declaration
dan class body. Deklarasi class (class declaration mendefinisikan nama kelas dan atributnya,
sedangkan class body mendeklarasikan variabel dan method.




                                    Gambar 3.6 Contoh class


Deklarasi Class pada Java




Andino Maseleno                                                                                   33
Bab 3 - Pemrograman Berorientasi Object pada Java




        Seperti telah Anda perhatikan pada contoh deklarasi kelas di atas, deklarasi sebuah class
pada Java mengikuti sintaks berikut ini (sintaks berikut sudah terurut berdasarkan kemungkinan
pendeklarasian):




                                Gambar 3.7 Sintaks deklarasi class


Adapun atribut-atribut lain saat deklarasi sebuah kelas di Java adalah sebagai berikut:
   public
    Jika sebuah kelas dideklarasikan public, kelas tersebut akan dapat digunakan oleh kelas yang
    lain tanpa memperdulikan apakan kelas lain yang menggunakannya itu berasal dari package
    yang sama atau berbeda.
   abstrack
    Jika sebuah kelas didefinisikan abstrack, kelas tersebut tidak akan dapat diinstansiasi menjadi
    sebuah object Java. Jadi, misalnya kelas sepeda dideklarasikan sebagai kelas abstract, tidak
    dapat dilakukan instansiasi seperti ini: sepeda m = new sepeda();
   final
    Jika sebuah kelas didefinisikan final, kelas tersebut tidak akan dapat diturunkan lagi menjadi
    kelas turunan yang lain.
   class
    atribut ini digunakan untuk mendeklarasikan nama kelas.
   extends
    atribut ini digunkan untuk mendeklarasikan kelas turunan dari kelas yang lain.
   implements




Andino Maseleno                                                                                    34
Bab 3 - Pemrograman Berorientasi Object pada Java




    atribut ini digunakan untuk mendeklarasikan sebuah kelas yang akan mengimplementasikan
    satu atau lebih interface Java.


Inheritance
Bagaimana Membuat Turunan Sebuah Kelas?
        Untuk membuat kelas yang dapat mewarisi sebuh kelas lain,                 kita hanya perlu
mendeklarasikan kelas tersebut dengan menggunakan extends.


Method Overriding
        Dalam beberapa kasus, seringkali Anda menemukan bahwa ada fungsi atau variabel dari
sebuah kelas yang sama persis dengan variabel atau fungsi dari superclass-nya. Ketika hal ini
terjadi, fungsi atau variabel pada kelas tersebut akan menimpa atau override fungsi dan variabel dari
superclass-nya.




Java Exception
        Apa yang terjadi ketika ada kesalahan pada program, misalnya sebuah program yang akan
digunakan untuk membaca file “XXX”, namun program tersebut gagal membuka file “XXX” yang
diinginkan. Selayaknya Anda akan melakukan pengecekan hal-hal seperti ini dengan if-else, yang
jumlahnya akan terus membengkak seiring dengan besarnya pengecekan yang perlu dilakukan. Java
menyediakan mekanisme yang lebih baik dalam penanganan error (error handling).


Apa Exception itu?
        Exception adalah event yang terjadi ketika program menemui kesalahan saat instruksi
program dijalankan. Banyak hal yang dapat menimbulakan event ini, misalnya dengan melakukan
pembagian
        Dalam bahasa Java, ketika terjadi kesalahan, otomatis akan dilemparkan sebuah objek yang
disebut exception, yang kemudian dapat diproses lebih lanjut oleh fungsi-fungsi yang siap
menangani kesalahan tersebut. Proses pelemparan exception tersebut sering dikenal dengan istilah
throwing exception, sedangkan proses penerimaan exception yang bersangkutan sering dikenal
dengan istilah catch exception.
        Operator yang digunakan untuk penanganan Exception ini adalah try-catch, seperti
di bawah ini:


Andino Maseleno                                                                                   35
Bab 3 - Pemrograman Berorientasi Object pada Java




                                 try{
                                 ……………
                                 }catch(Exception XXX){
                                 ……………
                                 }catch(Exception XXX){
                                 ……………
                                 }catch(Exception XXX){
                                 ……………
                                 }finally{
                                 ……………
                                 }

        Pada operator di atas, blok try,digunakan untuk menempatkan kode-kode program Java
yang mengandung kode program yang mungkin melemparkan exception. Blok cacth, digunakan
untuk menempatkan kode-kode program Java yang digunakan untuk menangani sebuah exception
tertentu. Blok finally digunakan untuk clean up.




Andino Maseleno                                                                                  36
Bab 4 - Java Foundation Class




Bab 4
Java Foundation Class

        Java merupakan bahasa pemrograman lintas platform yang mampu berjalan di atas berbagai
macam arsitektur, tanpa harus mengkompilasi ulang program yang dibuat. Kemampuannya yang
cukup konsisten di UNIX, Windows, dan Macintosh secara        bersamaan, cukup mengesankan
banyak orang. Dengan demikian, ada dorongan untuk mengembangkan Java untuk keperluan
komputer desktop, bukan hanya Internet. Sejak akhir 1994, sudah ada usaha dari Sun Microsystem
untuk membuat Java mampu memiliki perangkat bergaya desktop. Pada saat itu, kemampuan
antarmuka yang dimiliki Java masih sangat sederhana. Toolkit Java yang dikenal sebagai AWT
(Abstrack Windowing Toolkit) merupakan cikal bakal dari pengembangan antarmuka yang lebih
baik pada tahun-tahun berikutnya.
        Pada 1997, muncul JFC (Java Foundation Class) untuk kepentingan pembuatan aplikasi
Window JFC yang dibentuk bersama JavaSoft dan Netscape, merupakan pengembangan dari AWT
pada versi Java SDK 1.0 dan 1.1. Keberadaan JFC di dalam Java kemudian menjadi landasan dari
Java SDK versi     1.2 dan selanjutnya (yang kemudian dikenal sebagai Java 2). JFC mempunyai
nama kode Swing yang akan Anda temukan dalam setiap paket yang digunakan dalam aplikasi
window nantinya.
        Hal yang menjadi kelebihan JFC, selain mempunyai banyak fungsi yang telah disediakan
untuk berbagai kepentingan pemrograman visual, programmer bisa memilih Look & Feel yang
diinginkan. Dengan demikian tampilan yang diperoleh bisa menyerupai Windows, Macintosh, atau
X-Windos (UNIX).


Aplikasi GUI yang pertama
        Di dalam pemrograman Java GUI, layar utama disebut sebagai frame. Dengan adanya
frame, berbagai komponen GUI dapat ditampilkan.

Contoh programnya:
//Frame.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Frame{
     public static void main (String args[]){
       JFrame frame = new JFrame(“Membuat Window”);
       frame.setSize(200,100);


Andino Maseleno                                                                              37
Bab 4 - Java Foundation Class




          frame.setVisible(true);
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      }
}

Memilih Look and Feel
          Ada beberapa jenis tampilan platform (Look & Feel) yang dapat digunakan pada saat
pembuatan window. Tampilan tersebut bisa menyerupai Windows, Macintosh, ataupun X-Window
(Unix). Pekerjaan untuk mengubah Look & Feel ditangani oleh User Interface Manager
(UIManager);
Contoh programnya:
//LookFeel.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class LookFeel{
     public static void main(String args[]){
     try{
          UIManager.setLooklAndFeel
       (UIManager.getSystemLookAndFeelClassName());
      }catch (Exception exc){
       System.out.println(“Error Loading L&F : “+exc);
      }

        JFrame frame = new JFrame(“Look & Feel”);
        frame.setSize(200,100);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
}
//Tree.java
import    java.awt.*;
import    java.util.*;
import    java.awt.event.*;
import    javax.swing.*;
import    javax.swing.tree.*;


public class Tree
{
        static JTree tree ;

              public static void main(String[] args)
              {
                      JFrame frame = new JFrame("Tree");
                      frame.addWindowListener( new WindowAdapter() {
                               public void windowClosing(WindowEvent e)
                               {
                                       Window win = e.getWindow();
                                       win.setVisible(false);
                                       win.dispose();
                                       System.exit(0);
                               }
                      } );

Andino Maseleno                                                                             38
Bab 4 - Java Foundation Class




                    frame.getContentPane().setLayout( new BorderLayout() );



                    tree = new JTree();

                    JScrollPane sp = new JScrollPane( tree );
                    frame.getContentPane().add( sp, "Center" );

                    JButton btn = new JButton( "Test");
                    btn.addActionListener( new ActionListener() {
                                             public void actionPerformed(
ActionEvent e )
                                                 {
                                                           test();
                                                 }
                                     } );
                    frame.getContentPane().add( btn, "South" );
                    frame.pack();
                    frame.show();
           }


        static boolean angled = true;
        static void test()
        {
                 try {
                         UIManager.setLookAndFeel(new
com.sun.java.swing.plaf.motif.MotifLookAndFeel());
                 }
                 catch (Exception e) {}
                 SwingUtilities.updateComponentTreeUI(tree.getRootPane());
                 tree.repaint();
        }
}

Menampilkan Teks
           Setelah berhasil membangun frame, kini saatnya Anda mengisi frame dengan berbagai
objek yang diinginkan. Salah satunya adalah label yang berfungsi untuk menampilkan teks di atas
window. Untuk membuat label, Anda haru membangun objek baru dari JLabel.
Contoh program

//Label.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Label{
     public static void main (String args[]){
        JFrame frame = new JFrame(“Membuat Label”);
          JLabel label = new Jlabel(“Hello World”);
        frame.getContentPane().add(label);
        frame.pack();
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Andino Maseleno                                                                                39
Bab 4 - Java Foundation Class




      }
}




//Main.java
import    java.awt.*;
import    java.util.*;
import    java.awt.event.*;
import    javax.swing.*;
import    javax.swing.border.*;

import javax.swing.plaf.basic.*;

public class Main
{
        public static void main(String[] args)
        {
                 JFrame frame = new JFrame("Main");
                 frame.addWindowListener( new WindowAdapter() {
                         public void windowClosing(WindowEvent e)
                         {
                                  Window win = e.getWindow();
                                  win.setVisible(false);
                                  win.dispose();
                                  System.exit(0);
                         }
                 } );

                   frame.getContentPane().setLayout( new FlowLayout() );

                 ImageIcon icon = new ImageIcon( "Andino.gif" ) ;
                 JLabel l = new JLabel( "This is the first linenThis the
second", icon, SwingConstants.LEFT );
                 l.setUI( new MultiLineLabelUI() );
                 l.setBorder( new EtchedBorder() );
                 frame.getContentPane().add( l );

                 l = new JLabel( "This nlabel nhas none nword non
neach nline.", icon, SwingConstants.LEFT );
                 l.setHorizontalTextPosition( SwingConstants.LEFT );
                 l.setUI( new MultiLineLabelUI() );
                 l.setBorder( new EtchedBorder() );
                 frame.getContentPane().add( l );
                 frame.getContentPane().add( new JButton( "Button" ) );
                 frame.pack();
                 frame.show();


              }
}

class MultiLineLabelUI extends BasicLabelUI
{
        static {
                 labelUI = new MultiLineLabelUI();
        }

     protected String layoutCL(

Andino Maseleno                                                                        40
Bab 4 - Java Foundation Class




       JLabel label,
       FontMetrics fontMetrics,
       String text,
       Icon icon,
       Rectangle viewR,
       Rectangle iconR,
       Rectangle textR)
   {
       String s = layoutCompoundLabel(
           (JComponent) label,
           fontMetrics,
           splitStringByLines(text),
           icon,
           label.getVerticalAlignment(),
           label.getHorizontalAlignment(),
           label.getVerticalTextPosition(),
           label.getHorizontalTextPosition(),
           viewR,
           iconR,
           textR,
           label.getIconTextGap());

        if( s.equals("") )
                return text;
        return s;
   }


        static    final   int   LEADING = SwingConstants.LEADING;
        static    final   int   TRAILING = SwingConstants.TRAILING;
        static    final   int   LEFT = SwingConstants.LEFT;
        static    final   int   RIGHT = SwingConstants.RIGHT;
        static    final   int   TOP = SwingConstants.TOP;
        static    final   int   CENTER = SwingConstants.CENTER;

   public static String layoutCompoundLabel(JComponent c,
                                             FontMetrics fm,
                                             String[] text,
                                             Icon icon,
                                             int verticalAlignment,
                                             int horizontalAlignment,
                                             int verticalTextPosition,
                                             int horizontalTextPosition,
                                             Rectangle viewR,
                                             Rectangle iconR,
                                             Rectangle textR,
                                             int textIconGap)
   {
       boolean orientationIsLeftToRight = true;
       int     hAlign = horizontalAlignment;
       int     hTextPos = horizontalTextPosition;


       if (c != null) {
           if (!(c.getComponentOrientation().isLeftToRight())) {
               orientationIsLeftToRight = false;
           }
       }

       switch (horizontalAlignment) {


Andino Maseleno                                                                            41
Bab 4 - Java Foundation Class




       case LEADING:
           hAlign = (orientationIsLeftToRight) ? LEFT : RIGHT;
           break;
       case TRAILING:
           hAlign = (orientationIsLeftToRight) ? RIGHT : LEFT;
           break;
       }

       switch (horizontalTextPosition) {
       case LEADING:
           hTextPos = (orientationIsLeftToRight) ? LEFT : RIGHT;
           break;
       case TRAILING:
           hTextPos = (orientationIsLeftToRight) ? RIGHT : LEFT;
           break;
       }

       return layoutCompoundLabel(fm,
                                  text,
                                  icon,
                                  verticalAlignment,
                                  hAlign,
                                  verticalTextPosition,
                                  hTextPos,
                                  viewR,
                                  iconR,
                                  textR,
                                  textIconGap);
   }

   public static String layoutCompoundLabel(
       FontMetrics fm,
       String[] text,
       Icon icon,
       int verticalAlignment,
       int horizontalAlignment,
       int verticalTextPosition,
       int horizontalTextPosition,
       Rectangle viewR,
       Rectangle iconR,
       Rectangle textR,
       int textIconGap)
   {

        if (icon != null) {
            iconR.width = icon.getIconWidth();
            iconR.height = icon.getIconHeight();
        }
        else {
            iconR.width = iconR.height = 0;
        }
        boolean textIsEmpty = (text == null) || (text.length == 0)
                         || (text.length == 1 && ( (text[0]==null) ||
text[0].equals("") ));

       String rettext = "";
       if (textIsEmpty) {
           textR.width = textR.height = 0;
       }
       else {


Andino Maseleno                                                                     42
Bab 4 - Java Foundation Class




       Dimension dim = computeMultiLineDimension( fm, text );
           textR.width = dim.width;
           textR.height = dim.height;
       }

       int gap = (textIsEmpty || (icon == null)) ? 0 : textIconGap;

       if (!textIsEmpty) {

           int availTextWidth;

           if (horizontalTextPosition == CENTER) {
               availTextWidth = viewR.width;
           }
           else {
               availTextWidth = viewR.width - (iconR.width + gap);
           }


            if (textR.width > availTextWidth && text.length == 1) {
                String clipString = "...";
                int totalWidth =
SwingUtilities.computeStringWidth(fm,clipString);
                int nChars;
                for(nChars = 0; nChars < text[0].length(); nChars++) {
                    totalWidth += fm.charWidth(text[0].charAt(nChars));
                    if (totalWidth > availTextWidth) {
                        break;
                    }
                }
                rettext = text[0].substring(0, nChars) + clipString;
                textR.width = SwingUtilities.computeStringWidth(fm,rettext);
            }
        }

       if (verticalTextPosition == TOP) {
           if (horizontalTextPosition != CENTER) {
               textR.y = 0;
           }
           else {
               textR.y = -(textR.height + gap);
           }
       }
       else if (verticalTextPosition == CENTER) {
           textR.y = (iconR.height / 2) - (textR.height / 2);
       }
       else { // (verticalTextPosition == BOTTOM)
           if (horizontalTextPosition != CENTER) {
               textR.y = iconR.height - textR.height;
           }
           else {
               textR.y = (iconR.height + gap);
           }
       }

       if (horizontalTextPosition == LEFT) {
           textR.x = -(textR.width + gap);
       }
       else if (horizontalTextPosition == CENTER) {
           textR.x = (iconR.width / 2) - (textR.width / 2);


Andino Maseleno                                                                      43
Bab 4 - Java Foundation Class




         }
         else { // (horizontalTextPosition == RIGHT)
             textR.x = (iconR.width + gap);
         }

         int labelR_x = Math.min(iconR.x, textR.x);
         int labelR_width = Math.max(iconR.x + iconR.width,
                                     textR.x + textR.width) - labelR_x;
         int labelR_y = Math.min(iconR.y, textR.y);
         int labelR_height = Math.max(iconR.y + iconR.height,
                                      textR.y + textR.height) - labelR_y;

         int dx, dy;

         if (verticalAlignment == TOP) {
             dy = viewR.y - labelR_y;
         }
         else if (verticalAlignment == CENTER) {
             dy = (viewR.y + (viewR.height / 2)) - (labelR_y + (labelR_height
/ 2));
         }
         else { // (verticalAlignment == BOTTOM)
             dy = (viewR.y + viewR.height) - (labelR_y + labelR_height);
         }

         if (horizontalAlignment == LEFT) {
             dx = viewR.x - labelR_x;
         }
         else if (horizontalAlignment == RIGHT) {
             dx = (viewR.x + viewR.width) - (labelR_x + labelR_width);
         }
         else { // (horizontalAlignment == CENTER)
             dx = (viewR.x + (viewR.width / 2)) -
                  (labelR_x + (labelR_width / 2));
         }

         textR.x += dx;
         textR.y += dy;

         iconR.x += dx;
         iconR.y += dy;

         return rettext;
   }

    protected void paintEnabledText(JLabel l, Graphics g, String s, int
textX, int textY)
    {
        int accChar = l.getDisplayedMnemonic();
        g.setColor(l.getForeground());
        drawString(g, s, accChar, textX, textY);
    }


    protected void paintDisabledText(JLabel l, Graphics g, String s, int
textX, int textY)
    {
                 int accChar = l.getDisplayedMnemonic();
                 g.setColor(l.getBackground());
        drawString(g, s, accChar, textX, textY);


Andino Maseleno                                                                       44
Bab 4 - Java Foundation Class




    }

        protected void drawString( Graphics g, String s, int accChar, int
textX, int textY )
        {
        if( s.indexOf('n') == -1 )
                         BasicGraphicsUtils.drawString(g, s, accChar, textX,
textY);
        else
        {
                 String[] strs = splitStringByLines( s );
                 int height = g.getFontMetrics().getHeight();
                 BasicGraphicsUtils.drawString(g, strs[0], accChar, textX,
textY);
                 for( int i = 1; i < strs.length; i++ )
                         g.drawString( strs[i], textX, textY + (height*i) );
        }
        }

        public static Dimension computeMultiLineDimension( FontMetrics fm,
String[] strs )
        {
                 int i, c, width = 0;
        for(i=0, c=strs.length ; i < c ; i++)
        width = Math.max( width,
SwingUtilities.computeStringWidth(fm,strs[i]) );
                 return new Dimension( width, fm.getHeight() * strs.length
);
        }


        protected String str;
        protected String[] strs;

        public String[] splitStringByLines( String str )
        {
                if( str.equals(this.str) )
                         return strs;

                  this.str = str;

                 int lines = 1;
                 int i, c;
        for(i=0, c=str.length() ; i < c ; i++) {
            if( str.charAt(i) == 'n' )
                 lines++;
        }
                 strs = new String[lines];
                 StringTokenizer st = new StringTokenizer( str, "n" );

                  int line = 0;
                  while( st.hasMoreTokens() )
                          strs[line++] = st.nextToken();

                  return strs;
        }
}




Andino Maseleno                                                                      45
Bab 4 - Java Foundation Class




Textbox
        Textbox merupakan metode sederhana dalam aplikasi GUI untuk memberikan input. Pada
pemrograman GUI yang menggunakan Java, textbox dikenal sebagai textfield.
Contoh program

//TextBox.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class TextBox{
   public static void main (String args[]){
     JFrame frame = new JFrame (“Membuat TextField”);
       JLabel label = new JLabel (“Nama :”);
       JTextField textField = new JTextField(20);
     frame.getContentPane().setLayout(new FlowLayout());
     frame.getContentPane().add(label);
     frame.getContentPane().add(textField);
     frame.pack();
     frame.setVisible(true);
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   }
}


Contoh program:
//tswing.java
 import   java.awt.*;
 import   com.sun.java.swing.*;
 import   com.sun.java.swing.text.*;
 import   com.sun.java.swing.event.*;
 import   javax.swing.*;

 public class tswing extends JApplet implements DocumentListener{
   JButton button;
   JTextField textfield;
   Document document;
   public void init() {
     getContentPane().setLayout(new FlowLayout());
     textfield = new JTextField(10);
     getContentPane().add(textfield);
     document = textfield.getDocument();
     document.addDocumentListener(this);
     button = new JButton("foo");
     getContentPane().add(button);
     button.setEnabled(false);
     }

     public void changedUpdate(DocumentEvent e ) {
       if (e.getDocument()==document)
          disableIfEmpty(document);
        }

     public void insertUpdate( DocumentEvent e ){
       if (e.getDocument()==document)
         disableIfEmpty(document);


Andino Maseleno                                                                              46
Bab 4 - Java Foundation Class




         }

     public void removeUpdate( DocumentEvent e ){
       if (e.getDocument()==document)
          disableIfEmpty(document);
        }

     public void disableIfEmpty(Document d) {
        button.setEnabled(d.getLength() > 0);
        }
 }

Membuat TextArea
        Text area merupakan textfield dengan kemampuan menampung isian lebih dari satu baris.
Dalam banyak kasus lebih sering digunakan untuk mengisi catatan-catatan atau komentar pada
setiap item data.Jika dilengkapi dengan ScrollPane, text area akan mempunyai scrollbar secara
otomatis jika isian lebih banyak dari laua text area yang ditampilkan pada window. Pada contoh di
bawah ini, pemanfaatan objek JTextArea dan JscrollPane secara bersamaan merupakan kombinasi
yang biasa dilakukan untuk mengantisipasi isian yang panjangnya tidak dapat diperkirakan
sebelumnya.
Contoh program

//TextArea.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class TextArea{
     JFrame frame = new JFrame (“Membuat TextArea”);
       JLabel label = new JLabel (“Keluhan :);
       JTextArea textArea = new JTextArea(5,20);
       JScrollPane       scrollPane        =       new       JScrollPane(textArea.
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
     frame.getContentPane().setLayout(new FlowLayout());
     frame.getContentPane().add(label);
     frame.getContentPane().add(scrollPane);
     frame.pack();
     frame.setVisible(true);
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     }
}

Membuat Tombol
        Hampir semua programmer memanfaatkan tombol (button) untuk mengeksekusi kotak-
kotak isian atau peringatan-peringatan pada program.
Contoh programnya:
//Tombol.java
import.javax.swing.*;


Andino Maseleno                                                                                 47
Bab 4 - Java Foundation Class




import java.awt.*;
import java.awt.event.*;

public class Tombol{
     public static void main(String args[]){
       JFrame frame = new JFrame(“Membuat Tombol”);
            JButton tombolSetuju = new JButton (“Setuju”);
               tombolSetuju.setMnemonic(„S‟);
           JButton tombolBatal = new JButton (“Batal”);
               tombolBatal.setMnemonic(„B‟);
            frame.getContentPane().setLayout(new FlowLayout());
            frame.getContentPane().add(tombolSetuju);
            frame.getContentPane().add(tombolBatal);
            frame.pack();
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     }
}

Radio Button
       Untuk memberikan kesempatan kepada user dalam memilih satu saja dari sekian banyak
pilihan yang disediakan, diperlukan radio button. Biasanya dimanfaatkan untuk pilihan jenis
kelamin, agama, dan sebagainya. Dalam contoh di bawah ini, objek JRadioButton merupakan
jawaban dari kebutuhan tersebut.
Contoh programnya:
//RadioButton.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class RadioButton{
     JFrame frame = new JFrame(“Membuat Radio Button”);
       JRadioButton rbutton1 = new JRadioButton(“Radio Button1”);
            rbutton1.setMnemonic(„R‟);
                 rbutton1.setSelected(true);
       JRadioButton rbutton2 = new JRadioButton(“Radio Button2”);
       JRadioButton rbutton3 = new JRadioButton(“Radio Button3”);
            ButtonGroup group = new ButtonGroup();
       group.add(rbutton1);
       group.add(rbutton2);
       group.add(rbutton3);
     frame.getContentPane().setLayout(new FlowLayout());
     frame.getContentPane().add(rbutton1);
     frame.getContentPane().add(rbutton2);
     frame.getContentPane().add(rbutton3);
     frame.pack();
     frame.setVisible(true);
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     }
}




Andino Maseleno                                                                            48
Bab 4 - Java Foundation Class




Check Box
       Jika radio button hanya bisa dimanfaatkan untuk memilih satu dari beberapa pilihan,
dengan menggunakan check box kita dapat memilih beberapa bahkan keseluruhan dari semua
pilihan yang disediakan. JCheckBox merupakan objek yang kita gunakan untuk menampilkan check
box pada aplikasi Java GUI.
Contoh programnya:
//CheckBox.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class CheckBox{
     public static void main(String args[]){
     JFrame frame = new JFrame(“Membuat Check Box”);
       JCheckBox cbox1 = new JCheckBox(“Check Box 1”);
            cbox1.setMnemonic(„C‟);
                 cbox1.setSelected(true);
       JCheckBox cbox2 = new JCheckBox (“Check Box 2”);
       JCheckBox cbox3 = new JCheckBox(“Check Box 3”);
     frame.getContentPane().setLayout(new FlowLayout());
     frame.getContentPane().add(cbox1);
     frame.getContentPane().add(cbox2);
     frame.getContentPane().add(cbox3);
     frame.pack();
     frame.setVisible(true);
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     }
}

Combo Box
       Dalam hal pilih memilih dalam pemrograman, combo box juga merupakan objek yang
menarik selain radio button. Selain hemat tempat karena cukup menyita satu lokasi saja, alternatif
yang dipilih merupakan satu-satunya yang ditampilkan. Namun, sebelum membangun objek ini.
Anda harus mempunyai daftar yang dimasukkan ke dalam array, untuk kemudian menjadi bagian
dari JComboBox.
Contoh programnya:
//Pelatihan.java
import.javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Pelatihan{
     public static void main(String args[]){
       JFrame frame = new JFrame(“Membuat Combo Button”);
            JLabel label = new JLabel(“Pilih Kelas Pelatihan :”);
                 String[] comboStrings = {“J2SE”,”J2ME”,”J2EE”};
            JComboBox comboList = new JComboBox(comboStrings);
            frame.getContentPane().setLayout(new FlowLayout());
            frame.getContentPane().add(label);

Andino Maseleno                                                                                 49
Bab 4 - Java Foundation Class




                frame.getContentPane().add(comboList);
                frame.pack();
                frame.setVisible(true);
                frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
        }
}

Berikut beberapa contoh program dalam pembuatan Combo Box:
//BlockComboBoxExample.java
import      java.util.*;
import      java.awt.*;
import      java.awt.event.*;
import      javax.swing.*;
import      javax.swing.border.*;
import      javax.swing.plaf.metal.*;
import      javax.swing.plaf.basic.*;

public class BlockComboBoxExample extends JFrame {
  final String SEPARATOR = "SEPARATOR";

    public BlockComboBoxExample() {
      super("Block ComboBox Example");

        String[][] str = {{"A" ,"B" ,"C" },
                          {"1" ,"2" ,"3" },
                          {"abc","def","ghi"}
        };

        JComboBox combo = new JComboBox(makeVectorData(str));
        combo.setRenderer(new ComboBoxRenderer());
        combo.addActionListener(new BlockComboListener(combo));

        getContentPane().setLayout(new FlowLayout());
        getContentPane().add(combo);
        setSize(300, 100);
        setVisible(true);
    }

    private Vector makeVectorData(String[][] str) {
      boolean needSeparator = false;
      Vector data = new Vector();
      for (int i=0;i<str.length;i++) {
        if (needSeparator) {
          data.addElement(SEPARATOR);
        }
        for (int j=0;j<str[i].length;j++) {
          data.addElement(str[i][j]);
          needSeparator = true;
        }
      }
      return data;
    }

    public static void main (String args[]) {
      BlockComboBoxExample frame = new BlockComboBoxExample();
      frame.addWindowListener(new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
          System.exit(0);
        }
      });

Andino Maseleno                                                                             50
Bab 4 - Java Foundation Class




    }


    class ComboBoxRenderer extends JLabel implements ListCellRenderer {
      JSeparator separator;

        public ComboBoxRenderer() {
          setOpaque(true);
          setBorder(new EmptyBorder(1, 1, 1, 1));
          separator = new JSeparator(JSeparator.HORIZONTAL);
        }

        public Component getListCellRendererComponent( JList list,
               Object value, int index, boolean isSelected, boolean cellHasFocus) {
          String str = (value == null) ? "" : value.toString();
          if (SEPARATOR.equals(str)) {
            return separator;
          }
          if(isSelected) {
            setBackground(list.getSelectionBackground());
            setForeground(list.getSelectionForeground());
          } else {
            setBackground(list.getBackground());
            setForeground(list.getForeground());
          }
          setFont(list.getFont());
          setText(str);
          return this;
        }
    }

    class BlockComboListener implements ActionListener {
      JComboBox combo;
      Object currentItem;

        BlockComboListener(JComboBox combo) {
          this.combo = combo;
          combo.setSelectedIndex(0);
          currentItem = combo.getSelectedItem();
        }

        public void actionPerformed(ActionEvent e) {
          String tempItem = (String)combo.getSelectedItem();
          if (SEPARATOR.equals(tempItem)) {
            combo.setSelectedItem(currentItem);
          } else {
            currentItem = tempItem;
          }
        }
    }
}

// ToolTipComboBoxExample.java
import     java.awt.*;
import     java.awt.event.*;
import     javax.swing.*;
import     javax.swing.plaf.basic.*;

public class ToolTipComboBoxExample extends JFrame {



Andino Maseleno                                                                          51
Bab 4 - Java Foundation Class




    String[] items    = {"jw"       ,"ja"       ,"la"    };
    String[] tooltips = {"Javanese ","Japanese ","Latin "};

    public ToolTipComboBoxExample() {
      super("ToolTip ComboBox Example");

        JComboBox combo = new JComboBox(items);
        combo.setRenderer(new MyComboBoxRenderer());

        getContentPane().setLayout(new FlowLayout());
        getContentPane().add(combo);
    }

    class MyComboBoxRenderer extends BasicComboBoxRenderer {
      public Component getListCellRendererComponent( JList list,
             Object value, int index, boolean isSelected, boolean cellHasFocus) {
        if (isSelected) {
          setBackground(list.getSelectionBackground());
          setForeground(list.getSelectionForeground());
          if (-1 < index) {
            list.setToolTipText(tooltips[index]);
          }
        } else {
          setBackground(list.getBackground());
          setForeground(list.getForeground());
        }
        setFont(list.getFont());
        setText((value == null) ? "" : value.toString());
        return this;
      }
    }

    public static void main (String args[]) {
      ToolTipComboBoxExample frame = new ToolTipComboBoxExample();
      frame.addWindowListener(new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
          System.exit(0);
        }
      });
      frame.setSize(200, 140);
      frame.setVisible(true);
    }
}

Menampilkan Gambar
          Anda bisa memasukkan gambar ke dalam aplikasi window dengan menggunakan JLabel,
seperti halnya label teks yang pertama kali dibahas. Namun, bagian teks yang akan ditampilkan
pada label jika diganti dengan ImageIcon akan mengubah fungsi JLabel, yang semula hanya
menampilkan teks menjadi menampilkan gambar.
Contoh programnya:
//Gambar.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;


Andino Maseleno                                                                              52
Bab 4 - Java Foundation Class




public class Gambar{
     public static void main(String args[]){
     JFrame frame = new JFrame(“Memasukkan gambar”);
       JLabel label = new JLabel (“Selebritis tahun ini”);
       JLabel picture = new JLabel(new ImageIcon(“AndinoMaseleno.gif”));
       picture.setPreferredSize(new Dimension(87,130));
     frame.getContentPane().setLayout(new FlowLayout());
     frame.getContentPane().add(label);
     frame.getContentPane().add(picture);
     frame.pack();
     frame.setVisible(true);
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     }
}

Membuat Menu
       Bagian ini seringkali dibutuhkan dalam pembuatan program yang cukup kompleks.
Dengan menggunakan menu, pengguna akan dimudahkan dalam menjalankan berbagai program
dalam kesatuan aplikasi. Java menyediakan JMenuBar, JMenu, JMenuItem untuk kepentingan
pembuatan menu.
Contoh programnya:
//Menu.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Menu{
     public static void main(String args[]){
     JFrame frame = new JFrame(“Membuat Menu”);
       JLabel label = new JLabel (“Contoh Menu dengan Java”);
                  label.setFont(new Font(“SansSerif”, Font.BOLD, 14);
            JMenubar menu = new JMenuBar();
            frame.setJMenuBar(menu);
          JMenu submenu = new JMenu(“File”);
                     submenu.setMnemonic(„F‟);
                JMenuItem inputdata = new JMenuItem(“Input Data”,‟I‟);
                JMenuItem editdata = new JMenuItem(“Edit Data”,‟E‟);
                JMenuItem hapusdata = new JMenuItem(“Hapus Data”,‟H‟);
                JMenuItem inputdata = new JMenuItem(“Keluar”,‟K‟);
              keluar.addActionListener(new     ActionListener(){     public          void
actionPerformed(ActionEvent e){System.exit(0);}
                 }};
       menu.add(submenu);
       submenu.add(inputdata);
       submenu.add(editdata);
       submenu.add(hapusdata);
       submenu.addSeparator();
       submenu.add(keluar);
       menu.setSize(400,100);
       menu.setLocation(60,60);
       menu.setVisible(true);
     frame.getContentPane().add(label);
     frame.pack();
     frame.setVisible(true);
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Andino Maseleno                                                                         53
Bab 4 - Java Foundation Class




      }
}

        JLabel picture = new JLabel(new ImageIcon(“AndinoMaseleno.gif”));
        picture.setPreferredSize(new Dimension(87,130));
      frame.getContentPane().setLayout(new FlowLayout());
      frame.getContentPane().add(label);
      frame.getContentPane().add(picture);
      frame.pack();
      frame.setVisible(true);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      }
}

//ComboBoxMenuExample.java
import    java.util.*;
import    java.awt.*;
import    java.awt.event.*;
import    javax.swing.*;
import    javax.swing.border.*;
import    javax.swing.plaf.metal.*;
import    javax.swing.plaf.basic.*;
import    jp.gr.java_conf.tame.swing.menu.*;


public class ComboBoxMenuExample extends JFrame {

    public ComboBoxMenuExample() {
      super("ComboBoxMenu Example");

     String[] itemStr = {
       "name"   ,"Red"     ,"Blue",
       "number" ,"255,0,0" ,"0,0,255",
       // separator
       "system" ,"control" ,"controlHighlight" ,"controlShadow",
                 "text"
     };

     JMenuItem[] menuItems = new JMenuItem[7];
     menuItems[0] = new JMenuItem(itemStr[ 1]);
     menuItems[1] = new JMenuItem(itemStr[ 2]);
     menuItems[2] = new JMenuItem(itemStr[ 4]);
     menuItems[3] = new JMenuItem(itemStr[ 5]);
     menuItems[4] = new JMenuItem(itemStr[ 8]);
     menuItems[5] = new JMenuItem(itemStr[ 9]);
     menuItems[6] = new JMenuItem(itemStr[10]);

     JMenu[] menus = new JMenu[4];
     menus[0] = new JMenu(itemStr[0]);
     menus[1] = new JMenu(itemStr[3]);
     menus[2] = new JMenu(itemStr[6]);
     menus[3] = new JMenu(itemStr[7]);

     menus[0].add(menuItems[0]);
     menus[0].add(menuItems[1]);
     menus[1].add(menuItems[2]);
     menus[1].add(menuItems[3]);
     menus[3].add(menuItems[4]);
     menus[3].add(menuItems[5]);
     menus[2].add(menus[3]);


Andino Maseleno                                                                       54
Bab 4 - Java Foundation Class




        menus[2].add(menuItems[6]);

        JMenu menu = ComboMenuBar.createMenu(menuItems[0].getText());
        menu.add(menus[0]);
        menu.add(menus[1]);
        menu.addSeparator();
        menu.add(menus[2]);

        ComboMenuBar comboMenu = new ComboMenuBar(menu);


        JComboBox combo = new JComboBox();
        combo.addItem(itemStr[ 1]);
        combo.addItem(itemStr[ 2]);
        combo.addItem(itemStr[ 4]);
        combo.addItem(itemStr[ 5]);
        combo.addItem(itemStr[ 8]);
        combo.addItem(itemStr[ 9]);
        combo.addItem(itemStr[10]);

        getContentPane().setLayout(new FlowLayout());
        getContentPane().add(new ComboPanel("Fake ComboBox", comboMenu));
        getContentPane().add(new ComboPanel("ComboBox"     , combo));
    }

    class ComboPanel extends JPanel {
      ComboPanel(String title, JComponent c) {
        setLayout(new FlowLayout());
        setBorder(new TitledBorder(title));
        add(c);
      }
    }

    public static void main (String args[]) {
      ComboBoxMenuExample frame = new ComboBoxMenuExample();
      frame.addWindowListener(new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
          System.exit(0);
        }
      });
      frame.setSize(370, 100);
      frame.setVisible(true);
    }
}

Menggunakan Tabel
         Objek tabel juga disediakan dalam Java. Dengan tabel, data dimungkinkan untuk tampil dan
diedit secara mudah. Namun sebelum ditampilkan dalam tabel, harus dibuat array terlebih dahulu
sebagai bagian dari JTable.
Contoh programnya:
//Pelatihan.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Pelatihan{
   public static void main(String args[]){

Andino Maseleno                                                                                 55
Bab 4 - Java Foundation Class




        String[] columnNames = {“Senin”, “Selasa”,    “Rabu”};
        String[] tableData = {{“J2SE”,”Delphi”,”Turbo Pascal”},{“J2ME”, “Visual
Basic”, “Turbo C”}, {“J2EE”,”Visual Foxpro”,”Turbo C++”}};
   Jframe frame = new Jframe(“Menggunakan tabel”);
   JTable table = new JTable(tableData, columnNames);
   JscrollPane gridtable = new JscrollPane(table);
   frame.getContentPane().setLayout(new FlowLayout());
   frame.pack();
   frame.setVisible(true);
   frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
   }
}


Berikut beberapa contoh program penggunaan Java Foundation Class pada pembuatan tabel:
//CellBorderTableExample.java
import   java.awt.*;
import   java.awt.event.*;
import   javax.swing.*;
import   javax.swing.table.*;
import   javax.swing.event.*;
import   javax.swing.border.*;

public class CellBorderTableExample extends JFrame {

  public CellBorderTableExample() {
    super( "Cell Border Example" );

    final Color color = UIManager.getColor("Table.gridColor");

    DefaultTableModel dm = new DefaultTableModel(12,6) {
      public void setValueAt(Object obj, int row, int col) {
        if (obj instanceof MyData) {
          super.setValueAt(obj, row, col);
        } else {
          MyData myData=null;
          Object oldObject = getValueAt(row, col);
          if (oldObject == null) {
            myData = new MyData(obj, new LinesBorder(color,0));
          } else if (oldObject instanceof MyData) {
            myData = (MyData)oldObject;
          } else {
            System.out.println("error");
            return;
          }
          myData.setObject(obj);
          super.setValueAt(myData, row, col);
        }
      }
    };

    JTable table = new JTable( dm );
    table.setIntercellSpacing(new Dimension(0,0));
    table.setCellSelectionEnabled(true);
    table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
    table.setDefaultRenderer(Object.class, new BorderCellRenderer());

    JScrollPane scroll = new JScrollPane( table );
    ThicknessPanel thicknessPanel = new ThicknessPanel();
    Box box = new Box(BoxLayout.Y_AXIS);

Andino Maseleno                                                                              56
Bab 4 - Java Foundation Class




     box.add(thicknessPanel);
     box.add(new ButtonPanel(table, thicknessPanel));
     getContentPane().add(scroll, BorderLayout.CENTER);
     getContentPane().add(box,    BorderLayout.EAST);
 }

 public static void main(String[] args) {
   CellBorderTableExample frame = new CellBorderTableExample();
   frame.addWindowListener( new WindowAdapter() {
     public void windowClosing( WindowEvent e ) {
       System.exit(0);
     }
   });
   frame.setSize( 400, 240 );
   frame.setVisible(true);
 }


 class ThicknessPanel extends JPanel {
   JComboBox[] combos;

     ThicknessPanel() {
       String[] str = {"top","left","bottom","right"};
       int n = str.length;
       setLayout(new GridLayout(n,2));
       setBorder(new TitledBorder("Thickness"));
       combos = new JComboBox[n];
       for (int i=0;i<n;i++) {
         combos[i] = new JComboBox(new Object[]{"0","1","2","3"});
         add(new JLabel(str[i]));
         add(combos[i]);
       }
     }

     public Insets getThickness() {
       Insets insets = new Insets(0,0,0,0);
       insets.top     = combos[0].getSelectedIndex();
       insets.left    = combos[1].getSelectedIndex();
       insets.bottom = combos[2].getSelectedIndex();
       insets.right = combos[3].getSelectedIndex();
       return insets;
     }
 }


 class ButtonPanel extends JPanel {
   JTable table;
   ThicknessPanel thicknessPanel;
   Color color = UIManager.getColor("Table.gridColor");

     ButtonPanel(JTable table, ThicknessPanel thicknessPanel) {
       this.table = table;
       this.thicknessPanel = thicknessPanel;
       setLayout(new GridLayout(3,1));
       setBorder(new TitledBorder("Append Lines"));
       final JCheckBox oneBlock = new JCheckBox("Block");
       JButton b_and = new JButton("REPLACE");
       JButton b_or = new JButton("OR");
       add(oneBlock);
       add(b_and);


Andino Maseleno                                                                       57
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java
Andino Maseleno  -  Modul Java

More Related Content

More from Andino Maseleno

Andino maseleno - Bedah Buku Manajemen itu Mudah
Andino maseleno   - Bedah Buku Manajemen itu Mudah Andino maseleno   - Bedah Buku Manajemen itu Mudah
Andino maseleno - Bedah Buku Manajemen itu Mudah Andino Maseleno
 
Sistem Informasi Lingkungan
Sistem Informasi LingkunganSistem Informasi Lingkungan
Sistem Informasi LingkunganAndino Maseleno
 
Sistem Operasi: Arsitektur komputer, Pengantar Sistem Operasi dan Kernel
Sistem Operasi:   Arsitektur komputer, Pengantar Sistem Operasi dan KernelSistem Operasi:   Arsitektur komputer, Pengantar Sistem Operasi dan Kernel
Sistem Operasi: Arsitektur komputer, Pengantar Sistem Operasi dan KernelAndino Maseleno
 
Introduction to information system
Introduction to information systemIntroduction to information system
Introduction to information systemAndino Maseleno
 
Contribution of ocean sectors to the green economy
Contribution of ocean sectors to the green economyContribution of ocean sectors to the green economy
Contribution of ocean sectors to the green economyAndino Maseleno
 
Atmospheric pressure and Atmospheric Temperature
Atmospheric pressure and Atmospheric TemperatureAtmospheric pressure and Atmospheric Temperature
Atmospheric pressure and Atmospheric TemperatureAndino Maseleno
 
Analisis Penerapan Teknologi Informasi Dalam Otonomi Daerah
Analisis Penerapan Teknologi Informasi Dalam Otonomi DaerahAnalisis Penerapan Teknologi Informasi Dalam Otonomi Daerah
Analisis Penerapan Teknologi Informasi Dalam Otonomi DaerahAndino Maseleno
 
Avian Influenza (H5N1) Expert System using Dempster-Shafer Theory
Avian Influenza (H5N1) Expert System using Dempster-Shafer TheoryAvian Influenza (H5N1) Expert System using Dempster-Shafer Theory
Avian Influenza (H5N1) Expert System using Dempster-Shafer TheoryAndino Maseleno
 
Skin Infection Detection using Dempster-Shafer Theory
Skin Infection Detection using Dempster-Shafer TheorySkin Infection Detection using Dempster-Shafer Theory
Skin Infection Detection using Dempster-Shafer TheoryAndino Maseleno
 
Poultry Diseases Detection using Dempster-Shafer Theory
Poultry Diseases Detection using Dempster-Shafer TheoryPoultry Diseases Detection using Dempster-Shafer Theory
Poultry Diseases Detection using Dempster-Shafer TheoryAndino Maseleno
 
Poultry Diseases Expert System using Dempster-Shafer Theory
Poultry Diseases Expert System using Dempster-Shafer TheoryPoultry Diseases Expert System using Dempster-Shafer Theory
Poultry Diseases Expert System using Dempster-Shafer TheoryAndino Maseleno
 
Avian Influenza (H5N1) Warning System using Dempster-Shafer Theory and Web Ma...
Avian Influenza (H5N1) Warning System using Dempster-Shafer Theory and Web Ma...Avian Influenza (H5N1) Warning System using Dempster-Shafer Theory and Web Ma...
Avian Influenza (H5N1) Warning System using Dempster-Shafer Theory and Web Ma...Andino Maseleno
 
Avian Influenza (H5N1) Expert System using Dempster-Shafer Theory
Avian Influenza (H5N1) Expert System using Dempster-Shafer TheoryAvian Influenza (H5N1) Expert System using Dempster-Shafer Theory
Avian Influenza (H5N1) Expert System using Dempster-Shafer TheoryAndino Maseleno
 
Proceeding of Brunei International Conference on Engineering and Technology 2012
Proceeding of Brunei International Conference on Engineering and Technology 2012Proceeding of Brunei International Conference on Engineering and Technology 2012
Proceeding of Brunei International Conference on Engineering and Technology 2012Andino Maseleno
 
Evaluasi Pengelolaan Proyek Saluran Air Limbah Domestik dengan Primavera Proj...
Evaluasi Pengelolaan Proyek Saluran Air Limbah Domestik dengan Primavera Proj...Evaluasi Pengelolaan Proyek Saluran Air Limbah Domestik dengan Primavera Proj...
Evaluasi Pengelolaan Proyek Saluran Air Limbah Domestik dengan Primavera Proj...Andino Maseleno
 
Implementasi Mobile Banking dengan PHP dan J2ME
Implementasi Mobile Banking dengan PHP dan J2MEImplementasi Mobile Banking dengan PHP dan J2ME
Implementasi Mobile Banking dengan PHP dan J2MEAndino Maseleno
 
Avian Influenza (H5N1) Warning System Using Dempster-Shafer Theory and Web Ma...
Avian Influenza (H5N1) Warning System Using Dempster-Shafer Theory and Web Ma...Avian Influenza (H5N1) Warning System Using Dempster-Shafer Theory and Web Ma...
Avian Influenza (H5N1) Warning System Using Dempster-Shafer Theory and Web Ma...Andino Maseleno
 

More from Andino Maseleno (20)

Andino maseleno - Bedah Buku Manajemen itu Mudah
Andino maseleno   - Bedah Buku Manajemen itu Mudah Andino maseleno   - Bedah Buku Manajemen itu Mudah
Andino maseleno - Bedah Buku Manajemen itu Mudah
 
Sistem Informasi Lingkungan
Sistem Informasi LingkunganSistem Informasi Lingkungan
Sistem Informasi Lingkungan
 
Sistem Operasi: Arsitektur komputer, Pengantar Sistem Operasi dan Kernel
Sistem Operasi:   Arsitektur komputer, Pengantar Sistem Operasi dan KernelSistem Operasi:   Arsitektur komputer, Pengantar Sistem Operasi dan Kernel
Sistem Operasi: Arsitektur komputer, Pengantar Sistem Operasi dan Kernel
 
Introduction to information system
Introduction to information systemIntroduction to information system
Introduction to information system
 
Contribution of ocean sectors to the green economy
Contribution of ocean sectors to the green economyContribution of ocean sectors to the green economy
Contribution of ocean sectors to the green economy
 
Uses of the oceans
Uses of the oceansUses of the oceans
Uses of the oceans
 
Atmospheric pressure and Atmospheric Temperature
Atmospheric pressure and Atmospheric TemperatureAtmospheric pressure and Atmospheric Temperature
Atmospheric pressure and Atmospheric Temperature
 
Analisis Penerapan Teknologi Informasi Dalam Otonomi Daerah
Analisis Penerapan Teknologi Informasi Dalam Otonomi DaerahAnalisis Penerapan Teknologi Informasi Dalam Otonomi Daerah
Analisis Penerapan Teknologi Informasi Dalam Otonomi Daerah
 
Avian Influenza (H5N1) Expert System using Dempster-Shafer Theory
Avian Influenza (H5N1) Expert System using Dempster-Shafer TheoryAvian Influenza (H5N1) Expert System using Dempster-Shafer Theory
Avian Influenza (H5N1) Expert System using Dempster-Shafer Theory
 
Skin Infection Detection using Dempster-Shafer Theory
Skin Infection Detection using Dempster-Shafer TheorySkin Infection Detection using Dempster-Shafer Theory
Skin Infection Detection using Dempster-Shafer Theory
 
Poultry Diseases Detection using Dempster-Shafer Theory
Poultry Diseases Detection using Dempster-Shafer TheoryPoultry Diseases Detection using Dempster-Shafer Theory
Poultry Diseases Detection using Dempster-Shafer Theory
 
Poultry Diseases Expert System using Dempster-Shafer Theory
Poultry Diseases Expert System using Dempster-Shafer TheoryPoultry Diseases Expert System using Dempster-Shafer Theory
Poultry Diseases Expert System using Dempster-Shafer Theory
 
Avian Influenza (H5N1) Warning System using Dempster-Shafer Theory and Web Ma...
Avian Influenza (H5N1) Warning System using Dempster-Shafer Theory and Web Ma...Avian Influenza (H5N1) Warning System using Dempster-Shafer Theory and Web Ma...
Avian Influenza (H5N1) Warning System using Dempster-Shafer Theory and Web Ma...
 
Avian Influenza (H5N1) Expert System using Dempster-Shafer Theory
Avian Influenza (H5N1) Expert System using Dempster-Shafer TheoryAvian Influenza (H5N1) Expert System using Dempster-Shafer Theory
Avian Influenza (H5N1) Expert System using Dempster-Shafer Theory
 
Proceeding of Brunei International Conference on Engineering and Technology 2012
Proceeding of Brunei International Conference on Engineering and Technology 2012Proceeding of Brunei International Conference on Engineering and Technology 2012
Proceeding of Brunei International Conference on Engineering and Technology 2012
 
Evaluasi Pengelolaan Proyek Saluran Air Limbah Domestik dengan Primavera Proj...
Evaluasi Pengelolaan Proyek Saluran Air Limbah Domestik dengan Primavera Proj...Evaluasi Pengelolaan Proyek Saluran Air Limbah Domestik dengan Primavera Proj...
Evaluasi Pengelolaan Proyek Saluran Air Limbah Domestik dengan Primavera Proj...
 
Implementasi Mobile Banking dengan PHP dan J2ME
Implementasi Mobile Banking dengan PHP dan J2MEImplementasi Mobile Banking dengan PHP dan J2ME
Implementasi Mobile Banking dengan PHP dan J2ME
 
Avian Influenza (H5N1) Warning System Using Dempster-Shafer Theory and Web Ma...
Avian Influenza (H5N1) Warning System Using Dempster-Shafer Theory and Web Ma...Avian Influenza (H5N1) Warning System Using Dempster-Shafer Theory and Web Ma...
Avian Influenza (H5N1) Warning System Using Dempster-Shafer Theory and Web Ma...
 
AGNES CANTIK
AGNES CANTIKAGNES CANTIK
AGNES CANTIK
 
Android meets Arduino
Android meets ArduinoAndroid meets Arduino
Android meets Arduino
 

Andino Maseleno - Modul Java

  • 1. DITERBITKAN MODUL JAVA PERTAMA KALI PADA TAHUN 2002 Andino Maseleno
  • 2. Bab 1 - Pengenalan Java Bab 1 Pengenalan Java Apakah Java itu? “Java adalah suatu teknologi di dunia software komputer. Selain merupakan suatu bahasa pemrograman, Java juga merupakan suatu platform.” “Java merupakan teknologi di mana teknologi tersebut mencakup Java sebagai bahasa pemrograman yang memiliki sintaks dan aturan pemrograman tersendiri, juga mencakup Java sebagai platform yaitu di mana teknologi ini memiliki virtual machine dan library yang diperlukan untuk menulis dan menjalankan program yang ditulis dengan bahasa pemrograman Java”. Asal Muasal Java Java diciptakan oleh suatu tim yang dipimpin oleh Patrick Naughton dan James Gosling dalam suatu proyek dari Sun Microsystem yang memiliki kode Green dengan tujuan untuk menghasilkan bahasa komputer sederhana yang dapat dijalankan di peralatan sederhana dengan tidak terikat pada arsitektur tertentu. Mula-mula James Gosling menyebut bahasa pemrograman yang dihasilkan dengan OAK tetapi karena OAK sendiri merupakan nama dari bahasa pemrograman komputer yang sudah ada maka kemudian Sun mengubahnya menjadi Java. Akhirnya setelah melalui beberapa transformasi dan proses, Sun akhirnya meluncurkan browser dari Java yang disebut Hot Java yang mampu menjalankan applet. Setelah itu teknologi Java diadopsi oleh Netscape yang memungkinkan program Java dijalankan di browser Netscape sejak Januari 1996 yang kemudian diikuti oleh Internet Explorer. Karena keunikan dan kelebihannya, teknologi Java mulai menarik banyak vendor terkemuka seperti IBM, Symantec, Inprise, dll. Akhirnya Sun merilis versi awal Java secara resmi pada awal 1996 yang kemudian terus berkembang hingga muncul JDK 1.1 kemudian JDK 1.2 yang menghasilkan banyak peningkatan dan perbaikan sehingga mulai versi ini Java disebut Java 2. Perubahan yang utama adalah adanya Swing yang merupakan teknologi GUI (Graphical User Interface) yang mampu menghasilkan aplikasi window yang benar-benar portabel. Dan pada tahun-tahun berikutnya (1998-1999) lahirlah teknologi J2EE (Java 2 Enterprise Edition) yang berbasis J2SE yang diawali dengan servlet dan EJB kemudian diikuti JSP. Kelebihan Andino Maseleno 1
  • 3. Bab 1 - Pengenalan Java Java di lingkungan network dan terdistribusi serta kemampuan multithreading mengakibatkan Java menjadi cepat populer di lingkungan server side. Terakhir teknologi Java melahirkan J2ME (Java 2 Micro Edition) yang sudah diadopsi oleh Nokia, Siemens, Sony Ericsson, Motorola, Samsung untuk menghasilkan aplikasi mobile baik games maupun software bisnis dan berbagai jenis software lain yang dapat dijalankan di peralatan mobile seperti ponsel. Kelebihan Java Mengapa Java sering dibicarakan dan memiliki daya tarik bagi para programmer? Karena Java merupakan suatu teknologi yang unik dan revolusioner dan merupakan teknologi pertama di dunia software yang memiliki semboyan “write once, run anywhere”. Semboyan tersebut telah terbukti karena banyak program Java dapat dijalankan di berbagai platform Sistem Operasi, seperti Linux, Windows maupun Unix. Java telah mengatasi masalah portabilitas yang sering menjadi kendala dan hambatan dalam pembuatan suatu aplikasi software. Mengapa? Karena software developer harus mengeluarkan banyak tenaga, pikiran dan waktu untuk menghasilkan aplikasi yang dapat berjalan di operating system atau platform lain. Java dapat mengatasi kendala tersebut karena program Java dapat dijalankan secara langsung tanpa banyak perubahan berarti di sistem operasi atau platform lain. Java juga didesain untuk menghasilkan program dengan seminimal mungkin bug karena kemampuan sebagai berikut :  Java didesain untuk menghilangkan alokasi memori dan dealokasi memori secara manual. Java memiliki garbage collection otomatis yang mencegah adanya memory leak. Memory leak adalah masalah yang sering dihadapi programmer C dan C++ dimana memori yang digunakan untuk objek atau variabel yang sudah tidak digunakan tidak didealokasikan sehingga memungkinkan adanya kehabisan memori karena proses alokasi maupun dealokasi yang tidak diatur dengan baik.  Java memiliki array yang tidak memerlukan pointer sehingga memudahkan para programmer.  Java menghilangkan banyak ketidakmengertian yang terjadi apabila terjadi proses assignment (pemberian nilai) pada statemen konditional seperti berikut: if (varnya=5) Andino Maseleno 2
  • 4. Bab 1 - Pengenalan Java Kode di atas menyebabkan program Java tidak dapat dikompilasi karena Java membedakan tanda = yang digunakan untuk pemberian nilai dan untuk pengecekan kondisi true atau false yang harus menggunakan tanda = ganda (==).  Java menghilangkan multiple inheritance pada C++ dan menggunakan interface yang memiliki kemampuan sama tetapi lebih sederhana. Karakteristik Java Secara singkat, karakteristik Java adalah :  Sederhana Java tidak memiliki sintaks aneh tetapi banyak menggunakan sintaks C++ yang sudah banyak dikenal sehingga Java tidak menyulitkan bagi para programmer. Bahkan Java memberikan banyak peningkatan dan kemudahan dibanding C++.  Berorientasi objek Java merupakan pemrograman berorientasi objek yang murni. Dalam pemrograman Java semua adalah objek, terkecuali tipe data primitif.  Dapat didistribusikan dengan mudah Sifat terdistribusi dari Java sangat tampak sebagai applet dan library yang mampu bekerja dalam jaringan dan bekerja dengan objek terdistribusi (RMI) dengan sangat baik. Saat ini Java juga memiliki kemampuan untuk server side processing yaitu teknologi Java Servlet dan Java Server Pages.  Aman Aman karena program Java memiliki library security serta policy yang membatasi akses applet di komputer client.  Diinterpretasi oleh interpreter Java memerlukan virtual machine yang bertindak sebagai interpreter yang menterjemahkan bytecode (file class) menjadi bahasa mesin yang dimengerti oleh komputer host.  Portabel Portabel karena Java dapat dijalankan di berbagai platform tanpa perubahan kode sama sekali.  Multithreading Java memiliki kemampuan untuk menangani dan menjalankanbanyak thread sekaligus.  Dinamik Java merupakan teknologi yang terus berkembang, dan hal ini tampak nyata sekali dengan Andino Maseleno 3
  • 5. Bab 1 - Pengenalan Java library yang terus ditingkatkan kemampuannya dan kelengkapannya. Bahkan Java saat ini telah menjadi teknologi handal untuk aplikasi mobile dengan adanya Java 2 Micro Edition.  Netral terhadap arsitektur hardware Java dapat dijalankan dengan baik pada komputer yang memiliki arsitektur berbeda-beda.  Robust Java merupakan teknologi yang mampu membantu programmer untuk menghasilkan program secara cepat dan handal karena Java mencegah adanya memory leaking, meniadakan pointer (yang merupakan keharusan pada programmer C dan C++) serta mencegah berbagai error yang mungkin terjadi dengan adanya berbagai proses pengecekan awal pada kompilasi. Andino Maseleno 4
  • 6. Bab 2 – Dasar-dasar Pemrograman Java Bab 2 Dasar-dasar Pemrograman Java Variabel pada Java Variabel merupakan container yang digunakan untuk menyimpan suatu nilai pada sebuah program dengan tipe tertentu. Pada dasarnya ada dua macam tipe variabel data dalam bahasa Java, yakni tipe primitif dan tipe reference. Tabel di bawah ini menunjukkan tipe primitif pada Java. Tabel 2.1 Tipe primitif pada Java Keyword Description Size/Format (integers) byte Byte-length integer 8-bit two's complement short Short integer 16-bit two's complement int Integer 32-bit two's complement long Long integer 64-bit two's complement (real numbers) float Single-precision floating point 32-bit IEEE 754 double Double-precision floating point 64-bit IEEE 754 (other types) char A single character 16-bit Unicode character boolean A boolean value (true or false) true or false Contoh program //MaxVariablesDemo.java public class MaxVariablesDemo { public static void main(String args[]) { // integer byte largestByte = Byte.MAX_VALUE; short largestShort = Short.MAX_VALUE; int largestInteger = Integer.MAX_VALUE; long largestLong = Long.MAX_VALUE; Andino Maseleno 5
  • 7. Bab 2 – Dasar-dasar Pemrograman Java // real float largestFloat = Float.MAX_VALUE; double largestDouble = Double.MAX_VALUE; char aChar = 'S'; boolean aBoolean = true; System.out.println("Nilai terbesar byte :" + largestByte); System.out.println("Nilai terbesar short :“ + largestShort); System.out.println("Nilai terbesar integer : " + largestInteger); System.out.println("Nilai terbesar long : " + largestLong); System.out.println("Nilai terbesar float : " + largestFloat); System.out.println("Nilai terbesar double : " + largestDouble); if (Character.isUpperCase(aChar)) { System.out.println("The character " + aChar + " is upper case."); } else { System.out.println("The character " + aChar + " is lower case."); } System.out.println("Nilai boolean : " + aBoolean); } } Sedangkan tipe data variabel berupa reference terdiri atas tipe variabel data:  tipe class  tipe array  tipe interface Operator pada Java Operator pada Java dibedakan menjadi beberapa jenis, yaitu:  Operator Aritmetika  Operator Relasional  Operator Kondisional  Operator Shift dan Lojik  Operator Assignment  Operator lainnya Andino Maseleno 6
  • 8. Bab 2 – Dasar-dasar Pemrograman Java Operator Aritmetika Tabel 2.2 Operator aritmatika Operator Penggunaan Deskripsi + op1 + op2 Menambahkan op1 dengan op2 - op1 - op2 Megurangkan op1 dengan op2 * op1 * op2 Mengalikan op1 dengan op2 / op1 / op2 Membagi op1 dengan op2 % op1 % op2 Menghasilkan sisa hasil bagi antara op1 dengan op2 Contoh program //ArithmeticDemo.java public class ArithmeticDemo { public static void main(String[] args) { int i = 37; int j = 42; double x = 27.475; double y = 7.22; System.out.println("Nilai variabel..."); System.out.println(" i = " + i); System.out.println(" j = " + j); System.out.println(" x = " + x); System.out.println(" y = " + y); System.out.println("Penambahan..."); System.out.println(" i + j = " + (i + j)); System.out.println(" x + y = " + (x + y)); System.out.println("Pengurangan..."); System.out.println(" i - j = " + (i - j)); System.out.println(" x - y = " + (x - y)); System.out.println("Perkalian..."); System.out.println(" i * j = " + (i * j)); System.out.println(" x * y = " + (x * y)); Andino Maseleno 7
  • 9. Bab 2 – Dasar-dasar Pemrograman Java System.out.println("Pembagian..."); System.out.println(" i / j = " + (i / j)); System.out.println(" x / y = " + (x / y)); System.out.println("Sisa hasil bagi..."); System.out.println(" i % j = " + (i % j)); System.out.println(" x % y = " + (x % y)); //mixing types System.out.println("Mixing types..."); System.out.println(" j + y = " + (j + y)); System.out.println(" i * x = " + (i * x)); } } //SortDemo.java public class SortDemo { public static void main(String[] args) { int[] arrayOfInts = { 32, 87, 3, 589, 12, 1076, 2000, 8, 622, 127 }; for (int i = arrayOfInts.length; --i >= 0; ) { for (int j = 0; j < i; j++) { if (arrayOfInts[j] > arrayOfInts[j+1]) { int temp = arrayOfInts[j]; arrayOfInts[j] = arrayOfInts[j+1]; arrayOfInts[j+1] = temp; } } } for (int i = 0; i < arrayOfInts.length; i++) { System.out.print(arrayOfInts[i] + " "); } System.out.println(); } } Andino Maseleno 8
  • 10. Bab 2 – Dasar-dasar Pemrograman Java Operator Increment/Decrement Tabel 2.3 Operator increment/decrement Operator Penggunaam Deskripsi ++ op++ op dinaikkan nilainya 1 setelah dilakukan operasi pada op ++ ++op op dinaikkan nilainya 1 sebelum dilakukan operasi pada op -- op-- op diturunkan nilainya 1 sebelum dilakukan operasi pada op -- --op op diturunkan nilainya 1 setelah dilakukan operasi pada op Operator Relasional Operator relasional pada Java dapat digunakan untuk membandingkan antara dua variabel data, lebih lengkapnya dapat dilihat dalam tabel berikut ini: Tabel 2.4 Operator relasional Operator Penggunaan Deskripsi > op1 > op2 Menghasilkan true jika op1 lebih besar dari op2 >= op1 >= op2 Menghasilkan true jika op1 lebih besar atau sama dengan dari op2 < op1 < op2 Menghasilkan true jika op1 lebih kecil dari op2 <= op1 <= op2 Menghasilkan true jika op1 lebih kecil atau sama dengan dari op2 == op1 == op2 Menghasilkan true jika op1 sama dengan op2 != op1 != op2 Menghasilkan true jika op1 tidak sama dengan op2 Contoh program /RelationalDemo.java public class RelationalDemo { public static void main(String[] args) { int i = 37; int j = 42; int k = 42; Andino Maseleno 9
  • 11. Bab 2 – Dasar-dasar Pemrograman Java System.out.println("Nilai variabel..."); System.out.println(" i = " + i); System.out.println(" j = " + j); System.out.println(" k = " + k); System.out.println("Lebih besar dari..."); System.out.println(" i > j = " + (i > j)); System.out.println(" j > i = " + (j > i)); System.out.println(" k > j = " + (k > j)); System.out.println("Lebih besar atau sama dengan..."); System.out.println(" i >= j = " + (i >= j)); //false System.out.println(" j >= i = " + (j >= i)); //true System.out.println(" k >= j = " + (k >= j)); //true System.out.println("Kurang dari..."); System.out.println(" i < j = " + (i < j)); //true System.out.println(" j < i = " + (j < i)); //false System.out.println(" k < j = " + (k < j)); //false System.out.println("Kurang dari atau sama dengan..."); System.out.println(" i <= j = " + (i <= j)); //true System.out.println(" j <= i = " + (j <= i)); //false System.out.println(" k <= j = " + (k <= j)); //true System.out.println("Sama dengan..."); System.out.println(" i == j = " + (i == j)); //false System.out.println(" k == j = " + (k == j)); //true System.out.println("Tidak sama dengan..."); System.out.println(" i != j = " + (i != j)); //true System.out.println(" k != j = " + (k != j)); //false } } Operator Kondisional Operator kondisional dalam Java ada enam macam sebagaimana digambarkan pada tabel di bawah: Andino Maseleno 10
  • 12. Bab 2 – Dasar-dasar Pemrograman Java Tabel 2.5 Operator kondisional Operator Penggunaan Deskripsi && op1 && op2 Menghasilkan true jika op1 dan op2, keduanya bernilai boolean true || op1 || op2 Menghasilkan true jika op1 atau op2, salah satunya bernilai boolean true ! ! op Menghasilkan true jika op bernilai boolean false & op1 & op2 Bitwise AND, menghasilkan true jika op1 dan op2 bernilai true | op1 | op2 Bitwise OR, menghasilkan true jika op1 atau op2 salah satunya bernilai true ^ op1 ^ op2 Menghasilkan true jika salah satu diantara op1 atau op2 bernilai true, namun tidak keduanya Operator Shift dan Lojik Tabel 2.6 Operator shift dan lojik Operator Penggunaan Deskripsi >> op1 >> op2 Menggeser bit op1 ke kanan sejauh op2 << op1 << op2 Menggeser bit op1 ke kiri sejauh op2 >>> op1 >>> op2 Menggeser bit op1 ke kiri sejauh op2 Operator Bitwise Operator bitwise dalam Java juga digunakan untuk memanipulasi bit. Tabel 2.7 Operator Bitwise Operator Penggunaan Deskripsi & op1 & op2 Bitwise AND | op1 | op2 Bitwise OR ^ op1 ^ op2 Bitwise xor ~ ~op2 Bitwise complement Bitwise AND Bitwise AND akan menghasilkan bit “1” jika kedua operator bernilai bit “1”. Andino Maseleno 11
  • 13. Bab 2 – Dasar-dasar Pemrograman Java Tabel 2.8 Bitwise AND op1 op2 op1 & op2 0 0 0 0 1 0 1 0 0 1 1 1 Bitwise OR Bitwise OR akan menghasilkan bit “1” jika salah satu operator bernilai bit “1”. Tabel 2.9 Bitwise OR op1 op2 op1 | op2 0 0 0 0 1 1 1 0 1 1 1 1 Bitwise XOR Bitwise XOR akan menghasilkan bit “1” jika kedua operator memiliki nilai bit yang berbeda Tabel 2.10 Bitwise XOR op1 op2 op1^op2 0 0 0 0 1 1 1 0 1 1 1 0 Contoh program //BitwiseDemo.java public class BitwiseDemo { Andino Maseleno 12
  • 14. Bab 2 – Dasar-dasar Pemrograman Java static final int VISIBLE = 1; static final int DRAGGABLE = 2; static final int SELECTABLE = 4; static final int EDITABLE = 8; public static void main(String[] args) { int flags = 0; flags = flags | VISIBLE; flags = flags | DRAGGABLE; if ((flags & VISIBLE) == VISIBLE) { if ((flags & DRAGGABLE) == DRAGGABLE) { System.out.println("Flags are Visible and Draggable."); } } flags = flags | EDITABLE; if ((flags & EDITABLE) == EDITABLE) { System.out.println("Flags are now also Editable."); } } } Operator Assignment Operator assignment pada Java digunakan untuk memberikan sebuah nilai ke sebuah variabel. Operator assignment hanya berupa „=‟, Andino Maseleno 13
  • 15. Bab 2 – Dasar-dasar Pemrograman Java Tabel 2.11 Operator Assignment Operator Penggunaan Ekivalen dengan += op1 += op2 op1 = op1 + op2 -= op1 -= op2 op1 = op1 - op2 *= op1 *= op2 op1 = op1 * op2 /= op1 /= op2 op1 = op1 / op2 %= op1 %= op2 op1 = op1 % op2 &= op1 &= op2 op1 = op1 & op2 |= op1 |= op2 op1 = op1 | op2 ^= op1 ^= op2 op1 = op1 ^ op2 <<= op1 <<= op2 op1 = op1 << op2 >>= op1 >>= op2 op1 = op1 >> op2 >>>= op1 >>>= op2 op1 = op1 >>> op2 Operator Lainnya Tabel 2.12 Operator lainnya Operator Deskripsi ?: Shortcut if-else statement [] Used to declare arrays, create arrays, and access array elements . Used to form qualified names ( params ) Delimits a comma-separated list of parameters ( type ) Casts (converts) a value to the specified type new Creates a new object or a new array instanceof Determines whether its first operand is an instance of its second operand Contoh program //ConditionalOp.java public class ConditionalOp { public static void main(String args[]) { int nBuku = 1; // jumlah buku System.out.println("Saya mempunyai " + nBuku + " buku" + (nBuku == 1 ? "." : "s.")); Andino Maseleno 14
  • 16. Bab 2 – Dasar-dasar Pemrograman Java nBuku++; // Increment jumlah buku System.out.println("Saya mempunyai " + nBuku + " buku" + (nBuku == 1 ? "." : "s.")); } } Controlflow pada Java Operasi Kondisional If-Else Statement if-else digunakan untuk mengeksekusi sebuah blok jika memenuhi sebuah kondisi tertentu. Sintaks penggunaannya adalah : if (kondisi){ statement } Contoh program //IfDemo1.java class ifDemo1{ public static void main(String args[]){ int idx = 2; if(idx>9){ System.out.println(“Idx lebih besar dari 10”); } } } Ada kalanya kita menginginkan dua pencabangan, yakni jika suatu kondisi terpenuhi, lakukan aksi A, jika tidak, lakukan aksi B. Dua percabangan ini dimungkinkan dengan menggunakan if-else() sebagai berikut: Andino Maseleno 15
  • 17. Bab 2 – Dasar-dasar Pemrograman Java if (kondisi){ statement1 }else{ statement2 } Pada pernyataan di atas, jika kondisi bernilai true, statement 1 akan dijalankan. Sebaliknya, jika kondisi bernilai false, statement 2 yang akan dijalankan. Contoh program //IfDemo2.java class ifDemo2{ public static void main(String args[]){ int idx=0; if(idx>9) System.out.println(“Idx lebih besar dari 9”); }else{ System.out.println(“Idx tidak lebih besar dari 10”); } } } //NumberCheck1.java public class NumberCheck1 { public static void main(String[] args) { int number = 0; number = 1+(int)(100*Math.random()); if(number%2 == 0) System.out.println("Anda memperoleh bilangan genap, " + number); else System.out.println("Anda memperoleh bilangan ganjil, " + number); } } Andino Maseleno 16
  • 18. Bab 2 – Dasar-dasar Pemrograman Java //NumberCheck2.java public class NumberCheck2 { public static void main(String[] args) { int number = 0; number = 1+(int)(100*Math.random()); if(number%2 == 0) { if(number < 50) System.out.println("Anda memperoleh bilangan genap < 50, " + number); } else System.out.println("Anda memperleh bilangan ganjil, " + number); // It is odd } } //LetterCheck1.java public class LetterCheck1 { public static void main(String args[]) { char symbol = 'A'; symbol = (char)(128.0*Math.random()); if(symbol >= 'A') { if(symbol <= 'Z') System.out.println("Anda memiliki huruf besar " + symbol); else if(symbol >= 'a') if(symbol <= 'z') System.out.println("Anda memiliki huruf kecil " + symbol); else System.out.println( Andino Maseleno 17
  • 19. Bab 2 – Dasar-dasar Pemrograman Java "Kode lebih besar dari a, tetapi ini bukan huruf"); else System.out.println( "Kode lebih kecil dari a dan bukan huruf"); } else System.out.println("Kode lebih kecil dari A dan bukan huruf!!"); } } //LetterCheck2.java public class LetterCheck2 { public static void main(String args[]) { char symbol = 'A'; symbol = (char)(128.0*Math.random()); if(symbol >= 'A' && symbol <= 'Z') System.out.println("Anda memiliki huruf besar " + symbol); else if(symbol >= 'a' && symbol <= 'z') System.out.println("Anda memiliki huruf kecil " + symbol); else System.out.println("Kode ini bukan huruf!!"); } } //LetterCheck3.java public class LetterCheck3 { public static void main(String args[]) { char symbol = 'A'; symbol = (char)(128.0*Math.random()); if(Character.isUpperCase(symbol)) Andino Maseleno 18
  • 20. Bab 2 – Dasar-dasar Pemrograman Java System.out.println("Anda memiliki huruf besar " + symbol); else if(Character.isLowerCase(symbol)) System.out.println("Anda memiliki huruf kecil " + symbol); else System.out.println("Kode ini bukan huruf!!"); } } Switch-Case Statement switch-case digunakan untuk mengeksekusi sebuah blok jika memenuhi sebuah kondisi tertentu. Contoh program //SwitchDemo.java public class SwitchDemo { public static void main(String[] args) { int month = 8; switch (month) { case 1: System.out.println("Januari"); break; case 2: System.out.println("Februari"); break; case 3: System.out.println("Maret"); break; case 4: System.out.println("April"); break; case 5: System.out.println("Mei"); break; case 6: System.out.println("Juni"); break; case 7: System.out.println("Juli"); break; case 8: System.out.println("Agustus"); break; case 9: System.out.println("September"); break; case 10: System.out.println("Oktober"); break; case 11: System.out.println("November"); break; case 12: System.out.println("Desember"); break; } } } Andino Maseleno 19
  • 21. Bab 2 – Dasar-dasar Pemrograman Java //SwitchDemo2.java public class SwitchDemo2 { public static void main(String[] args) { int month = 2; int year = 2000; int numDays = 0; switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: numDays = 31; break; case 4: case 6: case 9: case 11: numDays = 30; break; case 2: if ( ((year % 4 == 0) && !(year % 100 == 0)) || (year % 400 == 0) ) numDays = 29; else numDays = 28; break; } System.out.println("Jumlah hari = " + numDays); } } Andino Maseleno 20
  • 22. Bab 2 – Dasar-dasar Pemrograman Java Operasi Pengulangan While Statement while digunakan untuk mengeksekusi sebuah blok secara berulang selama memenuhi kondisi tertentu. Sintaks penggunaannya adalah sebagai berikut: while (ekspresi) { statement } Pada pernyataan di atas, selama ekspresi menghasilkan nilai true, statement yang ada akan dieksekusi secara terus menerus. Contoh program //WhileDemo.java class WhileDemo{ public static void main(String args[]){ String str1 = “Welcome”; int idx = 0; while(idx<str1.length()){ System.out.println(“Karakter ke : “ +idx+”=”+str1.charAt(idx)); idx++; } } } //WhileLoop.java public class WhileLoop { public static void main(String[] args) { int limit = 20; int sum = 0; int i = 1; while(i <= limit) sum += i++; System.out.println("sum = " + sum); }} Andino Maseleno 21
  • 23. Bab 2 – Dasar-dasar Pemrograman Java Do-While Sama halnya dengan while, statement do-while digunakan untuk mengeksekusi sebuah blok secara berulang sampai tidak memenuhi kondisi tertentu. Pada penggunaan while, ekspresi diperiksa pada saat awal, jadi ada kemungkinan blok statement dalam while tidak pernah dieksekusi. Pada penggunaan do-while, ekspresi tidak diperiksa pada saat awal eksekusi, jadi minimal blok statement do-while akan dieksekusi sekali. Sintaks penggunaannya sebagai berikut: do{ statement }while (ekspresi) { Contoh program //DoWhileLoop.java public class DoWhileLoop { public static void main(String[] args) { int limit = 20; int sum = 0; int i = 1; do { sum += i; i++; } while(i <= limit); System.out.println("sum = " + sum); } } For Statement for digunakan untuk mengeksekusi sebuah blok secara berulang dalam sebuah range tertentu. Sintaks penggunaannya adalah sebagai berikut: Andino Maseleno 22
  • 24. Bab 2 – Dasar-dasar Pemrograman Java for (inisialisasi;terminasi;increment) { statement } Increment dalam for merupakan ekspresi yang dieksekusi pada awal eksekusi for. Terminasi digunakan untuk menentukan kapan pengulangan akan dihentikan. Increment merupakan ekspresi yang akan dieksekusi setiap selesai melakukan satu looping (pengulangan). Perlu diperhatikan bahwa ketiga bagian di dalam for() bersifat opsional, jadi boleh tidak ada. Namun, jika ketiga bagian di atas kosong, akan menyebabkan terjadinya pengulangan tanpa henti (loop forever). Contoh program //ForLoop1.java class ForLoop1{ public static void main(String args[]){ for (int idx=0;idx<10;idx++){ System.out.println(idx +” ”); } System.out.println(“”); } } //ForLoop2.java public class ForLoop2 { public static void main(String[] args) { int limit = 20; int sum = 0; for(int i = 1; i <= limit; i++) sum += i; System.out.println("sum = " +sum); } } Andino Maseleno 23
  • 25. Bab 2 – Dasar-dasar Pemrograman Java //ForLoop3.java class ForLoop3{ public static void main(String args[]){ int idx=0; for(;idx<10;){ System.out.println(idx +” “); idx++; } System.out.println(“”); } } //ForLoop4.java public class ForLoop4 { public static void main(String[] args) { int limit = 20; int sum = 0; for(double radius = 1.0; radius <= 2.0; radius += 0.2) { System.out.println("radius = " + radius + " area = " + Math.PI*radius*radius); } } } //Factorial.java public class Factorial1 { public static void main(String[] args) { long limit = 20; long factorial = 1; for(int i = 1; i <= limit; i++) { factorial = 1; int j =2; Andino Maseleno 24
  • 26. Bab 2 – Dasar-dasar Pemrograman Java while(j <= i) factorial *= j++; System.out.println(i + "!" + " adalah " + factorial); } } } //Factorial2.java public class Factorial2 { public static void main(String[] args) { long limit = 20; long factorial = 1; OuterLoop: for(int i = 1; i <= limit; i++) { factorial = 1; for(int j = 2; j <= i; j++) { if(i > 10 && i % 2 == 1) continue OuterLoop; factorial *= j; } System.out.println(i + "!" + " adalah " + factorial); } } } //BilanganPrima.java public class BilanganPrima { public static void main(String[] args) { int nValues = 50; boolean isPrime = true; Andino Maseleno 25
  • 27. Bab 2 – Dasar-dasar Pemrograman Java for(int i = 2; i <= nValues; i++) { isPrime=true; for(int j = 2; j < i; j++) { if(i % j == 0) { isPrime = false; break; } } if(isPrime) System.out.println(i); } } } //ForLoop1.java class ForLoop1{ public static void main(String args[]){ for (int idx=0;idx<10;idx++){ System.out.println(idx +” ”); } System.out.println(“”); } } Andino Maseleno 26
  • 28. Bab 3 - Pemrograman Berorientasi Object pada Java Bab 3 Pemrograman Berorientasi Object pada Java Konsep Pemrograman Berorientasi Object Untuk dapat menguasai pemrograman Java, Anda harus mengerti dengan baik konsep pemrograman berorientasi object, karena Java merupakan bahasa pemrograman berorientasi object. Object Pada dasarnya semua benda yang ada di dunia nyata dapat dianggap sebagai sebuah object. Rumah, mobil, sepeda motor, gelas, komputer dan kursi merupakan contoh-contoh object yang ada di dunia nyata. Jika kita perhatikan lebih lanjut pada dasarnya ada dua karakteristik yang utama pada sebuah object, yakni:  Setiap object memiliki atribut sebagai status yang kemudian akan disebut sebagai state  Setiap object memiliki tingkah laku yang kemudian akan disebut sebagai behaviour Contoh sederhana adalah: Object sepeda  Sepeda memiliki atribut (state): pedal, roda, jeruji, warna, jumlah roda  Sepeda memiliki tingkah laku (behaviour): kecepatannya menaik, kecepatannya menurun, perpindahan gigi sepeda Sama halnya dengan penggambaran dalam dunia nyata, pengembangan perangkat lunak berorientasi objek akan menggunakan model object juga. Object dalam perangkat lunak akan menyimpan state-nya dalam variabel dan menyimpan informasi tingkah laku (behaviour) dalam method-method atau fungsi-fungsi/prosedur. Gambar 3.1 Pemodelan object Andino Maseleno 27
  • 29. Bab 3 - Pemrograman Berorientasi Object pada Java Gambar 3.2 Pemodelan object sepeda dengan variabel dan method-nya Contoh program //mhs.java class mhs{ private String nama; private String nim; private String ttl; private String telp; //konstruktor public mhs(String nama, String nim, String ttl, String telp){ this.nama = nama; this.nim = nim; this.ttl = ttl; this.telp = telp; } public String getNama(){ return this.nama; } public String getNim(){ return this.nim; } //pemakaian public static void main(String args[]){ mhs m = new mhs(“Andino”, “123990072”,”21”, “0274886870”); Andino Maseleno 28
  • 30. Bab 3 - Pemrograman Berorientasi Object pada Java System.out.println(“Nama = “ +m.getNama()); } } Enkapsulasi Dalam sebuah object yang mengandung variabel dan method-method, dapat ditentukan hak akses pada sebuah variabel atau method dari object. Pembungkusan variabel dan method dalam sebuah object dalam bagian yang terlindungi inilah yang disebut enkapsulasi. Jika Anda perhatikan Gambar 3.2 yang merupakan model object sepeda, tampak bahwa bagian lingkaran di dalam tidak boleh diakses langsung dari luar (didefinisikan private). Contohnya terdapat pada program mhs.java di atas, bagian private misalnya nama, bisa diakses dengan memanfaatkan bagian-bagian pada lingkaran luar yang bersifat public (boleh diakses langsung dari luar object), yakni getNama(). Manfaat dari proses enkapsulasi ini adalah:  Modularitas Kode sumber dari sebuah object dapat dikelola secara independent dari kode sumber object yang lain. Jadi misalnya Anda memiliki object komputer, Anda bisa memberikan kepada orang lain, tanpa harus bergantung siapa orang tersebut, dan komputer tersebut tetap akan bisa digunakan oleh orang tersebut.  Information Hiding Seperti telah dijelaskan sebelumnya, kita dapat menentukan hak akses sebuah variabel/method dari object. Dengan demikian, kita bisa menyembunyikan informasi yang tidak perlu diketahui object lain. Misalnya, dalam sebuah object komputer, seseorang tidak perlu tahu bagaimana sebuah komputer bekerja, untuk mengetahui data yang ditampilkan oleh komputer, dia hanya perlu sebuah method untuk mendapatkan informasi tersebut. Message Message merupakan mekanisme yang digunakan oleh sebuah object Java untuk berkomunikasi dengan object Java yang lain. Salah satu keuntungan adanya message ini adalah dimungkinkannya terjadi aplikasi yang terdistribusi dimana object-object Java dapat berinteraksi melalui jaringan. Contoh implementasinya adalah dalam CORBA (Common Object Request Broker) dan Java-RMI. Andino Maseleno 29
  • 31. Bab 3 - Pemrograman Berorientasi Object pada Java Gambar 3.3 Komunikasi antar object Java dilakukan dengan message Gambar 3.4 Komunikasi antara object sepeda dengan Anda Class Class berbeda dengan object. Sebagai analogi, ada contoh sebagai berikut di dunia ini tidak ada seorang manusia pun yang sama persis, namun pada sisi yang lain seluruh manusia di dunia ini, tanpa memperdulikan usia, jenis kelamin, atau sifat-sifat lain, manusia digolongkan dalam kelompok “homo sapiens”. Class merupakan prototype yang mendefinisikan variable-variabel dan method-method secara umum. Object pada sisi yang lain merupakan instansiasi dari suatu kelas. Contoh dalam kehidupan sehari-hari adalah sepeda. Sebuah sepeda pasti memiliki roda, pedal, stang (kemudi), di sisi lain sebuah sepeda memiliki fungsi-fungsi seperti memutar kemudi, mengubah gigi, dan mengayuh pedal. Dari kondisi umum sepeda itulah dapat dibuat sebuah class sepeda yang kemudian boleh muncul object-object yang ber-class sepeda dengan kondisi yang berbeda-beda, misalnya object sepeda A dengan kondisi kemudi ke arah depan, gigi sepeda pada posisi 4 dan object sepeda B yang lain dengan kondisi kemudi ke arah kiri, gigi sepeda pada posisi 2. Contoh program Java berikut ini akan menunjukkan beda antara class dan object, sebagai implementasi kasus object sepeda di atas. Andino Maseleno 30
  • 32. Bab 3 - Pemrograman Berorientasi Object pada Java //sepeda.java class sepeda{ private int kecepatan_sepeda = 0; private int posisi_gigi = 0; private String merk_sepeda; private String pemilik_sepeda; public sepeda(String m, String p){ this.merk_sepeda = m; this.pemilik_sepeda = p; } public static void main(String args[]){ sepeda sepeda1 = new sepeda(“Honda”, “Andino”); sepeda sepeda2 = new sepeda(“Yamaha”, “Maseleno”); System.out.println(“Object”Sepeda-1” : “); System.out.println(“Merk : “+sepeda1.merk_sepeda); System.out.println(“Pemilik : “+sepeda1.pemilik_sepeda); System.out.println(“Object”sepeda-2” : “); System.out.println(“Merk : “+sepeda2.merk_sepeda); System.out.println(“Pemilik : “+sepeda2.merk_sepeda); } } Inheritance Class dapat didefinisikan dengan referensi pada class yang lain yang telah terdefinisi. Inheritance merupakan pewarisan atribut dan method pada sebuah class yang diperoleh dari class yang telah terdefinisi tersebut. Pada kasus class sepeda, dimungkinkan kita mendefinisikan class sepeda yang lain yang menggunakan referensi class sepeda, seperti class sepeda balap, sepeda gunung, sepeda motor. Andino Maseleno 31
  • 33. Bab 3 - Pemrograman Berorientasi Object pada Java Class sepeda yang baru tersebut (sepeda balap, sepeda gunung, sepeda motor) akan mewarisi berbagai atribut dan behaviour dari class sepeda. Pewarisan itu misalnya, sepeda memiliki atribut roda, maka sepeda balap, sepeda gunung dan sepeda motor pun akan memiliki atribut roda. Class sepeda balap, sepeda gunung dan sepeda motor dalam hal ini disebut sebagai subclass dari class sepeda. Class sepeda, pada sisi lain, akan menjadi superclass dari sepeda balap, sepeda gunung, dan sepeda motor. Setiap subclass akan mewarisi state (variabel-variabel) dan behaviour (method-method) dari superclass-nya. Subclass kemudian dapat menambahkan state dan behaviour baru yang spesifik dan dapat pula memodifikasi (override) state dan behaviour yang diturunkan oleh class- nya. Keuntungan dari inheritance adalah:  Subclass menyedakan state/behaviour yang spesifik yang membedakannya dengan superclass, hal ini akan memungkinkan programmer Java untuk menggunakan ulang source code dari superclass yang telah ada.  Programmer Java dapat mendefinisikan superclass khusus yang bersifat generic, yang disebut abstrack class, untuk mendefinisikan class dengan tingkahlaku dan state secara umum. Gambar 3.5 Inheritance pada class sepeda Interface Andino Maseleno 32
  • 34. Bab 3 - Pemrograman Berorientasi Object pada Java Sebagai tambahan di Java dikenal konsep interface, yang merupakan device yang digunakan untuk komunikasi antar object berbeda yang tidak memiliki hubungan apa pun. Interface bisa dikatakan sebagai protokol komunikasi antar object tersebut. Pemrograman Berorientasi Object pada Java Class pada Java Secara garis besar susunan deklarasi class pada Java dapat dilihat pada Gambar 3.6. Jadi secara garis besar, ada dua bagian utama pada sebuah class Java yakni class declaration dan class body. Deklarasi class (class declaration mendefinisikan nama kelas dan atributnya, sedangkan class body mendeklarasikan variabel dan method. Gambar 3.6 Contoh class Deklarasi Class pada Java Andino Maseleno 33
  • 35. Bab 3 - Pemrograman Berorientasi Object pada Java Seperti telah Anda perhatikan pada contoh deklarasi kelas di atas, deklarasi sebuah class pada Java mengikuti sintaks berikut ini (sintaks berikut sudah terurut berdasarkan kemungkinan pendeklarasian): Gambar 3.7 Sintaks deklarasi class Adapun atribut-atribut lain saat deklarasi sebuah kelas di Java adalah sebagai berikut:  public Jika sebuah kelas dideklarasikan public, kelas tersebut akan dapat digunakan oleh kelas yang lain tanpa memperdulikan apakan kelas lain yang menggunakannya itu berasal dari package yang sama atau berbeda.  abstrack Jika sebuah kelas didefinisikan abstrack, kelas tersebut tidak akan dapat diinstansiasi menjadi sebuah object Java. Jadi, misalnya kelas sepeda dideklarasikan sebagai kelas abstract, tidak dapat dilakukan instansiasi seperti ini: sepeda m = new sepeda();  final Jika sebuah kelas didefinisikan final, kelas tersebut tidak akan dapat diturunkan lagi menjadi kelas turunan yang lain.  class atribut ini digunakan untuk mendeklarasikan nama kelas.  extends atribut ini digunkan untuk mendeklarasikan kelas turunan dari kelas yang lain.  implements Andino Maseleno 34
  • 36. Bab 3 - Pemrograman Berorientasi Object pada Java atribut ini digunakan untuk mendeklarasikan sebuah kelas yang akan mengimplementasikan satu atau lebih interface Java. Inheritance Bagaimana Membuat Turunan Sebuah Kelas? Untuk membuat kelas yang dapat mewarisi sebuh kelas lain, kita hanya perlu mendeklarasikan kelas tersebut dengan menggunakan extends. Method Overriding Dalam beberapa kasus, seringkali Anda menemukan bahwa ada fungsi atau variabel dari sebuah kelas yang sama persis dengan variabel atau fungsi dari superclass-nya. Ketika hal ini terjadi, fungsi atau variabel pada kelas tersebut akan menimpa atau override fungsi dan variabel dari superclass-nya. Java Exception Apa yang terjadi ketika ada kesalahan pada program, misalnya sebuah program yang akan digunakan untuk membaca file “XXX”, namun program tersebut gagal membuka file “XXX” yang diinginkan. Selayaknya Anda akan melakukan pengecekan hal-hal seperti ini dengan if-else, yang jumlahnya akan terus membengkak seiring dengan besarnya pengecekan yang perlu dilakukan. Java menyediakan mekanisme yang lebih baik dalam penanganan error (error handling). Apa Exception itu? Exception adalah event yang terjadi ketika program menemui kesalahan saat instruksi program dijalankan. Banyak hal yang dapat menimbulakan event ini, misalnya dengan melakukan pembagian Dalam bahasa Java, ketika terjadi kesalahan, otomatis akan dilemparkan sebuah objek yang disebut exception, yang kemudian dapat diproses lebih lanjut oleh fungsi-fungsi yang siap menangani kesalahan tersebut. Proses pelemparan exception tersebut sering dikenal dengan istilah throwing exception, sedangkan proses penerimaan exception yang bersangkutan sering dikenal dengan istilah catch exception. Operator yang digunakan untuk penanganan Exception ini adalah try-catch, seperti di bawah ini: Andino Maseleno 35
  • 37. Bab 3 - Pemrograman Berorientasi Object pada Java try{ …………… }catch(Exception XXX){ …………… }catch(Exception XXX){ …………… }catch(Exception XXX){ …………… }finally{ …………… } Pada operator di atas, blok try,digunakan untuk menempatkan kode-kode program Java yang mengandung kode program yang mungkin melemparkan exception. Blok cacth, digunakan untuk menempatkan kode-kode program Java yang digunakan untuk menangani sebuah exception tertentu. Blok finally digunakan untuk clean up. Andino Maseleno 36
  • 38. Bab 4 - Java Foundation Class Bab 4 Java Foundation Class Java merupakan bahasa pemrograman lintas platform yang mampu berjalan di atas berbagai macam arsitektur, tanpa harus mengkompilasi ulang program yang dibuat. Kemampuannya yang cukup konsisten di UNIX, Windows, dan Macintosh secara bersamaan, cukup mengesankan banyak orang. Dengan demikian, ada dorongan untuk mengembangkan Java untuk keperluan komputer desktop, bukan hanya Internet. Sejak akhir 1994, sudah ada usaha dari Sun Microsystem untuk membuat Java mampu memiliki perangkat bergaya desktop. Pada saat itu, kemampuan antarmuka yang dimiliki Java masih sangat sederhana. Toolkit Java yang dikenal sebagai AWT (Abstrack Windowing Toolkit) merupakan cikal bakal dari pengembangan antarmuka yang lebih baik pada tahun-tahun berikutnya. Pada 1997, muncul JFC (Java Foundation Class) untuk kepentingan pembuatan aplikasi Window JFC yang dibentuk bersama JavaSoft dan Netscape, merupakan pengembangan dari AWT pada versi Java SDK 1.0 dan 1.1. Keberadaan JFC di dalam Java kemudian menjadi landasan dari Java SDK versi 1.2 dan selanjutnya (yang kemudian dikenal sebagai Java 2). JFC mempunyai nama kode Swing yang akan Anda temukan dalam setiap paket yang digunakan dalam aplikasi window nantinya. Hal yang menjadi kelebihan JFC, selain mempunyai banyak fungsi yang telah disediakan untuk berbagai kepentingan pemrograman visual, programmer bisa memilih Look & Feel yang diinginkan. Dengan demikian tampilan yang diperoleh bisa menyerupai Windows, Macintosh, atau X-Windos (UNIX). Aplikasi GUI yang pertama Di dalam pemrograman Java GUI, layar utama disebut sebagai frame. Dengan adanya frame, berbagai komponen GUI dapat ditampilkan. Contoh programnya: //Frame.java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Frame{ public static void main (String args[]){ JFrame frame = new JFrame(“Membuat Window”); frame.setSize(200,100); Andino Maseleno 37
  • 39. Bab 4 - Java Foundation Class frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Memilih Look and Feel Ada beberapa jenis tampilan platform (Look & Feel) yang dapat digunakan pada saat pembuatan window. Tampilan tersebut bisa menyerupai Windows, Macintosh, ataupun X-Window (Unix). Pekerjaan untuk mengubah Look & Feel ditangani oleh User Interface Manager (UIManager); Contoh programnya: //LookFeel.java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class LookFeel{ public static void main(String args[]){ try{ UIManager.setLooklAndFeel (UIManager.getSystemLookAndFeelClassName()); }catch (Exception exc){ System.out.println(“Error Loading L&F : “+exc); } JFrame frame = new JFrame(“Look & Feel”); frame.setSize(200,100); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } //Tree.java import java.awt.*; import java.util.*; import java.awt.event.*; import javax.swing.*; import javax.swing.tree.*; public class Tree { static JTree tree ; public static void main(String[] args) { JFrame frame = new JFrame("Tree"); frame.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { Window win = e.getWindow(); win.setVisible(false); win.dispose(); System.exit(0); } } ); Andino Maseleno 38
  • 40. Bab 4 - Java Foundation Class frame.getContentPane().setLayout( new BorderLayout() ); tree = new JTree(); JScrollPane sp = new JScrollPane( tree ); frame.getContentPane().add( sp, "Center" ); JButton btn = new JButton( "Test"); btn.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent e ) { test(); } } ); frame.getContentPane().add( btn, "South" ); frame.pack(); frame.show(); } static boolean angled = true; static void test() { try { UIManager.setLookAndFeel(new com.sun.java.swing.plaf.motif.MotifLookAndFeel()); } catch (Exception e) {} SwingUtilities.updateComponentTreeUI(tree.getRootPane()); tree.repaint(); } } Menampilkan Teks Setelah berhasil membangun frame, kini saatnya Anda mengisi frame dengan berbagai objek yang diinginkan. Salah satunya adalah label yang berfungsi untuk menampilkan teks di atas window. Untuk membuat label, Anda haru membangun objek baru dari JLabel. Contoh program //Label.java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Label{ public static void main (String args[]){ JFrame frame = new JFrame(“Membuat Label”); JLabel label = new Jlabel(“Hello World”); frame.getContentPane().add(label); frame.pack(); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Andino Maseleno 39
  • 41. Bab 4 - Java Foundation Class } } //Main.java import java.awt.*; import java.util.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.plaf.basic.*; public class Main { public static void main(String[] args) { JFrame frame = new JFrame("Main"); frame.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { Window win = e.getWindow(); win.setVisible(false); win.dispose(); System.exit(0); } } ); frame.getContentPane().setLayout( new FlowLayout() ); ImageIcon icon = new ImageIcon( "Andino.gif" ) ; JLabel l = new JLabel( "This is the first linenThis the second", icon, SwingConstants.LEFT ); l.setUI( new MultiLineLabelUI() ); l.setBorder( new EtchedBorder() ); frame.getContentPane().add( l ); l = new JLabel( "This nlabel nhas none nword non neach nline.", icon, SwingConstants.LEFT ); l.setHorizontalTextPosition( SwingConstants.LEFT ); l.setUI( new MultiLineLabelUI() ); l.setBorder( new EtchedBorder() ); frame.getContentPane().add( l ); frame.getContentPane().add( new JButton( "Button" ) ); frame.pack(); frame.show(); } } class MultiLineLabelUI extends BasicLabelUI { static { labelUI = new MultiLineLabelUI(); } protected String layoutCL( Andino Maseleno 40
  • 42. Bab 4 - Java Foundation Class JLabel label, FontMetrics fontMetrics, String text, Icon icon, Rectangle viewR, Rectangle iconR, Rectangle textR) { String s = layoutCompoundLabel( (JComponent) label, fontMetrics, splitStringByLines(text), icon, label.getVerticalAlignment(), label.getHorizontalAlignment(), label.getVerticalTextPosition(), label.getHorizontalTextPosition(), viewR, iconR, textR, label.getIconTextGap()); if( s.equals("") ) return text; return s; } static final int LEADING = SwingConstants.LEADING; static final int TRAILING = SwingConstants.TRAILING; static final int LEFT = SwingConstants.LEFT; static final int RIGHT = SwingConstants.RIGHT; static final int TOP = SwingConstants.TOP; static final int CENTER = SwingConstants.CENTER; public static String layoutCompoundLabel(JComponent c, FontMetrics fm, String[] text, Icon icon, int verticalAlignment, int horizontalAlignment, int verticalTextPosition, int horizontalTextPosition, Rectangle viewR, Rectangle iconR, Rectangle textR, int textIconGap) { boolean orientationIsLeftToRight = true; int hAlign = horizontalAlignment; int hTextPos = horizontalTextPosition; if (c != null) { if (!(c.getComponentOrientation().isLeftToRight())) { orientationIsLeftToRight = false; } } switch (horizontalAlignment) { Andino Maseleno 41
  • 43. Bab 4 - Java Foundation Class case LEADING: hAlign = (orientationIsLeftToRight) ? LEFT : RIGHT; break; case TRAILING: hAlign = (orientationIsLeftToRight) ? RIGHT : LEFT; break; } switch (horizontalTextPosition) { case LEADING: hTextPos = (orientationIsLeftToRight) ? LEFT : RIGHT; break; case TRAILING: hTextPos = (orientationIsLeftToRight) ? RIGHT : LEFT; break; } return layoutCompoundLabel(fm, text, icon, verticalAlignment, hAlign, verticalTextPosition, hTextPos, viewR, iconR, textR, textIconGap); } public static String layoutCompoundLabel( FontMetrics fm, String[] text, Icon icon, int verticalAlignment, int horizontalAlignment, int verticalTextPosition, int horizontalTextPosition, Rectangle viewR, Rectangle iconR, Rectangle textR, int textIconGap) { if (icon != null) { iconR.width = icon.getIconWidth(); iconR.height = icon.getIconHeight(); } else { iconR.width = iconR.height = 0; } boolean textIsEmpty = (text == null) || (text.length == 0) || (text.length == 1 && ( (text[0]==null) || text[0].equals("") )); String rettext = ""; if (textIsEmpty) { textR.width = textR.height = 0; } else { Andino Maseleno 42
  • 44. Bab 4 - Java Foundation Class Dimension dim = computeMultiLineDimension( fm, text ); textR.width = dim.width; textR.height = dim.height; } int gap = (textIsEmpty || (icon == null)) ? 0 : textIconGap; if (!textIsEmpty) { int availTextWidth; if (horizontalTextPosition == CENTER) { availTextWidth = viewR.width; } else { availTextWidth = viewR.width - (iconR.width + gap); } if (textR.width > availTextWidth && text.length == 1) { String clipString = "..."; int totalWidth = SwingUtilities.computeStringWidth(fm,clipString); int nChars; for(nChars = 0; nChars < text[0].length(); nChars++) { totalWidth += fm.charWidth(text[0].charAt(nChars)); if (totalWidth > availTextWidth) { break; } } rettext = text[0].substring(0, nChars) + clipString; textR.width = SwingUtilities.computeStringWidth(fm,rettext); } } if (verticalTextPosition == TOP) { if (horizontalTextPosition != CENTER) { textR.y = 0; } else { textR.y = -(textR.height + gap); } } else if (verticalTextPosition == CENTER) { textR.y = (iconR.height / 2) - (textR.height / 2); } else { // (verticalTextPosition == BOTTOM) if (horizontalTextPosition != CENTER) { textR.y = iconR.height - textR.height; } else { textR.y = (iconR.height + gap); } } if (horizontalTextPosition == LEFT) { textR.x = -(textR.width + gap); } else if (horizontalTextPosition == CENTER) { textR.x = (iconR.width / 2) - (textR.width / 2); Andino Maseleno 43
  • 45. Bab 4 - Java Foundation Class } else { // (horizontalTextPosition == RIGHT) textR.x = (iconR.width + gap); } int labelR_x = Math.min(iconR.x, textR.x); int labelR_width = Math.max(iconR.x + iconR.width, textR.x + textR.width) - labelR_x; int labelR_y = Math.min(iconR.y, textR.y); int labelR_height = Math.max(iconR.y + iconR.height, textR.y + textR.height) - labelR_y; int dx, dy; if (verticalAlignment == TOP) { dy = viewR.y - labelR_y; } else if (verticalAlignment == CENTER) { dy = (viewR.y + (viewR.height / 2)) - (labelR_y + (labelR_height / 2)); } else { // (verticalAlignment == BOTTOM) dy = (viewR.y + viewR.height) - (labelR_y + labelR_height); } if (horizontalAlignment == LEFT) { dx = viewR.x - labelR_x; } else if (horizontalAlignment == RIGHT) { dx = (viewR.x + viewR.width) - (labelR_x + labelR_width); } else { // (horizontalAlignment == CENTER) dx = (viewR.x + (viewR.width / 2)) - (labelR_x + (labelR_width / 2)); } textR.x += dx; textR.y += dy; iconR.x += dx; iconR.y += dy; return rettext; } protected void paintEnabledText(JLabel l, Graphics g, String s, int textX, int textY) { int accChar = l.getDisplayedMnemonic(); g.setColor(l.getForeground()); drawString(g, s, accChar, textX, textY); } protected void paintDisabledText(JLabel l, Graphics g, String s, int textX, int textY) { int accChar = l.getDisplayedMnemonic(); g.setColor(l.getBackground()); drawString(g, s, accChar, textX, textY); Andino Maseleno 44
  • 46. Bab 4 - Java Foundation Class } protected void drawString( Graphics g, String s, int accChar, int textX, int textY ) { if( s.indexOf('n') == -1 ) BasicGraphicsUtils.drawString(g, s, accChar, textX, textY); else { String[] strs = splitStringByLines( s ); int height = g.getFontMetrics().getHeight(); BasicGraphicsUtils.drawString(g, strs[0], accChar, textX, textY); for( int i = 1; i < strs.length; i++ ) g.drawString( strs[i], textX, textY + (height*i) ); } } public static Dimension computeMultiLineDimension( FontMetrics fm, String[] strs ) { int i, c, width = 0; for(i=0, c=strs.length ; i < c ; i++) width = Math.max( width, SwingUtilities.computeStringWidth(fm,strs[i]) ); return new Dimension( width, fm.getHeight() * strs.length ); } protected String str; protected String[] strs; public String[] splitStringByLines( String str ) { if( str.equals(this.str) ) return strs; this.str = str; int lines = 1; int i, c; for(i=0, c=str.length() ; i < c ; i++) { if( str.charAt(i) == 'n' ) lines++; } strs = new String[lines]; StringTokenizer st = new StringTokenizer( str, "n" ); int line = 0; while( st.hasMoreTokens() ) strs[line++] = st.nextToken(); return strs; } } Andino Maseleno 45
  • 47. Bab 4 - Java Foundation Class Textbox Textbox merupakan metode sederhana dalam aplikasi GUI untuk memberikan input. Pada pemrograman GUI yang menggunakan Java, textbox dikenal sebagai textfield. Contoh program //TextBox.java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class TextBox{ public static void main (String args[]){ JFrame frame = new JFrame (“Membuat TextField”); JLabel label = new JLabel (“Nama :”); JTextField textField = new JTextField(20); frame.getContentPane().setLayout(new FlowLayout()); frame.getContentPane().add(label); frame.getContentPane().add(textField); frame.pack(); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Contoh program: //tswing.java import java.awt.*; import com.sun.java.swing.*; import com.sun.java.swing.text.*; import com.sun.java.swing.event.*; import javax.swing.*; public class tswing extends JApplet implements DocumentListener{ JButton button; JTextField textfield; Document document; public void init() { getContentPane().setLayout(new FlowLayout()); textfield = new JTextField(10); getContentPane().add(textfield); document = textfield.getDocument(); document.addDocumentListener(this); button = new JButton("foo"); getContentPane().add(button); button.setEnabled(false); } public void changedUpdate(DocumentEvent e ) { if (e.getDocument()==document) disableIfEmpty(document); } public void insertUpdate( DocumentEvent e ){ if (e.getDocument()==document) disableIfEmpty(document); Andino Maseleno 46
  • 48. Bab 4 - Java Foundation Class } public void removeUpdate( DocumentEvent e ){ if (e.getDocument()==document) disableIfEmpty(document); } public void disableIfEmpty(Document d) { button.setEnabled(d.getLength() > 0); } } Membuat TextArea Text area merupakan textfield dengan kemampuan menampung isian lebih dari satu baris. Dalam banyak kasus lebih sering digunakan untuk mengisi catatan-catatan atau komentar pada setiap item data.Jika dilengkapi dengan ScrollPane, text area akan mempunyai scrollbar secara otomatis jika isian lebih banyak dari laua text area yang ditampilkan pada window. Pada contoh di bawah ini, pemanfaatan objek JTextArea dan JscrollPane secara bersamaan merupakan kombinasi yang biasa dilakukan untuk mengantisipasi isian yang panjangnya tidak dapat diperkirakan sebelumnya. Contoh program //TextArea.java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class TextArea{ JFrame frame = new JFrame (“Membuat TextArea”); JLabel label = new JLabel (“Keluhan :); JTextArea textArea = new JTextArea(5,20); JScrollPane scrollPane = new JScrollPane(textArea. JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); frame.getContentPane().setLayout(new FlowLayout()); frame.getContentPane().add(label); frame.getContentPane().add(scrollPane); frame.pack(); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Membuat Tombol Hampir semua programmer memanfaatkan tombol (button) untuk mengeksekusi kotak- kotak isian atau peringatan-peringatan pada program. Contoh programnya: //Tombol.java import.javax.swing.*; Andino Maseleno 47
  • 49. Bab 4 - Java Foundation Class import java.awt.*; import java.awt.event.*; public class Tombol{ public static void main(String args[]){ JFrame frame = new JFrame(“Membuat Tombol”); JButton tombolSetuju = new JButton (“Setuju”); tombolSetuju.setMnemonic(„S‟); JButton tombolBatal = new JButton (“Batal”); tombolBatal.setMnemonic(„B‟); frame.getContentPane().setLayout(new FlowLayout()); frame.getContentPane().add(tombolSetuju); frame.getContentPane().add(tombolBatal); frame.pack(); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Radio Button Untuk memberikan kesempatan kepada user dalam memilih satu saja dari sekian banyak pilihan yang disediakan, diperlukan radio button. Biasanya dimanfaatkan untuk pilihan jenis kelamin, agama, dan sebagainya. Dalam contoh di bawah ini, objek JRadioButton merupakan jawaban dari kebutuhan tersebut. Contoh programnya: //RadioButton.java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class RadioButton{ JFrame frame = new JFrame(“Membuat Radio Button”); JRadioButton rbutton1 = new JRadioButton(“Radio Button1”); rbutton1.setMnemonic(„R‟); rbutton1.setSelected(true); JRadioButton rbutton2 = new JRadioButton(“Radio Button2”); JRadioButton rbutton3 = new JRadioButton(“Radio Button3”); ButtonGroup group = new ButtonGroup(); group.add(rbutton1); group.add(rbutton2); group.add(rbutton3); frame.getContentPane().setLayout(new FlowLayout()); frame.getContentPane().add(rbutton1); frame.getContentPane().add(rbutton2); frame.getContentPane().add(rbutton3); frame.pack(); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Andino Maseleno 48
  • 50. Bab 4 - Java Foundation Class Check Box Jika radio button hanya bisa dimanfaatkan untuk memilih satu dari beberapa pilihan, dengan menggunakan check box kita dapat memilih beberapa bahkan keseluruhan dari semua pilihan yang disediakan. JCheckBox merupakan objek yang kita gunakan untuk menampilkan check box pada aplikasi Java GUI. Contoh programnya: //CheckBox.java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class CheckBox{ public static void main(String args[]){ JFrame frame = new JFrame(“Membuat Check Box”); JCheckBox cbox1 = new JCheckBox(“Check Box 1”); cbox1.setMnemonic(„C‟); cbox1.setSelected(true); JCheckBox cbox2 = new JCheckBox (“Check Box 2”); JCheckBox cbox3 = new JCheckBox(“Check Box 3”); frame.getContentPane().setLayout(new FlowLayout()); frame.getContentPane().add(cbox1); frame.getContentPane().add(cbox2); frame.getContentPane().add(cbox3); frame.pack(); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Combo Box Dalam hal pilih memilih dalam pemrograman, combo box juga merupakan objek yang menarik selain radio button. Selain hemat tempat karena cukup menyita satu lokasi saja, alternatif yang dipilih merupakan satu-satunya yang ditampilkan. Namun, sebelum membangun objek ini. Anda harus mempunyai daftar yang dimasukkan ke dalam array, untuk kemudian menjadi bagian dari JComboBox. Contoh programnya: //Pelatihan.java import.javax.swing.*; import java.awt.*; import java.awt.event.*; public class Pelatihan{ public static void main(String args[]){ JFrame frame = new JFrame(“Membuat Combo Button”); JLabel label = new JLabel(“Pilih Kelas Pelatihan :”); String[] comboStrings = {“J2SE”,”J2ME”,”J2EE”}; JComboBox comboList = new JComboBox(comboStrings); frame.getContentPane().setLayout(new FlowLayout()); frame.getContentPane().add(label); Andino Maseleno 49
  • 51. Bab 4 - Java Foundation Class frame.getContentPane().add(comboList); frame.pack(); frame.setVisible(true); frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE); } } Berikut beberapa contoh program dalam pembuatan Combo Box: //BlockComboBoxExample.java import java.util.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.plaf.metal.*; import javax.swing.plaf.basic.*; public class BlockComboBoxExample extends JFrame { final String SEPARATOR = "SEPARATOR"; public BlockComboBoxExample() { super("Block ComboBox Example"); String[][] str = {{"A" ,"B" ,"C" }, {"1" ,"2" ,"3" }, {"abc","def","ghi"} }; JComboBox combo = new JComboBox(makeVectorData(str)); combo.setRenderer(new ComboBoxRenderer()); combo.addActionListener(new BlockComboListener(combo)); getContentPane().setLayout(new FlowLayout()); getContentPane().add(combo); setSize(300, 100); setVisible(true); } private Vector makeVectorData(String[][] str) { boolean needSeparator = false; Vector data = new Vector(); for (int i=0;i<str.length;i++) { if (needSeparator) { data.addElement(SEPARATOR); } for (int j=0;j<str[i].length;j++) { data.addElement(str[i][j]); needSeparator = true; } } return data; } public static void main (String args[]) { BlockComboBoxExample frame = new BlockComboBoxExample(); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); Andino Maseleno 50
  • 52. Bab 4 - Java Foundation Class } class ComboBoxRenderer extends JLabel implements ListCellRenderer { JSeparator separator; public ComboBoxRenderer() { setOpaque(true); setBorder(new EmptyBorder(1, 1, 1, 1)); separator = new JSeparator(JSeparator.HORIZONTAL); } public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { String str = (value == null) ? "" : value.toString(); if (SEPARATOR.equals(str)) { return separator; } if(isSelected) { setBackground(list.getSelectionBackground()); setForeground(list.getSelectionForeground()); } else { setBackground(list.getBackground()); setForeground(list.getForeground()); } setFont(list.getFont()); setText(str); return this; } } class BlockComboListener implements ActionListener { JComboBox combo; Object currentItem; BlockComboListener(JComboBox combo) { this.combo = combo; combo.setSelectedIndex(0); currentItem = combo.getSelectedItem(); } public void actionPerformed(ActionEvent e) { String tempItem = (String)combo.getSelectedItem(); if (SEPARATOR.equals(tempItem)) { combo.setSelectedItem(currentItem); } else { currentItem = tempItem; } } } } // ToolTipComboBoxExample.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.plaf.basic.*; public class ToolTipComboBoxExample extends JFrame { Andino Maseleno 51
  • 53. Bab 4 - Java Foundation Class String[] items = {"jw" ,"ja" ,"la" }; String[] tooltips = {"Javanese ","Japanese ","Latin "}; public ToolTipComboBoxExample() { super("ToolTip ComboBox Example"); JComboBox combo = new JComboBox(items); combo.setRenderer(new MyComboBoxRenderer()); getContentPane().setLayout(new FlowLayout()); getContentPane().add(combo); } class MyComboBoxRenderer extends BasicComboBoxRenderer { public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { if (isSelected) { setBackground(list.getSelectionBackground()); setForeground(list.getSelectionForeground()); if (-1 < index) { list.setToolTipText(tooltips[index]); } } else { setBackground(list.getBackground()); setForeground(list.getForeground()); } setFont(list.getFont()); setText((value == null) ? "" : value.toString()); return this; } } public static void main (String args[]) { ToolTipComboBoxExample frame = new ToolTipComboBoxExample(); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.setSize(200, 140); frame.setVisible(true); } } Menampilkan Gambar Anda bisa memasukkan gambar ke dalam aplikasi window dengan menggunakan JLabel, seperti halnya label teks yang pertama kali dibahas. Namun, bagian teks yang akan ditampilkan pada label jika diganti dengan ImageIcon akan mengubah fungsi JLabel, yang semula hanya menampilkan teks menjadi menampilkan gambar. Contoh programnya: //Gambar.java import javax.swing.*; import java.awt.*; import java.awt.event.*; Andino Maseleno 52
  • 54. Bab 4 - Java Foundation Class public class Gambar{ public static void main(String args[]){ JFrame frame = new JFrame(“Memasukkan gambar”); JLabel label = new JLabel (“Selebritis tahun ini”); JLabel picture = new JLabel(new ImageIcon(“AndinoMaseleno.gif”)); picture.setPreferredSize(new Dimension(87,130)); frame.getContentPane().setLayout(new FlowLayout()); frame.getContentPane().add(label); frame.getContentPane().add(picture); frame.pack(); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Membuat Menu Bagian ini seringkali dibutuhkan dalam pembuatan program yang cukup kompleks. Dengan menggunakan menu, pengguna akan dimudahkan dalam menjalankan berbagai program dalam kesatuan aplikasi. Java menyediakan JMenuBar, JMenu, JMenuItem untuk kepentingan pembuatan menu. Contoh programnya: //Menu.java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Menu{ public static void main(String args[]){ JFrame frame = new JFrame(“Membuat Menu”); JLabel label = new JLabel (“Contoh Menu dengan Java”); label.setFont(new Font(“SansSerif”, Font.BOLD, 14); JMenubar menu = new JMenuBar(); frame.setJMenuBar(menu); JMenu submenu = new JMenu(“File”); submenu.setMnemonic(„F‟); JMenuItem inputdata = new JMenuItem(“Input Data”,‟I‟); JMenuItem editdata = new JMenuItem(“Edit Data”,‟E‟); JMenuItem hapusdata = new JMenuItem(“Hapus Data”,‟H‟); JMenuItem inputdata = new JMenuItem(“Keluar”,‟K‟); keluar.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){System.exit(0);} }}; menu.add(submenu); submenu.add(inputdata); submenu.add(editdata); submenu.add(hapusdata); submenu.addSeparator(); submenu.add(keluar); menu.setSize(400,100); menu.setLocation(60,60); menu.setVisible(true); frame.getContentPane().add(label); frame.pack(); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Andino Maseleno 53
  • 55. Bab 4 - Java Foundation Class } } JLabel picture = new JLabel(new ImageIcon(“AndinoMaseleno.gif”)); picture.setPreferredSize(new Dimension(87,130)); frame.getContentPane().setLayout(new FlowLayout()); frame.getContentPane().add(label); frame.getContentPane().add(picture); frame.pack(); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } //ComboBoxMenuExample.java import java.util.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.plaf.metal.*; import javax.swing.plaf.basic.*; import jp.gr.java_conf.tame.swing.menu.*; public class ComboBoxMenuExample extends JFrame { public ComboBoxMenuExample() { super("ComboBoxMenu Example"); String[] itemStr = { "name" ,"Red" ,"Blue", "number" ,"255,0,0" ,"0,0,255", // separator "system" ,"control" ,"controlHighlight" ,"controlShadow", "text" }; JMenuItem[] menuItems = new JMenuItem[7]; menuItems[0] = new JMenuItem(itemStr[ 1]); menuItems[1] = new JMenuItem(itemStr[ 2]); menuItems[2] = new JMenuItem(itemStr[ 4]); menuItems[3] = new JMenuItem(itemStr[ 5]); menuItems[4] = new JMenuItem(itemStr[ 8]); menuItems[5] = new JMenuItem(itemStr[ 9]); menuItems[6] = new JMenuItem(itemStr[10]); JMenu[] menus = new JMenu[4]; menus[0] = new JMenu(itemStr[0]); menus[1] = new JMenu(itemStr[3]); menus[2] = new JMenu(itemStr[6]); menus[3] = new JMenu(itemStr[7]); menus[0].add(menuItems[0]); menus[0].add(menuItems[1]); menus[1].add(menuItems[2]); menus[1].add(menuItems[3]); menus[3].add(menuItems[4]); menus[3].add(menuItems[5]); menus[2].add(menus[3]); Andino Maseleno 54
  • 56. Bab 4 - Java Foundation Class menus[2].add(menuItems[6]); JMenu menu = ComboMenuBar.createMenu(menuItems[0].getText()); menu.add(menus[0]); menu.add(menus[1]); menu.addSeparator(); menu.add(menus[2]); ComboMenuBar comboMenu = new ComboMenuBar(menu); JComboBox combo = new JComboBox(); combo.addItem(itemStr[ 1]); combo.addItem(itemStr[ 2]); combo.addItem(itemStr[ 4]); combo.addItem(itemStr[ 5]); combo.addItem(itemStr[ 8]); combo.addItem(itemStr[ 9]); combo.addItem(itemStr[10]); getContentPane().setLayout(new FlowLayout()); getContentPane().add(new ComboPanel("Fake ComboBox", comboMenu)); getContentPane().add(new ComboPanel("ComboBox" , combo)); } class ComboPanel extends JPanel { ComboPanel(String title, JComponent c) { setLayout(new FlowLayout()); setBorder(new TitledBorder(title)); add(c); } } public static void main (String args[]) { ComboBoxMenuExample frame = new ComboBoxMenuExample(); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.setSize(370, 100); frame.setVisible(true); } } Menggunakan Tabel Objek tabel juga disediakan dalam Java. Dengan tabel, data dimungkinkan untuk tampil dan diedit secara mudah. Namun sebelum ditampilkan dalam tabel, harus dibuat array terlebih dahulu sebagai bagian dari JTable. Contoh programnya: //Pelatihan.java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Pelatihan{ public static void main(String args[]){ Andino Maseleno 55
  • 57. Bab 4 - Java Foundation Class String[] columnNames = {“Senin”, “Selasa”, “Rabu”}; String[] tableData = {{“J2SE”,”Delphi”,”Turbo Pascal”},{“J2ME”, “Visual Basic”, “Turbo C”}, {“J2EE”,”Visual Foxpro”,”Turbo C++”}}; Jframe frame = new Jframe(“Menggunakan tabel”); JTable table = new JTable(tableData, columnNames); JscrollPane gridtable = new JscrollPane(table); frame.getContentPane().setLayout(new FlowLayout()); frame.pack(); frame.setVisible(true); frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE); } } Berikut beberapa contoh program penggunaan Java Foundation Class pada pembuatan tabel: //CellBorderTableExample.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import javax.swing.event.*; import javax.swing.border.*; public class CellBorderTableExample extends JFrame { public CellBorderTableExample() { super( "Cell Border Example" ); final Color color = UIManager.getColor("Table.gridColor"); DefaultTableModel dm = new DefaultTableModel(12,6) { public void setValueAt(Object obj, int row, int col) { if (obj instanceof MyData) { super.setValueAt(obj, row, col); } else { MyData myData=null; Object oldObject = getValueAt(row, col); if (oldObject == null) { myData = new MyData(obj, new LinesBorder(color,0)); } else if (oldObject instanceof MyData) { myData = (MyData)oldObject; } else { System.out.println("error"); return; } myData.setObject(obj); super.setValueAt(myData, row, col); } } }; JTable table = new JTable( dm ); table.setIntercellSpacing(new Dimension(0,0)); table.setCellSelectionEnabled(true); table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); table.setDefaultRenderer(Object.class, new BorderCellRenderer()); JScrollPane scroll = new JScrollPane( table ); ThicknessPanel thicknessPanel = new ThicknessPanel(); Box box = new Box(BoxLayout.Y_AXIS); Andino Maseleno 56
  • 58. Bab 4 - Java Foundation Class box.add(thicknessPanel); box.add(new ButtonPanel(table, thicknessPanel)); getContentPane().add(scroll, BorderLayout.CENTER); getContentPane().add(box, BorderLayout.EAST); } public static void main(String[] args) { CellBorderTableExample frame = new CellBorderTableExample(); frame.addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent e ) { System.exit(0); } }); frame.setSize( 400, 240 ); frame.setVisible(true); } class ThicknessPanel extends JPanel { JComboBox[] combos; ThicknessPanel() { String[] str = {"top","left","bottom","right"}; int n = str.length; setLayout(new GridLayout(n,2)); setBorder(new TitledBorder("Thickness")); combos = new JComboBox[n]; for (int i=0;i<n;i++) { combos[i] = new JComboBox(new Object[]{"0","1","2","3"}); add(new JLabel(str[i])); add(combos[i]); } } public Insets getThickness() { Insets insets = new Insets(0,0,0,0); insets.top = combos[0].getSelectedIndex(); insets.left = combos[1].getSelectedIndex(); insets.bottom = combos[2].getSelectedIndex(); insets.right = combos[3].getSelectedIndex(); return insets; } } class ButtonPanel extends JPanel { JTable table; ThicknessPanel thicknessPanel; Color color = UIManager.getColor("Table.gridColor"); ButtonPanel(JTable table, ThicknessPanel thicknessPanel) { this.table = table; this.thicknessPanel = thicknessPanel; setLayout(new GridLayout(3,1)); setBorder(new TitledBorder("Append Lines")); final JCheckBox oneBlock = new JCheckBox("Block"); JButton b_and = new JButton("REPLACE"); JButton b_or = new JButton("OR"); add(oneBlock); add(b_and); Andino Maseleno 57