Andino Maseleno - Modul Java

1,891 views
1,819 views

Published on

Modul untuk mempelajari Bahasa Pemrograman Java dari dasar sampai dengan mahir, disertai dengan banyak contoh dan juga konsep pemrograman Java

Published in: Technology, News & Politics
1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total views
1,891
On SlideShare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
210
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Andino Maseleno - Modul Java

  1. 1. DITERBITKANMODUL JAVA PERTAMA KALI PADA TAHUN 2002 Andino Maseleno
  2. 2. Bab 1 - Pengenalan JavaBab 1Pengenalan JavaApakah Java itu? “Java adalah suatu teknologi di dunia software komputer. Selain merupakan suatu bahasapemrograman, Java juga merupakan suatu platform.” “Java merupakan teknologi di mana teknologi tersebut mencakup Java sebagai bahasapemrograman yang memiliki sintaks dan aturan pemrograman tersendiri, juga mencakup Javasebagai platform yaitu di mana teknologi ini memiliki virtual machine dan library yang diperlukanuntuk 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 Goslingdalam suatu proyek dari Sun Microsystem yang memiliki kode Green dengan tujuan untukmenghasilkan bahasa komputer sederhana yang dapat dijalankan di peralatan sederhana dengantidak terikat pada arsitektur tertentu. Mula-mula James Gosling menyebut bahasa pemrograman yang dihasilkan dengan OAKtetapi karena OAK sendiri merupakan nama dari bahasa pemrograman komputer yang sudah adamaka kemudian Sun mengubahnya menjadi Java. Akhirnya setelah melalui beberapa transformasi dan proses, Sun akhirnya meluncurkanbrowser dari Java yang disebut Hot Java yang mampu menjalankan applet. Setelah itu teknologiJava diadopsi oleh Netscape yang memungkinkan program Java dijalankan di browser Netscapesejak Januari 1996 yang kemudian diikuti oleh Internet Explorer. Karena keunikan dankelebihannya, 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 terusberkembang hingga muncul JDK 1.1 kemudian JDK 1.2 yang menghasilkan banyak peningkatandan perbaikan sehingga mulai versi ini Java disebut Java 2. Perubahan yang utama adalah adanyaSwing yang merupakan teknologi GUI (Graphical User Interface) yang mampu menghasilkanaplikasi window yang benar-benar portabel. Dan pada tahun-tahun berikutnya (1998-1999) lahirlah teknologi J2EE (Java 2 EnterpriseEdition) yang berbasis J2SE yang diawali dengan servlet dan EJB kemudian diikuti JSP. KelebihanAndino Maseleno 1
  3. 3. Bab 1 - Pengenalan JavaJava di lingkungan network dan terdistribusi serta kemampuan multithreading mengakibatkan Javamenjadi cepat populer di lingkungan server side. Terakhir teknologi Java melahirkan J2ME (Java 2 Micro Edition) yang sudah diadopsi olehNokia, Siemens, Sony Ericsson, Motorola, Samsung untuk menghasilkan aplikasi mobile baikgames maupun software bisnis dan berbagai jenis software lain yang dapat dijalankan di peralatanmobile seperti ponsel.Kelebihan Java Mengapa Java sering dibicarakan dan memiliki daya tarik bagi para programmer? KarenaJava merupakan suatu teknologi yang unik dan revolusioner dan merupakan teknologi pertama didunia software yang memiliki semboyan “write once, run anywhere”. Semboyan tersebut telahterbukti karena banyak program Java dapat dijalankan di berbagai platform Sistem Operasi, sepertiLinux, Windows maupun Unix. Java telah mengatasi masalah portabilitas yang sering menjadi kendala dan hambatan dalampembuatan suatu aplikasi software. Mengapa? Karena software developer harus mengeluarkanbanyak tenaga, pikiran dan waktu untuk menghasilkan aplikasi yang dapat berjalan di operatingsystem atau platform lain. Java dapat mengatasi kendala tersebut karena program Java dapat dijalankan secara langsungtanpa banyak perubahan berarti di sistem operasi atau platform lain. Java juga didesain untuk menghasilkan program dengan seminimal mungkin bug karenakemampuan 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. 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 JavaSecara 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 denganAndino Maseleno 3
  5. 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. 6. Bab 2 – Dasar-dasar Pemrograman JavaBab 2Dasar-dasar Pemrograman JavaVariabel pada Java Variabel merupakan container yang digunakan untuk menyimpan suatu nilai pada sebuahprogram 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 twos complement short Short integer 16-bit twos complement int Integer 32-bit twos complement long Long integer 64-bit twos 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 falseContoh 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. 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 interfaceOperator pada JavaOperator pada Java dibedakan menjadi beberapa jenis, yaitu: Operator Aritmetika Operator Relasional Operator Kondisional Operator Shift dan Lojik Operator Assignment Operator lainnyaAndino Maseleno 6
  8. 8. Bab 2 – Dasar-dasar Pemrograman JavaOperator 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 op2Contoh 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. 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.javapublic 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. 10. Bab 2 – Dasar-dasar Pemrograman JavaOperator 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 opOperator RelasionalOperator 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 op2Contoh 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. 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 dibawah:Andino Maseleno 10
  12. 12. Bab 2 – Dasar-dasar Pemrograman JavaTabel 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 keduanyaOperator 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 op2Operator BitwiseOperator 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 complementBitwise ANDBitwise AND akan menghasilkan bit “1” jika kedua operator bernilai bit “1”.Andino Maseleno 11
  13. 13. Bab 2 – Dasar-dasar Pemrograman JavaTabel 2.8 Bitwise AND op1 op2 op1 & op2 0 0 0 0 1 0 1 0 0 1 1 1Bitwise ORBitwise 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 1Bitwise XORBitwise XOR akan menghasilkan bit “1” jika kedua operator memiliki nilai bit yang berbedaTabel 2.10 Bitwise XOR op1 op2 op1^op2 0 0 0 0 1 1 1 0 1 1 1 0Contoh program //BitwiseDemo.java public class BitwiseDemo {Andino Maseleno 12
  14. 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 sebuahvariabel. Operator assignment hanya berupa „=‟,Andino Maseleno 13
  15. 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 >>> op2Operator 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 operandContoh 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. 16. Bab 2 – Dasar-dasar Pemrograman Java nBuku++; // Increment jumlah buku System.out.println("Saya mempunyai " + nBuku + " buku" + (nBuku == 1 ? "." : "s.")); } }Controlflow pada JavaOperasi KondisionalIf-Else Statement if-else digunakan untuk mengeksekusi sebuah blok jika memenuhi sebuahkondisi 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 aksiA, jika tidak, lakukan aksi B. Dua percabangan ini dimungkinkan dengan menggunakan if-else()sebagai berikut:Andino Maseleno 15
  17. 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, jikakondisi 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. 18. Bab 2 – Dasar-dasar Pemrograman Java//NumberCheck2.javapublic 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 isodd }}//LetterCheck1.javapublic 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 memilikihuruf besar " + symbol); else if(symbol >= a) if(symbol <= z) System.out.println("Andamemiliki huruf kecil " + symbol); else System.out.println(Andino Maseleno 17
  19. 19. Bab 2 – Dasar-dasar Pemrograman Java "Kode lebih besardari a, tetapi ini bukan huruf"); else System.out.println( "Kode lebih kecildari a dan bukan huruf"); } else System.out.println("Kode lebih kecildari A dan bukan huruf!!"); }}//LetterCheck2.javapublic 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.javapublic 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. 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 sebuahkondisi 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. 21. Bab 2 – Dasar-dasar Pemrograman Java//SwitchDemo2.javapublic 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. 22. Bab 2 – Dasar-dasar Pemrograman JavaOperasi PengulanganWhile Statement while digunakan untuk mengeksekusi sebuah blok secara berulang selamamemenuhi kondisi tertentu. Sintaks penggunaannya adalah sebagai berikut: while (ekspresi) { statement }Pada pernyataan di atas, selama ekspresi menghasilkan nilai true, statement yang ada akandieksekusi 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. 23. Bab 2 – Dasar-dasar Pemrograman JavaDo-While Sama halnya dengan while, statement do-while digunakan untuk mengeksekusi sebuah bloksecara berulang sampai tidak memenuhi kondisi tertentu. Pada penggunaan while, ekspresidiperiksa pada saat awal, jadi ada kemungkinan blok statement dalam while tidak pernahdieksekusi. Pada penggunaan do-while, ekspresi tidak diperiksa pada saat awal eksekusi, jadiminimal 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 sebuahrange tertentu. Sintaks penggunaannya adalah sebagai berikut:Andino Maseleno 22
  24. 24. Bab 2 – Dasar-dasar Pemrograman Java for (inisialisasi;terminasi;increment) { statement }Increment dalam for merupakan ekspresi yang dieksekusi pada awal eksekusi for. Terminasidigunakan untuk menentukan kapan pengulangan akan dihentikan. Increment merupakan ekspresiyang akan dieksekusi setiap selesai melakukan satu looping (pengulangan). Perlu diperhatikanbahwa ketiga bagian di dalam for() bersifat opsional, jadi boleh tidak ada. Namun, jika ketigabagian 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. 25. Bab 2 – Dasar-dasar Pemrograman Java//ForLoop3.javaclass ForLoop3{ public static void main(String args[]){ int idx=0; for(;idx<10;){ System.out.println(idx +” “); idx++; } System.out.println(“”); }}//ForLoop4.javapublic 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.javapublic 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. 26. Bab 2 – Dasar-dasar Pemrograman Java while(j <= i) factorial *= j++; System.out.println(i + "!" + " adalah " + factorial); } }}//Factorial2.javapublic 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.javapublic class BilanganPrima{ public static void main(String[] args) { int nValues = 50; boolean isPrime = true;Andino Maseleno 25
  27. 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.javaclass 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. 28. Bab 3 - Pemrograman Berorientasi Object pada JavaBab 3Pemrograman Berorientasi Object pada JavaKonsep Pemrograman Berorientasi Object Untuk dapat menguasai pemrograman Java, Anda harus mengerti dengan baik konseppemrograman 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 adadi dunia nyata. Jika kita perhatikan lebih lanjut pada dasarnya ada dua karakteristik yang utamapada 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 behaviourContoh 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 lunakberorientasi objek akan menggunakan model object juga. Object dalam perangkat lunak akanmenyimpan state-nya dalam variabel dan menyimpan informasi tingkah laku (behaviour) dalammethod-method atau fungsi-fungsi/prosedur. Gambar 3.1 Pemodelan objectAndino Maseleno 27
  29. 29. Bab 3 - Pemrograman Berorientasi Object pada Java Gambar 3.2 Pemodelan object sepeda dengan variabel dan method-nyaContoh program//mhs.javaclass 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. 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 hakakses pada sebuah variabel atau method dari object. Pembungkusan variabel dan method dalamsebuah object dalam bagian yang terlindungi inilah yang disebut enkapsulasi. Jika Anda perhatikanGambar 3.2 yang merupakan model object sepeda, tampak bahwa bagian lingkaran di dalam tidakboleh diakses langsung dari luar (didefinisikan private). Contohnya terdapat pada programmhs.java di atas, bagian private misalnya nama, bisa diakses dengan memanfaatkan bagian-bagianpada 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 untukberkomunikasi dengan object Java yang lain. Salah satu keuntungan adanya message ini adalah dimungkinkannya terjadi aplikasi yangterdistribusi dimana object-object Java dapat berinteraksi melalui jaringan. Contoh implementasinyaadalah dalam CORBA (Common Object Request Broker) dan Java-RMI.Andino Maseleno 29
  31. 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 AndaClass Class berbeda dengan object. Sebagai analogi, ada contoh sebagai berikut di dunia ini tidakada 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 dalamkelompok “homo sapiens”. Class merupakan prototype yang mendefinisikan variable-variabel dan method-methodsecara 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 classsepeda yang kemudian boleh muncul object-object yang ber-class sepeda dengan kondisi yangberbeda-beda, misalnya object sepeda A dengan kondisi kemudi ke arah depan, gigi sepeda padaposisi 4 dan object sepeda B yang lain dengan kondisi kemudi ke arah kiri, gigi sepeda pada posisi2. Contoh program Java berikut ini akan menunjukkan beda antara class dan object, sebagaiimplementasi kasus object sepeda di atas.Andino Maseleno 30
  32. 32. Bab 3 - Pemrograman Berorientasi Object pada Java//sepeda.javaclass 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 classyang telah terdefinisi tersebut. Pada kasus class sepeda, dimungkinkan kita mendefinisikan class sepeda yang lain yangmenggunakan referensi class sepeda, seperti class sepeda balap, sepeda gunung, sepeda motor.Andino Maseleno 31
  33. 33. Bab 3 - Pemrograman Berorientasi Object pada JavaClass sepeda yang baru tersebut (sepeda balap, sepeda gunung, sepeda motor) akan mewarisiberbagai atribut dan behaviour dari class sepeda. Pewarisan itu misalnya, sepeda memiliki atributroda, maka sepeda balap, sepeda gunung dan sepeda motor pun akan memiliki atribut roda. Classsepeda balap, sepeda gunung dan sepeda motor dalam hal ini disebut sebagai subclass dari classsepeda. Class sepeda, pada sisi lain, akan menjadi superclass dari sepeda balap, sepeda gunung, dansepeda motor. Setiap subclass akan mewarisi state (variabel-variabel) dan behaviour (method-method)dari superclass-nya. Subclass kemudian dapat menambahkan state dan behaviour baru yangspesifik 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 sepedaInterfaceAndino Maseleno 32
  34. 34. Bab 3 - Pemrograman Berorientasi Object pada Java Sebagai tambahan di Java dikenal konsep interface, yang merupakan device yangdigunakan untuk komunikasi antar object berbeda yang tidak memiliki hubungan apa pun. Interfacebisa dikatakan sebagai protokol komunikasi antar object tersebut.Pemrograman Berorientasi Object pada JavaClass pada JavaSecara 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 declarationdan class body. Deklarasi class (class declaration mendefinisikan nama kelas dan atributnya,sedangkan class body mendeklarasikan variabel dan method. Gambar 3.6 Contoh classDeklarasi Class pada JavaAndino Maseleno 33
  35. 35. Bab 3 - Pemrograman Berorientasi Object pada Java Seperti telah Anda perhatikan pada contoh deklarasi kelas di atas, deklarasi sebuah classpada Java mengikuti sintaks berikut ini (sintaks berikut sudah terurut berdasarkan kemungkinanpendeklarasian): Gambar 3.7 Sintaks deklarasi classAdapun 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. implementsAndino Maseleno 34
  36. 36. Bab 3 - Pemrograman Berorientasi Object pada Java atribut ini digunakan untuk mendeklarasikan sebuah kelas yang akan mengimplementasikan satu atau lebih interface Java.InheritanceBagaimana Membuat Turunan Sebuah Kelas? Untuk membuat kelas yang dapat mewarisi sebuh kelas lain, kita hanya perlumendeklarasikan kelas tersebut dengan menggunakan extends.Method Overriding Dalam beberapa kasus, seringkali Anda menemukan bahwa ada fungsi atau variabel darisebuah kelas yang sama persis dengan variabel atau fungsi dari superclass-nya. Ketika hal initerjadi, fungsi atau variabel pada kelas tersebut akan menimpa atau override fungsi dan variabel darisuperclass-nya.Java Exception Apa yang terjadi ketika ada kesalahan pada program, misalnya sebuah program yang akandigunakan untuk membaca file “XXX”, namun program tersebut gagal membuka file “XXX” yangdiinginkan. Selayaknya Anda akan melakukan pengecekan hal-hal seperti ini dengan if-else, yangjumlahnya akan terus membengkak seiring dengan besarnya pengecekan yang perlu dilakukan. Javamenyediakan mekanisme yang lebih baik dalam penanganan error (error handling).Apa Exception itu? Exception adalah event yang terjadi ketika program menemui kesalahan saat instruksiprogram dijalankan. Banyak hal yang dapat menimbulakan event ini, misalnya dengan melakukanpembagian Dalam bahasa Java, ketika terjadi kesalahan, otomatis akan dilemparkan sebuah objek yangdisebut exception, yang kemudian dapat diproses lebih lanjut oleh fungsi-fungsi yang siapmenangani kesalahan tersebut. Proses pelemparan exception tersebut sering dikenal dengan istilahthrowing exception, sedangkan proses penerimaan exception yang bersangkutan sering dikenaldengan istilah catch exception. Operator yang digunakan untuk penanganan Exception ini adalah try-catch, sepertidi bawah ini:Andino Maseleno 35
  37. 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 Javayang mengandung kode program yang mungkin melemparkan exception. Blok cacth, digunakanuntuk menempatkan kode-kode program Java yang digunakan untuk menangani sebuah exceptiontertentu. Blok finally digunakan untuk clean up.Andino Maseleno 36
  38. 38. Bab 4 - Java Foundation ClassBab 4Java Foundation Class Java merupakan bahasa pemrograman lintas platform yang mampu berjalan di atas berbagaimacam arsitektur, tanpa harus mengkompilasi ulang program yang dibuat. Kemampuannya yangcukup konsisten di UNIX, Windows, dan Macintosh secara bersamaan, cukup mengesankanbanyak orang. Dengan demikian, ada dorongan untuk mengembangkan Java untuk keperluankomputer desktop, bukan hanya Internet. Sejak akhir 1994, sudah ada usaha dari Sun Microsystemuntuk membuat Java mampu memiliki perangkat bergaya desktop. Pada saat itu, kemampuanantarmuka yang dimiliki Java masih sangat sederhana. Toolkit Java yang dikenal sebagai AWT(Abstrack Windowing Toolkit) merupakan cikal bakal dari pengembangan antarmuka yang lebihbaik pada tahun-tahun berikutnya. Pada 1997, muncul JFC (Java Foundation Class) untuk kepentingan pembuatan aplikasiWindow JFC yang dibentuk bersama JavaSoft dan Netscape, merupakan pengembangan dari AWTpada versi Java SDK 1.0 dan 1.1. Keberadaan JFC di dalam Java kemudian menjadi landasan dariJava SDK versi 1.2 dan selanjutnya (yang kemudian dikenal sebagai Java 2). JFC mempunyainama kode Swing yang akan Anda temukan dalam setiap paket yang digunakan dalam aplikasiwindow nantinya. Hal yang menjadi kelebihan JFC, selain mempunyai banyak fungsi yang telah disediakanuntuk berbagai kepentingan pemrograman visual, programmer bisa memilih Look & Feel yangdiinginkan. Dengan demikian tampilan yang diperoleh bisa menyerupai Windows, Macintosh, atauX-Windos (UNIX).Aplikasi GUI yang pertama Di dalam pemrograman Java GUI, layar utama disebut sebagai frame. Dengan adanyaframe, berbagai komponen GUI dapat ditampilkan.Contoh programnya://Frame.javaimport 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. 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 saatpembuatan 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.javaimport 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.javaimport 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. 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(newcom.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 berbagaiobjek yang diinginkan. Salah satunya adalah label yang berfungsi untuk menampilkan teks di ataswindow. Untuk membuat label, Anda haru membangun objek baru dari JLabel.Contoh program//Label.javaimport 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. 41. Bab 4 - Java Foundation Class }}//Main.javaimport 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 thesecond", icon, SwingConstants.LEFT ); l.setUI( new MultiLineLabelUI() ); l.setBorder( new EtchedBorder() ); frame.getContentPane().add( l ); l = new JLabel( "This nlabel nhas none nword nonneach 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. 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. 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. 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. 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, inttextX, 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, inttextX, int textY) { int accChar = l.getDisplayedMnemonic(); g.setColor(l.getBackground()); drawString(g, s, accChar, textX, textY);Andino Maseleno 44
  46. 46. Bab 4 - Java Foundation Class } protected void drawString( Graphics g, String s, int accChar, inttextX, 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. 47. Bab 4 - Java Foundation ClassTextbox Textbox merupakan metode sederhana dalam aplikasi GUI untuk memberikan input. Padapemrograman GUI yang menggunakan Java, textbox dikenal sebagai textfield.Contoh program//TextBox.javaimport 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. 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 padasetiap item data.Jika dilengkapi dengan ScrollPane, text area akan mempunyai scrollbar secaraotomatis jika isian lebih banyak dari laua text area yang ditampilkan pada window. Pada contoh dibawah ini, pemanfaatan objek JTextArea dan JscrollPane secara bersamaan merupakan kombinasiyang biasa dilakukan untuk mengantisipasi isian yang panjangnya tidak dapat diperkirakansebelumnya.Contoh program//TextArea.javaimport 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.javaimport.javax.swing.*;Andino Maseleno 47
  49. 49. Bab 4 - Java Foundation Classimport 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 banyakpilihan yang disediakan, diperlukan radio button. Biasanya dimanfaatkan untuk pilihan jeniskelamin, agama, dan sebagainya. Dalam contoh di bawah ini, objek JRadioButton merupakanjawaban dari kebutuhan tersebut.Contoh programnya://RadioButton.javaimport 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. 50. Bab 4 - Java Foundation ClassCheck Box Jika radio button hanya bisa dimanfaatkan untuk memilih satu dari beberapa pilihan,dengan menggunakan check box kita dapat memilih beberapa bahkan keseluruhan dari semuapilihan yang disediakan. JCheckBox merupakan objek yang kita gunakan untuk menampilkan checkbox pada aplikasi Java GUI.Contoh programnya://CheckBox.javaimport 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 yangmenarik selain radio button. Selain hemat tempat karena cukup menyita satu lokasi saja, alternatifyang dipilih merupakan satu-satunya yang ditampilkan. Namun, sebelum membangun objek ini.Anda harus mempunyai daftar yang dimasukkan ke dalam array, untuk kemudian menjadi bagiandari JComboBox.Contoh programnya://Pelatihan.javaimport.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. 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.javaimport 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. 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.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.plaf.basic.*;public class ToolTipComboBoxExample extends JFrame {Andino Maseleno 51
  53. 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 ditampilkanpada label jika diganti dengan ImageIcon akan mengubah fungsi JLabel, yang semula hanyamenampilkan teks menjadi menampilkan gambar.Contoh programnya://Gambar.javaimport javax.swing.*;import java.awt.*;import java.awt.event.*;Andino Maseleno 52
  54. 54. Bab 4 - Java Foundation Classpublic 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 programdalam kesatuan aplikasi. Java menyediakan JMenuBar, JMenu, JMenuItem untuk kepentinganpembuatan menu.Contoh programnya://Menu.javaimport 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 voidactionPerformed(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. 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.javaimport 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. 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 dandiedit secara mudah. Namun sebelum ditampilkan dalam tabel, harus dibuat array terlebih dahulusebagai bagian dari JTable.Contoh programnya://Pelatihan.javaimport javax.swing.*;import java.awt.*;import java.awt.event.*;public class Pelatihan{ public static void main(String args[]){Andino Maseleno 55

×