You are on page 1of 37

INSTALASI

mulai mulai

Control
jdk-6u3-windows-i586-p.exe Panel

Java™ SE Development Kit 6

Ubah setingan
Performance and
Update 3 - License
Maintenance

Windows
ACCEPT nb : pada Classical
View pilihan ini tidak
ada.

Install to

c:\jdk6\ System

Install to Advanced

c:\jre6\
Environment
Variables
selesai

System Variables

PATH
Instalasi jdk + jre

Edit

selesai
Pada bagian akhir Variabel
value tambahkan

;c:\jdk6\bin OK

OK OK

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 1/37


TES INSTALASI

E:\terserah\………>javac
Usage: javac <options> <source files>
where possible options include:
-g Generate all debugging info
-g:none Generate no debugging info
-g:{lines,vars,source} Generate only some debugging info
-nowarn Generate no warnings
-verbose Output messages about what the compiler is doing
-deprecation Output source locations where deprecated APIs are
used
-classpath <path> Specify where to find user class files
-cp <path> Specify where to find user class files
-sourcepath <path> Specify where to find input source files
-bootclasspath <path> Override location of bootstrap class files
-extdirs <dirs> Override location of installed extensions
-endorseddirs <dirs> Override location of endorsed standards path
-d <directory> Specify where to place generated class files
-encoding <encoding> Specify character encoding used by source files
.
.
.
Jika Java Development Kit (JDK) sudah terinstall dengan benar dan
setting path untuk compilernya benar maka bila diketikkan
JAVAC dari command promt manapun akan keluar seperti tampilan diatas.

E:\terserah\………>java
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)

where options include:


-client to select the "client" VM
-server to select the "server" VM
-hotspot is a synonym for the "client" VM [deprecated]
The default VM is client.

-cp <class search path of directories and zip/jar files>


-classpath <class search path of directories and zip/jar files>
A ; separated list of directories, JAR archives,
and ZIP archives to search for class files.
-D<name>=<value>
set a system property
-verbose[:class|gc|jni]
enable verbose output
-version print product version and exit

.
Jika Java Runtime Environment (JRE) sudah terinstall dengan benar dan
setting path untuk compilernya benar maka bila diketikkan
JAVA dari command promt manapun akan keluar seperti tampilan diatas.

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 2/37


APLIKASI JAVA-ku YANG PERTAMA
public class zebelAHku {
public static void main(String args[]){
System.out.print("Sebelahku manis sekali.");
}
}
Gunakan NOTEPAD untuk menuliskan program diatas. Kemudian disimpan dengan
nama file

zebelAHku.java

nb : java adalah bahasa pemrograman yang CASE-SENSITIVE, yang maksudnya besar


kecil huruf sangat diperhatikan.

Compile Java file

E:\DATA\…>javac zebelAHku.java
Bila tidak terjadi errrrrror maka akan muncul file baru bernama

zebelAHku.class

Jalankan Aplikasi anda bos

E:\DATA\…..> java zebelAHku


Sebelahku manis sekali.
Tambahkan loop FOR

public class zebelAHku {


public static void main(String args[]){
for(int i=0;i<=10;i++)
System.out.print("Sebelahku manis sekali.");
}
}
Silahkan ulangi men-JAVAC dan men-JAVA

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 3/37


Ubah deklarasi variabel
public class zebelAHku {
public static void main(String args[]){

int i;
String s1 = "Sebelahku manis sekali.";
for(i=0;i<=10;i++)
System.out.print(s1);
}
}

Silahkan ulangi men-JAVAC dan men-JAVA

Tambahkan string
public class zebelAHku {
public static void main(String args[]){

int i;
String s1 = "Sebelahku manis sekali.";
String s2 = "Semoga dia jadi milikku.";
for(i=0;i<=10;i++) {
System.out.print(s1);
System.out.println(s2);
}
}
}

Silahkan ulangi men-JAVAC dan men-JAVA

ganti loop FOR dengan WHILE


public class zebelAHku {
public static void main(String args[]){

int i=10;
String s1 = "Sebelahku manis sekali.";
String s2 = "Semoga dia jadi milikku.";

while(--i>= 0) {
System.out.print(s1);
System.out.println(s2);
}
}
}

Silahkan ulangi men-JAVAC dan men-JAVA

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 4/37


ganti loop WHILE dengan DO WHILE

public class zebelAHku {


public static void main(String args[]){

int i=10;
String s1 = "Sebelahku manis sekali.";
String s2 = "Semoga dia jadi milikku.";

do {
System.out.print(s1);
System.out.println(s2);
}while(--i>= 0);
}
}
Silahkan ulangi men-JAVAC dan men-JAVA

Kita sudah belajar bagaimana menulis, meng-compile dan menjalankan program java.
Tapi masak sih java yang beigut ngetop kok tampilnya dari DOS prompt gitu ?
Kali ini kita akan melangkah ke pemrogramam GUI ( Graphical User Interface ). Yang
sekarang popular untuk GUI di java adalah SWING, dengan nama package
javax.swing.*
tapi dia punya pendahulu, alias ortu, gitulah istilah gokilnya nama packagenya
java.awt.*
so yaaa berdasarkan sopan and santun maka kita kenalan sama ortunya dulu tho.

cebelahKU.java
import java.awt.Frame;

public class cebelahKU{


public static void main(String args[]){
Frame f = new Frame();
f.setVisible(true);
}
}

Silahkan ulangi men-JAVAC dan men-JAVA

Window-nya muncul disebelah kiri atas dan berukuran kecil,


masih malu sama bos-bos sekalian. Maklum baru juga kenal hari ini.
Cobalah untuk di resize. Move dan sebagainya pada windows yang ada.
Di close bisa nggak ??

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 5/37


Sebelum kita menyelesaikan masalah bisa ditutup atau enggak window kita mari kita
buka dokumantasi java untuk kelas ini. Gunakan windows explorer cari direktori
\docs\api\java\awt
lalu klik
Frame.html
Lihatlah pada bagian java.awt.
Class Frame
Akan terlihat diagram seperti dibawah ini.

java.lang.Object
java.awt.Component
java.awt.Container
java.awt.Window
java.awt.Frame

Maksud dari diagram tersebut adalah package java.awt.Frame merupakan turunan dari
package java.awt.Window, kemudian java.awt.Window adalah turunan dari
java.awt.Container, begitu seterusnya.

Kita scroll terus pada dokumentasi Frame tersebut mari kita cari statement dari program
cebelahKU.java diatas, yaitu :
f.setVisible(true);

Baik di Nested Class Summary, Field Summary, Constructor Summary, Method


Summary tidak ada, dan ketemunya di kotak
Method inherited from class java.awt.Window
Maksudnya adalah method setVisible adalah inherited(diwariskan) oleh kelas diatasnya
yaitu kelas java.awt.Window
Dengan kata lain andai kita membuka file
Frame.html
Pada direktori
\docs\api\java\awt
maka pada kotak method Summary akan ditemukan setVisible tersebut. Kalo nggak
percaya coba deh. Kan nggak salah nyoba aja.

setVisible(boolean b)
void Shows or hides this Window depending on the value of parameter b.
show()
void Deprecated. As of JDK version 1.5, replaced by setVisible(boolean).

English Shows or hides this Window depending on the value of parameter b.


Indonesia Memunculkan atau menyembunyikan jendela tergantung dari
nilai parameter b.

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 6/37


Dibawah setVisible ada show, keterangannya adalah Deprecated, arrti katanya adalah
tercela. Alias itu digunakan oleh veris java sebelumnya dan sekarang sudah tidak dipakai
lagi alias sudah ada yang baru [yang lebih muda], dalam kasus show diganti dengan
setVisible. Tadinya show berpasangan dengan hide dan sekarang digabung menjadi satu
menjadi setVisible saja.
Jika nanti bos-bos menemukan program java yang lama bisa jadi ketika meng-kompile-
nya menemui hal-hal seperti ini. Tapi jangan khawatir ada deprecated-list kok.

Oh ya kita kembali ke cebelahKU.class tadi yang nggak bisa di-close. Ada dua cara
pertama Ctrl-Alt-Del, kemudian muncul Task Manager kemudian di End Task, atau close
saja jendela Command Promt-nya.

Kita akan mencoba deprecated dulu baru kemudian menyelesaikan gimana harus meng-
close window dengan mulusssssssssss.

cebelahKU.java
import java.awt.Frame;

public class cebelahKU{


public static void main(String args[]){
Frame f = new Frame();
f.show();
}
}
Silahkan ulangi men-JAVAC dan men-JAVA
Masih bisa jalankan !!!!
Tapi saat kita bos-bos melakukan javac muncul tulisan

Note : cebelhKU.java uses or overrides a deprecated API


Note : Recompile with –Xlint:deprecation for detail

Sekarang mari kita coba menjavac dengan Xlint


Maka akan muncul pesan seperti dibawah ini

Warning : [deprecation] show() in java.awt.Window has been deprecated

Artinya yang terkutuk[deprecated] ada di kelas java.awt.Window, lalu kita menuju

….\docs\api\deprecated-list.htm

Silahkan dilihat

Dari situ bos-bos bisa langsung search show, cari yang kelas dari java.awt.Window.
Disitu ada keterangan sekarang diganti dengan method apaaa seeeh.

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 7/37


cebelahKU.java
import java.awt.Frame;
import java.awt.event.WindowListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class cebelahKU{
public static void main(String args[]){
Frame f = new Frame();
f.setVisible(true);

f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0);
}
});
}
}
Silahkan ulangi men-JAVAC dan men-JAVA
Dan sekarang jendela yang kita buat kalau di close sudah bisa, tidak harus meng-close
jendela command promt.
Sebenarnya di java banyak sekali masalah, dan masalah itu sering sekali tidak kita temui
di dokumentasi maupun di tutorial standard dari sun microsystem. Cara penyelesaian
diatas hamba dapat dari www.roseindia.net sebenarnya ada cara lain tapi cara yang ini
hamba anggap lebih mudah tuk dimengerti dan lebih mudah untuk kelanjutan tujuan
akademis

Kemudian program akan ditambah dengan beberapa method seperti :


• java.awt.Frame
o setTitle
o setResizable
• java.awt.Window
o setAlwaysOnTop
o setSize
• java.awt.Component
o setBackgound
o SetLocation
• java.awt.Toolkit
o getDefaultToolkit.getScreenSize
• java.awt.Dimension
• java.awt.Color

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 8/37


cebelahKU.java
import java.awt.Frame;
import java.awt.event.WindowListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class cebelahKU{


public static void main(String args[]){
int lebarJendela=400;
int tinggiJendela=100;
java.awt.Dimension Layar =
java.awt.Toolkit.
getDefaultToolkit().
getScreenSize();
int lebarLayar = Layar.width;
int tinggiLayar = Layar.height;
int awalJendX =(lebarLayar-lebarJendela)/2;
int awalJendY =(tinggiLayar-tinggiJendela)/2;
Frame f = new Frame();
f.setTitle("Sebelahku Belum Mandi");
f.setResizable(false);
f.setAlwaysOnTop(true);
f.setSize(lebarJendela,tinggiJendela);
f.setLocation(awalJendX,awalJendY);
f.setBackground(java.awt.Color.yellow);
f.setVisible(true);

f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0);
}
});
}
}

Silahkan ulangi men-JAVAC dan men-JAVA

Cobalah klik dibeberapa bagian darilayar computer bos-bos. Apa yang terjadi ?
Jendelanya nongol terus kan ! Coba diubah nilai boolean maupun angka dari method-
method yang digunakan diatas. Kemudian ada hal lain yang sebaiknya dilakukan adalah
mengunjungi dokumentasi untuk setiap package yang digunakan. Syukur-syukur
berkenan untuk mencoba baik method maupun field yang ada.

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 9/37


Frame
MERAH

KUNING Panel

HIJAU
Component

Di java ada tiga lapisan yang harus kita ketahui, pertama adalah Frame, kemudian
ditindih dengan Panel dan pada panel diisi oleh Component. Frame adalah Top-Level-
Container [ wadah tingkat tertinggi ]. Hasil akhir dari program ini bisa bos-bos lihat di
direktori MerahKuningHijau.

MeKuHi.java
import java.awt.Frame;
import java.awt.event.WindowListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class MeKuHi{


public static void main(String args[]){
int lebarJendela = 250;
int tinggiJendela = 600;
Frame f = new Frame("Merah Kuning Hijau");
f.setSize(lebarJendela,tinggiJendela);
f.setVisible(true);

f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0);
}
});
}
}
Silahkan ulangi men-JAVAC dan men-JAVA

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 10/37


MeKuHi.java
import java.awt.Frame;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.WindowListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class MeKuHi{


public static void main(String args[]){
int lebarJendela = 250;
int tinggiJendela = 600;
Dimension Layar = Toolkit.
getDefaultToolkit().
getScreenSize();
int lebarLayar = Layar.width;
int tinggiLayar = Layar.height;
int awalJendX = (lebarLayar-lebarJendela)/2;
int awalJendY = (tinggiLayar-tinggiJendela)/2;
Frame f = new Frame("Merah Kuning Hijau");
f.setLocation(awalJendX,awalJendY);
f.setSize(lebarJendela,tinggiJendela);
f.setVisible(true);

f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0);
}
});
}
}

Silahkan ulangi men-JAVAC dan men-JAVA

Oke bos-bos sekarang sudah mendapatkan jendela berukuran 250,600 dan sudah tampil
ditengah. Kemudian bos-bos akan menambahkan Panel paling atas berwarna merah pada
sepertiga bagian dari jendela yang sudah bos-bos buat.

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 11/37


MeKuHi.java
import java.awt.Frame;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.Panel;
import java.awt.Color;
import java.awt.event.WindowListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class MeKuHi{


public static void main(String args[]){
int lebarJendela = 250;
int tinggiJendela = 600;
int lebarPanel = lebarJendela;
int tinggiPanel = tinggiJendela/3;
Dimension Layar =
Toolkit.
getDefaultToolkit().
getScreenSize();
int lebarLayar = Layar.width;
int tinggiLayar = Layar.height;
int awalJendX = (lebarLayar-lebarJendela)/2;
int awalJendY = (tinggiLayar-tinggiJendela)/2;
Frame f = new Frame("Merah Kuning Hijau");
f.setLocation(awalJendX,awalJendY);
f.setSize(lebarJendela,tinggiJendela);
f.setVisible(true);
Panel panelAtas = new Panel();
panelAtas.setSize(lebarPanel,tinggiPanel);
panelAtas.setLocation(0,0);
panelAtas.setBackground(Color.red);
f.add(panelAtas);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0);
}
});
}
}

Silahkan ulangi men-JAVAC dan men-JAVA

Pada program diatas bos-bos sudah menambahkan dua package yang di-import, coba
sekarang kunjungi dokumentasi pada direktori :
/docs/api/java/awt/Color.html
/docs/api/java/awt/Panel.html

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 12/37


Yang bos-bos inginkan adalah munculnya warna merah dibagian seperti atas jendela tapi
???

MeKuHi.java
import java.awt.Frame;
.
.
public class MeKuHi{
public static void main(String args[]){
.
.
Frame f = new Frame("Merah Kuning Hijau");
f.setLayout(null);
f.setLocation(awalJendX,awalJendY);
.
.
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0);
}
});
}
}

Silahkan ulangi men-JAVAC dan men-JAVA

Nah sekarang bos-bos sudah dapatkan kotak merah di sepertiga bagian atas dari program
ciptaan bos-bos yang terhormat.
Layout begitu penting sehingga bos-bos akan temui dikesempatan berikutnya.

Kali ini bos-bos akan menambahkan dua panel berikutnya yaitu panel tengah
[ berwarna kuning ] dan panel bawah [ berwarna hijau ]. Mudah bukan ?
Bukaaaaaaaan.

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 13/37


MeKuHi.java
import java.awt.Frame;
.
.
.
Panel panelAtas = new Panel();
panelAtas.setSize(lebarPanel,tinggiPanel);
panelAtas.setLocation(0,0);
panelAtas.setBackground(Color.red);
f.add(panelAtas);

Panel panelTengah = new Panel();


panelTengah.setSize(lebarPanel,tinggiPanel);
panelTengah.setLocation(0,tinggiJendela/3);
panelTengah.setBackground(Color.yellow);
f.add(panelTengah);

Panel panelBawah = new Panel();


panelBawah.setSize(lebarPanel,tinggiPanel);
panelBawah.setLocation(0,2*tinggiJendela/3);
panelBawah.setBackground(Color.green);
f.add(panelBawah);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0);
}
});
}
}

Silahkan ulangi men-JAVAC dan men-JAVA

Nah sekarang bos-bos sudah dapatkan kotak merah di sepertiga bagian atas dari program
ciptaan bos-bos yang terhormat.
Layout begitu penting sehingga bos-bos akan temui dikesempatan berikutnya.

This time, eh kali ini bos-bos akan menambahkan sebuah Component favorit yaitu
Button. Mari bos coba untuk menambahkannya pada panel bawah.

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 14/37


MeKuHi.java
import java.awt.Frame;
import java.awt.Button;
.
.
.
public static void main(String args[]){
int lebarJendela = 250;
int tinggiJendela = 600;
int lebarPanel = lebarJendela;
int tinggiPanel = tinggiJendela/3;

int lebarTombol = 100;


int tinggiTombol = 30;
int awalTombX = (lebarPanel-lebarTombol)/2;
int awalTombY = (tinggiPanel-tinggiTombol)/2;
Dimension Layar =
Toolkit.
getDefaultToolkit().
getScreenSize();
.
.
.
Panel panelBawah = new Panel();
panelBawah.setSize(lebarPanel,tinggiPanel);
panelBawah.setLocation(0,2*tinggiJendela/3);
panelBawah.setBackground(Color.green);
f.add(panelBawah);

Button tombolBawah = new Button();


tombolBawah.setSize(lebarTombol,tinggiTombol);
tombolBawah.setLocation(awalTombX,awalTombY);
tombolBawah.setLabel("Ceklek");
panelBawah.add(tombolBawah);
panelBawah.setLayout(null);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0);
}
});
}
}
Silahkan ulangi men-JAVAC dan men-JAVA

Nah sekarang bos-bos sudah dapatkan tombol pada panel hijau. Tapi kalau diceklek
masih tak ada perubahan. O ya cobanlah menghilangkan setLayout pada panelBawah.
Apa yang terjadi ?

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 15/37


MeKuHi.java
.
.
import java.awt.event.WindowEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
.
.
.
final Frame f = new Frame("Merah Kuning Hijau");
.
.
.
tombolBawah.setLabel("Ceklek");
panelBawah.add(tombolBawah);
panelBawah.setLayout(null);

tombolBawah.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
f.setTitle("Bisa di Ceklek");
}
}
);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0);
}
});
}
public void actionPerformed(ActionEvent e){}
}

Silahkan ulangi men-JAVAC dan men-JAVA

Bos-bos, sekarang tombol yang ada pada panel bawah kalau di ceklek sudah bisa
mengganti Judul pada jendela utama.

Listener yang dalam arti harfiahnya pendengar adalah rutin baku yang disediakan oleh
java untuk mengani [handling] kejadian-kejadian [events] yang berpasangan dengannya.
Bos-bos sudah belajar dua jenis listener yaitu window listener dan action listener.
Pembahasan lebih rincinya, nanti yooooo !

Bos-bos sekalian, sekarang sudilah kiranya bos-bos mengganti isi dari public void
actionPerformed menjadi sbb :

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 16/37


MeKuHi.java
.
.
.
final Panel panelAtas = new Panel();
.
.
.
final Panel panelTengah = new Panel();
.
.
.
panelBawah.setLayout(null);

tombolBawah.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
f.setTitle("Kuning Merah Hijau");
panelAtas.setBackground(Color.yellow);
panelTengah.setBackground(Color.red);
}
}
);
.
.
.

Silahkan ulangi men-JAVAC dan men-JAVA

Bos-bos, sekarang tombol yang ada pada panel bawah kalau di ceklek sudah bisa
1. Mengganti Judul pada jendela utama jadi Kuning Merah Hijau
2. Merubah warna panel atas menjadi Kuning dan panel tengah menjadi merah

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 17/37


MeKuHi.java
.
.
tombolBawah.addActionListener(
new ActionListener(){
boolean saklarON = true;
public void actionPerformed(ActionEvent e){
if (saklarON){
f.setTitle("Kuning Merah Hijau");
panelAtas.setBackground(Color.yellow);
panelTengah.setBackground(Color.red);
saklarON = !(saklarON);
}else{
f.setTitle("Merah Kuning Hijau");
panelAtas.setBackground(Color.red);
panelTengah.setBackground(Color.yellow);
saklarON = !(saklarON);
}
}
}
);
Silahkan ulangi men-JAVAC dan men-JAVA

Apa yang terjadi ? Senang ya ! Masa kecil kurang bahagia. ?


MeKuHi.java
.
.
tombolBawah.addActionListener(
new ActionListener(){
boolean saklarON = true;
public void actionPerformed(ActionEvent e){
if (saklarON){
f.setTitle("Kosong Kuning Hijau");
panelAtas.setVisible(false);
panelTengah.setVisible(true);
saklarON = !(saklarON);
}else{
f.setTitle("Merah Kosong Hijau");
panelAtas.setVisible(true);
panelTengah.setVisible(false);
saklarON = !(saklarON);
}
}
}
);

Silahkan ulangi men-JAVAC dan men-JAVA

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 18/37


Kombinasi dari hal-hal seperti ini sudah pasti banyak. Misalnya gimana kalau
kombinasi event-nya tiga. Jadi kalau ditekan tiga kali maka bagian kosongnya
pindh ke bawah.Bisa sendiri kan. Sudah pasti lah kan bos-bos memang ruuuuar
biasa.

Oke bos-bos mari kita lanjutkan dengan menambahkan Button pada panelAtas
dan panelTengah. So chek this out

MeKuHi.java
.
.
.
Panel panelBawah = new Panel();
panelBawah.setSize(lebarPanel,tinggiPanel);
panelBawah.setLocation(0,2*tinggiJendela/3);
panelBawah.setBackground(Color.green);
f.add(panelBawah);

Button tombolAtas = new Button();


tombolAtas.setSize(lebarTombol,tinggiTombol);
tombolAtas.setLocation(awalTombX,awalTombY);
tombolAtas.setLabel("Ceklek");
panelAtas.add(tombolAtas);
panelAtas.setLayout(null);

Button tombolTengah = new Button();


tombolTengah.setSize(lebarTombol,tinggiTombol);
tombolTengah.setLocation(awalTombX,awalTombY);
tombolTengah.setLabel("Ceklek");
panelTengah.add(tombolTengah);
panelTengah.setLayout(null);
Button tombolBawah = new Button();
.
.
.
Silahkan ulangi men-JAVAC dan men-JAVA

Sebelum kita membuat tombol atas dan tengah berekasi maka sebaiknya kita
ubah dulu reaksi dari tombol bawah.

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 19/37


MeKuHi.java
.
.
final Panel panelBawah = new Panel();
.
.
final Button tombolAtas = new Button();
.
.
final Button tombolBawah = new Button();
.
.
tombolBawah.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
f.setTitle("Hijau Merah Kuning");
panelAtas.setBackground(java.awt.Color.green);
panelTengah.setBackground(java.awt.Color.red);
panelBawah.setBackground(java.awt.Color.yellow);
tombolAtas.setVisible(true);
tombolBawah.setVisible(false);
}
}
);

Silahkan ulangi men-JAVAC dan men-JAVA

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 20/37


MeKuHi.java
.
.
final Button tombolTengah = new Button();
.
.
panelBawah.setLayout(null);

tombolAtas.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
f.setTitle("Kuning Hijau Merah");
panelAtas.setBackground(Color.yellow);
panelTengah.setBackground(Color.green);
panelBawah.setBackground(Color.red);
tombolTengah.setVisible(true);
tombolAtas.setVisible(false);
}
}
);

tombolTengah.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
f.setTitle("Merah Kuning Hijau");
panelAtas.setBackground(Color.red);
panelTengah.setBackground(Color.yellow);
panelBawah.setBackground(Color.green);
tombolBawah.setVisible(true);
tombolTengah.setVisible(false);
}
}
);
tombolBawah.addActionListener(
new ActionListener(){
.
.

Silahkan ulangi men-JAVAC dan men-JAVA

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 21/37


MeKuHi.java
.
.
final Button tombolAtas = new Button();
tombolAtas.setSize(lebarTombol,tinggiTombol);
tombolAtas.setLocation(awalTombX,awalTombY);
tombolAtas.setLabel("Ceklek");
tombolAtas.setVisible(false);
panelAtas.add(tombolAtas);
panelAtas.setLayout(null);

final Button tombolTengah = new Button();


tombolTengah.setSize(lebarTombol,tinggiTombol);
tombolTengah.setLocation(awalTombX,awalTombY);
tombolTengah.setLabel("Ceklek");
tombolTengah.setVisible(false);
panelTengah.add(tombolTengah);
panelTengah.setLayout(null);
.
.

Silahkan ulangi men-JAVAC dan men-JAVA

“Seorang pesimis melihat kesulitan di setiap kesempatan;


seorang optimistis melihat kesempatan dalam setiap kesulitan.”
Winston Churchil,
Mantan PM Inggris

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 22/37


Listener
Topik yang berkaitan erat dengan pembuatan GUI [ Graphical User Interface ] atau
Antar Muka Grafis adalah Event Handling [ Penanganan Kejadian]. Pendek kata
ketika mata melihat dan tangan menjamah apa yang terjadi. Di java event-handling
disebut juga dengan akhiran LISTENER. Gimana menggunakannya ?, kita akan ambil
contoh saja Action Listener.
Tolong search pakai window explorer pada tutorial yang ada pada CD kelengkapan
modul ini, cari action listener. Kalau ketemunya yang tutorial yang lama akan ketemu
Writing Action Listener [ menulis Action Listener ], tapi kalau ketemu di Tutorial Java 6
akan ketemu How to Write an Action Listener [ bagaimana caranya menulis Action
Listener ]. Pada tutorial java 6 ada di direktori
/tutorial/uiswing/events/actionlistener.html
Dibawah ini adalah terjemahan bebas sebagian dari halaman tutorial tersebut :

Untuk menuliskan suatu Action Listener, ikuti langkah-langkah berikut ini :

1. Deklarasikan sebuah kelas penangan kejadian dan tentukan kelas mana yang
mengimplementasikan (melaksanakan) antarmuka [interface] ActionListener atau
meng-extends suatu kelas yang mengimplementasikan suatu antarmuka
ActionListener. Contohnya :

public class ClassBosYangMulia implements ActionListener {

2. Daftarkan suatu instance dari kelas penangan kejadian sebagai suatu listener pada
satu atau beberapa komponen. Contohnya :

suatuKomponen.addActionListener(instancedari ClassBosYangMulia);

3. Masukkan kode program yang akan dijalankan didalam antar muka listener.
Contohnya :

public void actionPerformed(ActionEvent e) {


...// Kode program yang bereaksi terhadap
// kejadian yang ditimbulkan oleh komponen...
}

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 23/37


AksiBozz.java
public class AksiBozz {
public AksiBozz (){
}
}
Untuk tahu benar atau salahnya silahkan ulangi men-JAVAC dan men-JAVA

public AksiBozz () disebutnya Constructor tapi apa itu Constructor kita obrolin nanti
aja ya. Kali ini tentang listener dulu aja.

AksiBozz.java
import java.awt.Frame;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class AksiBozz
extends Frame
implements ActionListener {
public AksiBozz (){
}
public void actionPerformed (ActionEvent e){
}
}
Untuk tahu benar atau salahnya silahkan ulangi men-JAVAC dan men-JAVA

AksiBozz.java
import java.awt.Frame;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class AksiBozz


extends Frame
implements ActionListener {

public static void main(String[] args) {


AksiBozz jendela = new AksiBozz();
jendela.setSize(900,70);
jendela.setVisible(true);
}
public AksiBozz (){
}
public void actionPerformed (ActionEvent e){
}
}
Untuk tahu benar atau salahnya silahkan ulangi men-JAVAC dan men-JAVA

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 24/37


Tidak bisa di-close window-nya ???? Jadi ????

AksiBozz.java
import java.awt.Frame;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.WindowListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class AksiBozz
extends Frame
implements ActionListener {

public static void main(String[] args) {


AksiBozz jendela = new AksiBozz();
jendela.setSize(900,70);
jendela.setVisible(true);
}

public AksiBozz (){


addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0);
}
});
}
public void actionPerformed (ActionEvent e){
}
}

Silahkan ulangi men-JAVAC dan men-JAVA


Sekarang sudah bisa di-close window-nya ?

Untuk tahu benar atau salahnya silahkan ulangi men-JAVAC dan men-JAVA
Tidak bisa di-close window-nya ???? Jadi ????

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 25/37


AksiBozz.java
import java.awt.Frame;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.WindowListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.Button;
import java.awt.TextField;
import java.awt.FlowLayout;
public class AksiBozz
extends Frame
implements ActionListener {
Button tomb1 = new Button("Tombol Satu");
TextField teks1 = new TextField(25);
public static void main(String[] args) {
AksiBozz jendela = new AksiBozz();
jendela.setSize(900,70);
jendela.setVisible(true);
}

public AksiBozz (){


setLayout(new FlowLayout());
add(tomb1);
add(teks1);
tomb1.addActionListener(this);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0);
}
});
}
public void actionPerformed (ActionEvent e){
}
}

Silahkan ulangi men-JAVAC dan men-JAVA


Kalau tombol yang terlihat di klik berkali-kali dan tidak ada reaksi apapun maka
PROGRAM ANDA BENAR.

Pada program diatas ditambahkan FlowLayout dan this paa Constructor. Nanti akan kita
bahas. Apa itu ?

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 26/37


AksiBozz.java
.
.
TextField teks1 = new TextField(25);
int counterTombol1 = 0;
public static void main(String[] args) {
.
.
public void actionPerformed (ActionEvent e){
counterTombol1=counterTombol1+1;
teks1.setText(
"Tombol Satu sudah di klik "
+counterTombol1+" kali.");
}
}
Silahkan ulangi men-JAVAC dan men-JAVA
Sekarang silahkan tekan tombol sepuasnya.

“Setiap masalah selalu mengandung inti solusi.


Sehingga untuk mendapat inti itu, mau tak mau
Anda perlu menghadapi masalah.”
Norman Vincent Peale,
Theolog-Penulis (1898-1993)

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 27/37


AksiBozz.java
.
.
Button tomb1 = new Button("Tombol Satu");
TextField teks1 = new TextField(25);
int counterTombol1 = 0;
Button tomb2 = new Button("Tombol Dua");
TextField teks2 = new TextField(25);
int counterTombol2 = 0;
Button tomb3 = new Button("Tombol Tiga");
TextField teks3 = new TextField(25);
int counterTombol3 = 0;
.
.
public AksiBozz (){
setLayout(new FlowLayout());
add(tomb1);
add(teks1);
add(tomb2);
add(teks2);
add(tomb3);
add(teks3);
tomb1.addActionListener(this);
tomb2.addActionListener(this);
tomb3.addActionListener(this);
.
.
public void actionPerformed (ActionEvent e){
counterTombol1=counterTombol1+1;
teks1.setText(
"Tombol Satu sudah di klik "
+counterTombol1+" kali.");
counterTombol2=counterTombol2+1;
teks2.setText(
"Tombol Dua sudah di klik "
+counterTombol2+" kali.");
counterTombol3=counterTombol3+1;
teks3.setText(
"Tombol Tiga sudah di klik "
+counterTombol3+" kali.");
}
}
Silahkan ulangi men-JAVAC dan men-JAVA
Lalu tekan bergantian antar ketiga tombol yang ada. Apa yang terjadi ?
Bagiamana menurut bos-bos ?

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 28/37


AksiBozz.java
.
.
public void actionPerformed (ActionEvent e){
String pencetan = e.getActionCommand();
if (pencetan == "Tombol Satu") {
counterTombol1=counterTombol1+1;
teks1.setText(
"Tombol Satu sudah di klik "
+counterTombol1+" kali.");
}else if(pencetan == "Tombol Dua") {
counterTombol2=counterTombol2+1;
teks2.setText(
"Tombol Dua sudah di klik "
+counterTombol2+" kali.");
}else if(pencetan == "Tombol Tiga") {
counterTombol3=counterTombol3+1;
teks3.setText(
"Tombol Tiga sudah di klik "
+counterTombol3+" kali.");
}
Silahkan ulangi men-JAVAC dan men-JAVA
Lalu tekan bergantian antar ketiga tombol yang ada. Apa yang terjadi ?
Puas ?
Ini adalah salah satu cara menangani action listener,
karena Java hanya menyediakan satu actionPerformed.
Bos-bos sekalian akan mencoba cara yang lain.

Di atas kita berkenalan dengan getActionCommand().


Tolong bos-bos buka kembali dokumentasi dari java pada
/docs/api/java/awt/event/ActionEvent.html
lihatlah ke bawah pada method summary

getActionCommand()
Returns the command string associated with this action.
[ mengeluarkan nilai string dari aksi yang dilakukan ]

Bos-bos sekalian sudah faham bahwa tiap-tiap Button mempunyai nilai string yang sudah
dideklarasikan diatas. So lihatlah pada bagian awal dari program AksiBozz.java.

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 29/37


AksiBozz.java
.
.
add(tomb3);
add(teks3);
tomb1.addActionListener(new AksiSatu());
tomb2.addActionListener(new AksiDua());
tomb3.addActionListener(new AksiTiga());
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0);
}
});
}
public void actionPerformed (ActionEvent e){

/* KOSONGKAN SEMUA ISI VOID INI */


}

class AksiSatu implements ActionListener {


public void actionPerformed(ActionEvent e){
counterTombol1=counterTombol1+1;
teks1.setText(
"Tombol Satu sudah di klik "
+counterTombol1+" kali.");
}
}
class AksiDua implements ActionListener {
public void actionPerformed(ActionEvent e){
counterTombol2=counterTombol2+1;
teks2.setText(
"Tombol Dua sudah di klik "
+counterTombol2+" kali.");
}
}
class AksiTiga implements ActionListener {
public void actionPerformed(ActionEvent e){
counterTombol3=counterTombol3+1;
teks3.setText(
"Tombol Tiga sudah di klik "
+counterTombol3+" kali.");
}
}
}
Silahkan ulangi men-JAVAC dan men-JAVA
Ini adalah teknik berikutnya untuk menangani actionPerformed yang cuma satu.

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 30/37


AksiBozz.java
.
.
add(tomb3);
add(teks3);
tomb1.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
counterTombol1=counterTombol1+1;
teks1.setText(
"Tombol Satu sudah di klik "
+counterTombol1+" kali."); }});
tomb2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
counterTombol2=counterTombol2+1;
teks2.setText(
"Tombol Dua sudah di klik "
+counterTombol2+" kali."); }});
tomb3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
counterTombol3=counterTombol3+1;
teks3.setText(
"Tombol Tiga sudah di klik "
+counterTombol3+" kali."); }});
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0);
}
});
}
public void actionPerformed (ActionEvent e){
}

/* HAPUS 3 CLASS DISINI */


}

Silahkan ulangi men-JAVAC dan men-JAVA


Ini adalah teknik berikutnya untuk menangani actionPerformed yang cuma satu.

Bos-bos cobalah mengganti


jendela.setSize(190,220);
jendela.setSize(440,220);
APA YANG TERJADI ?
UBAH PULA UKURAN JENDELA DENGAN MOUSE.

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 31/37


Event [ kejadian ]
Event datang dari suatu antarmuka pengguna [ user interface ], kita biasa mempunyai
beberapa cara untuk mendapatkan masukan [ input ] dari pengguna. Sebagai contoh,
button, menu, slider, klik mouse, apa saja yang menghasilkan event ketika pengguna
melakukan sesuatu dengannya.
Objek-objek kejadian ntarmuka pengguna [ user interface event object ] dilewatkan dari
sumber kejadian [ seperti tombol atau klik tikus ] ke event listener [seperti
ActionListener] kemudian sebuah method [ prosedur kalau di Pascal] bikinan bos-bos
akan memprosesnya.

Type of Event [ jenis kejadian ]

User Control addXXXListener Method in Listener

AWT Swing
Button JButton
TextField JTextField addActionListener() actionPerformed(ActionEvent e)
MenuItem JMenuItem
Slider JSlider addChangeListener() stateChanged(ChageEvent e)
CheckBox JCheckBox addItemListener() itemstateChanged()
Key board ke komponen addKeyListener() keyPressed(), keyReleased()
KeyTyped()
mouseClicked(), mouseEntered(),
Mouse ke komponen addMouseListener() mouseExited(), mousePressed(),
mouseReleased()
addMouseMotionListener() mouseMoved(), Mouse Dragged()
windowOpened(WindowEvent e)
windowActivated(WindowEvent e)
Frame JFrame addWindowListener() windowIconified(WindowEvent e)
windowDeiconified(WindowEvent e)
windowDeactivated(WindowEvent e)
windowClosed(WindowEvent e)

Package yang di import


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

awt = abstract window toolkit


untuk listener selengkapnya bisa dijumpai di

………./tutorial/uiswing/events/api.html

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 32/37


Layout

Kita sudah mencoba dua buah macam layout, yaitu null dan FlowLayout. Kedua layout
ini mempunyai efek yang berbeda jika window atau jendela kita resize [ubah ukurannya].
Layout null mengharuskan kita memahami persis setiap komponen. Jika komponen yang
kita letakkan pada layer begitu banyak sudah pasti cara ini akan rumit dan menjemukan.
FlowLayout berusaha mengatur tata letak komponen sesuai dengan ukuran layer yang
ada. Pada AWT disediakan beberapa sarana Layout. Masing-masing objek container
memiliki pengatur tata letak yang merupakan instance dari semua class yang
mengimplemantasikan interface LayoutManager. Hal ini diatur dengan method
setLayout. Setiap kali Panel diubah ukurannya (atau diatur ukurannya untuk pertama
kali), LayoutManager digunakan untuk meletakkan masing-masing Component
didalamnya.

Border Layout
Class BorderLayout mengimplementasikan gaya layout umum untuk jendela, dengan
memilikik empat komponen sempit pada sisi-sisinya dan satu daerah yang luas di tengah
yang dapat mengembang dan menyusut. Masing-masing daerah ini disebut North,
South, East, West dan Center.

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 33/37


DuemoBorderLayout.java
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class DuemoBorderLayout extends Frame {

public DuemoBorderLayout () {
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public static void main(String[] args){
DuemoBorderLayout jend =
new DuemoBorderLayout();
}
}
Silahkan men-JAVAC dan men-JAVA

Lho kok nggak terjadi apapun ya ?

DuemoBorderLayout.java
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class DuemoBorderLayout extends Frame {

public DuemoBorderLayout () {
super("DuWeMo Border Layout");
setVisible(true);
setSize(300,200);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}

public static void main(String[] args){


DuemoBorderLayout jend = new DuemoBorderLayout();
}
}
Silahkan men-JAVAC dan men-JAVA

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 34/37


DuemoBorderLayout.java
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.Button;
import java.awt.TextArea;
import java.awt.BorderLayout;

public class DuemoBorderLayout extends Frame {

public DuemoBorderLayout () {
super("DuWeMo Border Layout");
setVisible(true);
setSize(300,200);
setLayout(new BorderLayout());
add("North",new Button("Atas"));
add("South",new Button("Bawah"));
add("East",new Button("Kanan"));
add("West",new Button("Kiri"));
add("Center",new TextArea(""));
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}

public static void main(String[] args){


DuemoBorderLayout jend = new DuemoBorderLayout();
}
}

Silahkan men-JAVAC dan men-JAVA


Nah sekarang kita sudah saksikan Border Layout.

Grid Layout
Class GridLayout mengimplementasikan tata letak untuk kisi komponen sederhana yang
seragam. Konstruktor digunakan untuk menentukan jumlah baris dan kolom.

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 35/37


DuemoGridLayout.java
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class DuemoGridLayout extends Frame {


public DuemoGridLayout () {
super("Duwemo Grid Layout Lho");
setVisible(true);
setSize(400,200);

addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}

public static void main(String[] args){


final DuemoGridLayout jen =
new DuemoGridLayout();
}
}

Silahkan men-JAVAC dan men-JAVA

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 36/37


DuemoGridLayout.java
import java.awt.Frame;
import java.awt.Button;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class DuemoGridLayout extends Frame {


public DuemoGridLayout () {
super("Duwemo Grid Layout Lho");
setVisible(true);
setSize(400,200);
int n=4;
int k=1;

setLayout(new GridLayout(n,n));

for (int i=1; i<=n ; i++){


for (int j=1; j<=n ; j++){
Button b = new Button(" "+(k++));
add(b);
}
}
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}

public static void main(String[] args){


final DuemoGridLayout jendela = new DuemoGridLayout();
}
}

Silahkan men-JAVAC dan men-JAVA

Tutorial Java nanungnurzula.wordpress.com . nurzula@gmail.com 37/37

You might also like