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
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
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