69
PEMOGRAMAN BERORIENTASI OBJEK Pengenalan Java GUI I - 1 PRAKTIKUM I Pengenalan Java GUI 1.Tujuan Mahasiswa dapat menerapkan proses enkapsulasi, inheritance, dan polimorfisme pada pemograman berbasis obyek. Mahasiswa mampu membuat program menggunakan komponen- komponen visual. Mahasiswa mampu membuat program sederhana untuk even handler pada komponen-komponen dasar. Mahasiswa mampu mengatur layout dari form yang dibuat menggunakan pemograman bahasa java. Mahasiswa mampu membuat program untuk menggambar bentuk- bentuk grafik primitive seperti garis, kotak, segitiga, dll. Mahasiswa mampu membuat program berbasis GUI. 2.Dasar Teori 2.1. Pemograman Berorientasi Obyek Pemrograman berorientasi obyek merupakan suatu konsep pemrograman dengan mengambil konsep obyek sebagai komponen dasar dari pemrogramannya. Obyek merupakan suatu kesatuan komponen dan struktur yang di dalamnya berisi attribut yang selanjutnya dinamakan dengan member dan method yang merupakan kumpulan fungsional dari suatu obyek. Sebagai suatu analogi obyek, kita ambil obyek mobil mempunyai member berupa roda, kemudi, body, pintu, lampu, dashborad dan lainnya. Obyek mobil ini mempunyai method berupa maju, mundur, jalan, berhenti, dan berputar. Dengan demikian dapat dikatakan bahwa obyek mempunyai sifat-sifat, yaitu: • Member atau sering juga disebut dengan attribut yang menjelaskan variable, parameter atau keadaan (state) dari suatu obyek, misalkan pada obyek mobil terdapat member berupa roda, kemudi, seperti yang disebutkan di atas • Method atau sering juga disebut dengan behavior yang menjelaskan perilaku, kegiatan atau kerja dari suatu obyek,

01_Java_GUI

Embed Size (px)

Citation preview

Page 1: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 1

PRAKTIKUM I

Pengenalan Java GUI

1. Tujuan

Mahasiswa dapat menerapkan proses enkapsulasi, inheritance, dan polimorfisme pada pemograman berbasis obyek.

Mahasiswa mampu membuat program menggunakan komponen-komponen visual.

Mahasiswa mampu membuat program sederhana untuk even handler pada komponen-komponen dasar.

Mahasiswa mampu mengatur layout dari form yang dibuat menggunakan pemograman bahasa java.

Mahasiswa mampu membuat program untuk menggambar bentuk-bentuk grafik primitive seperti garis, kotak, segitiga, dll.

Mahasiswa mampu membuat program berbasis GUI.

2. Dasar Teori

2.1. Pemograman Berorientasi Obyek

Pemrograman berorientasi obyek merupakan suatu konsep pemrograman dengan mengambil konsep obyek sebagai komponen dasar dari pemrogramannya. Obyek merupakan suatu kesatuan komponen dan struktur yang di dalamnya berisi attribut yang selanjutnya dinamakan dengan member dan method yang merupakan kumpulan fungsional dari suatu obyek. Sebagai suatu analogi obyek, kita ambil obyek mobil mempunyai member berupa roda, kemudi, body, pintu, lampu, dashborad dan lainnya. Obyek mobil ini mempunyai method berupa maju, mundur, jalan, berhenti, dan berputar. Dengan demikian dapat dikatakan bahwa obyek mempunyai sifat-sifat, yaitu:• Member atau sering juga disebut dengan attribut yang menjelaskan variable, parameter atau keadaan (state) dari suatu obyek, misalkan pada obyek mobil terdapat member berupa roda, kemudi, seperti yang disebutkan di atas• Method atau sering juga disebut dengan behavior yang menjelaskan perilaku, kegiatan atau kerja dari suatu obyek, misalkan pada obyek mobil terdapat method maju, mundur, berhenti, seperti yang disebutkan diatas.

Menulis program berbasis obyek menggunakan bahasa Java dilakukan dengan cara membentuk sebuah class, menentukan variabel member dan menentukan method. Pembentukan class dari suatu obyek ini dinamakan dengan enkapsulisasi. Untuk menggambarkan suatu obyek digunakan suatu diagram yang dinamakan dengan class diagram. Model class di dalam class diagram seperti terlihat pada gambar

Page 2: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 2

Class merupakan pendefinisian suatu bentuk obyek denganmenyebutkan definisi member dan method dari obyek tersebut. Bisadikatakan bahwa class merupakan suatu tipe data dari obyek, sedangkanobyek adalah variabel yang menggunakan tipe data yang didefinisikan dalam class. Misalnya kita ingin membuat program untuk menghitung luas dan keliling lingkaran maka kita dapat membuat sebuah class mengenai lingkaran dengan nama Lingkaran1.java. Seperti yang telah diketahui bahwa lingkaran mempunyai parameter buapa jari-jari dan perhitungan yang bisa dilakukan adalah luas lingkaran dan keliling lingkaran. Sehingga class lingkaran.java memiliki variabel member radius dan beberapa method seperti• void inputData(int data),• double hitungLuas(),• double hitungKeliling() dan• void main(String args[]).Class tersebut dapat dinyatakan dengan model seperti pada gambar

Inheritance atau pewarisan sifat adalah sebuah class yang memiliki properti (variabel member dan method) dari class induknya. Dengan inheritance ini maka suatu class anak akan mempunyai semua member dan semua method yang ada di class induk. Berikut ini adalah sebuah contoh penggunaan inheritance dimana class Lingkaran.java di atas merupakan class induk dan class Tabung.java merupakan class turunannya. Untuk menyatakan suatu class sebagai turunan class yang lain dapat dilakukan dengan menambahkan pernyataan extends pada definisi class tersebut.

class classAnak extends classInduk

Nama Class

member

metode

Lingkaran

double radius

void inputData(int data)double hitungLuas()double hitungKeliling()

Page 3: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 3

2.2. Komponen-komponen Visual

JFrame adalah komponen dasar dalam pemrograman visual dengan java. Dalam inilah komponen lain diletakkan.

JLabel adalah komponen yang digunakan untuk membuat tulisan atau gambar pada frame sebagai suatu informasi untuk pengguna program. Untuk menggunakan jLabel, sebagai suatu class maka sebelumnya perlu dibuat suatu obyek menggunakan class JLabel.

JTextField adalah komponen yang digunakan untuk memasukkan sebaris string yang selanjutnya dapat digunakan sebagai input bagi proses selanjutnya. Pembuatan JTextfield dilakukan dengan membuat obyek berdasarkan class JtextField.

JButton adalah komponen berbentuk tombol. Komponen ini banyak digunakan sebagai eksekusi terhadap tindakan yang diinginkan. Pada aplikasi komputer, biasanya dibutuhkan tombol untuk mengeksekusi sebuah perintah.

JRadioButton adalah komponen yang digunakan ketika pengguna perlu memilih satu diantara beberapa pilihan.

Page 4: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 4

JComboBox juga merupakan komponen yang digunakan untukmemilih satu diantara sekian banyak pilihan yang berbentuk semacam TextField dan ada panah ke bawah.

JTextArea merupakan komponen yang mirip dengan JtextField tetapi dapat menampung lebih dari satu baris.

JCheckBox adalah komponen yang digunakan ketika penggunamemerlukan komponen untuk melakukan satu atau banyak pilhan sekaligus

JTable digunakan untuk menampilkan data dalam bentuk tabel, suatu bentuk yang banyak digunakan dalam pemrograman database.

JScrollPane adalah komponen yang digunakan untuk menggerakkan obyek ke atas, ke bawah atau ke samping agar semua sebuah obyek terlihat di layar.

JMenu adalah komponen yang digunakan untuk membuat menu. Menu membuat program kita menjadi lebih sederhana dan mudah digunakan.

JInternalFrame menyebabkan sebuah frame hanya dapat berada dalam frame lain. Kondisi ini akan membantu tampilan menjadi lebih rapidan teratur.

2.3 Event Handler

Event Handler adalah proses yang diperlukan untuk melakukan reaksi bila diberikan sebuah aksi. Event handler ini dapat diberikan pada semua obyek yang kita gunakan bergantung pada keperluan.

Kategori Name Interface MethodAction

Item

Mouse

ActionListener

ItemListener

MouseListener

actionPerformed(ActionEvent)

itemStateChanged(ItemEvent)

mousePressed(MouseEvent)mouseReleased(MouseEvenr)mouseEntered(MouseEvent)mouseExited(MouseEvent)mouseClicked(MouseEvent)

Kategori Name Interface Method

Page 5: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 5

Mouse Motion

Key

Focus

Adjustment

Component

Window

Container

Text

MouseMotionListener

KeyListener

FocusListener

AdjustmentListener

ComponentListener

WindowListener

ContainerListener

TextListener

mouseDragged(MouseEvent)mouseMoved(MouseEvent)

keyPressed(KeyEvent)keyReleased(KeyEvent)keyTyped(KeyEvent)

focusGained(FocusEvent)focusLost(FocusEvenr)

adjustmentValueChanged(AdjustmentEvent)

componentMoved(ComponentEvent)componentHidden(ComponentEvent)componentResized(ComponentEvent)componentShown(ComponentEvent)

windowClosing(WindowEvent)windowOpened(WindowEvent)windowIconified(WindowEvent)windowDeiconified (WindowEvent)windowClosed(WindowEvent)windowActivated(WindowEvent)windowDeactivated (WindowEvent)

componentAdded(ContainerEvent)componentRemoved(ContainerEvent)

textValueChanged(TextEvent)

Seluruh basic event listener terdapat dalam paket java.awt.event, sehingga untuk bisa menggunakan classclass tersebut, gunakan statemen sbb :

import java.awt.event.*; Setiap event handler membutuhkan 3 bagian kode sbb :

1. Pada bagian deklarasi dari class yg akan menghandle event, tuliskan kode yang menspesifikasikan bahwa class tsb mengimplementasikan (implements) sebuah listener ataukah menurunkan (extends) sebuah class yang mengimplementasikan sebuah interface listener, misalnya :

public class MyClass implements ActionListener {

2. Kode yang mendaftarkan sebuah instance dari class event handler sebagai listener untuk satu atau lebih komponen, misalnya:

someComponent.addActionListener(instanceOfMyClass);

3. Kode yang mengimplementasikan methodmethod yang terdapat dalam interface listener ybs, misalnya :

Page 6: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 6

public void actionPerformed)ActionEvent e) {… //kode yang mengakomodasi aksi dari user}

4. Menggunakan inner class.•Implementasi program dengan inner class, sbb :addMouseMotionListener(new MyMouseMotionListener());class MyMouseMotionListener extends MouseAdapter {

public void mouseDragged(MouseEvent e) {}

}• Implementasi program dengan anonymous inner class, sbb :...addMouseMotionListener(new MouseMotionAdapter(){

public void mouseDragged(MouseEvent e) {...

}}); // tutup dengan titik koma

2.4 Layout

Pengaturan layout digunakan untuk mengatur posisi dari komponen visual penyusun program sesuai dengan desain user interface. Beberapa pilihan layout telah disediakan java, dimana keputusan untuk

Page 7: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 7

menggunakan jenis layout tertentu bergantung pada jenis aplikasi yang ingin dibuat serta tingkat kerapian yang diinginkan. Pada bab-bab terdahulu, manajemen layout yang digunakan adalah none layout, dimana pengaturan posisi komponen dalam frame dilakukan sendiri oleh programmer. Beberapa jenis layout yang lain dapat digunakan untuk berbagai keperluan. Berikut ini adalah contoh program yang terdiri dari beberapa komponen dan diatur dengan menggunakan beberapa jenis manajemen layout agar dapat dilihat karakteristik masing-masing

FlowLayout adalah jenis pengaturan layout yang paling sederhana, dimana semua komponen akan tersusun dari kiri ke kanan sepanjang frame, dan akan pindah ke bawah bila telah sampai batas kanan frame. Kode program yang digunakan untuk melakukan pengaturan flowlayout adalah:

getContentPane().setLayout(new FlowLayout()) yang dapat kita letakkan pada method tertentu komponen-komponen

visual. setLayout(new FlowLayout(int align, int hgap, int vgap));Ket:align : rata barisFlowLayout.LEFT -> rata kiri atau 0FlowLayout.CENTER -> rata tengah atau 1FlowLayout.RIGHT -> rata kanan atau 2hgap : horizontal gapvgap : vertical gap

BorderLayout merupakan jenis layout yang bekerja dengan membagi frame menjadi lima bagian yaitu NORTH, EAST, SOUTH, WEST dan CENTER. Komponen visual dapat diletakkan pada bagian-bagian tersebut.

Page 8: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 8

GridLayout adalah jenis layout yang bekerja berdasar baris dan kolom. Dengan layout ini kita dapat memberikan argumen banyaknya baris dan kolom sesuai dengan kebutuhan.

NoneLayout merupakan jenis layout yang dapat menghasilkan tampilan yang rapi karena kita dapat mengatur posisi komponen secara detil berdasar koordinatnya. Konsekuensinya dengan layout ini waktu yang diperlukan relatif lebih banyak dibanding layout yang lain karena kita perlu menentukan posisi koordinat tiap komponen.

JPanel adalah komponen visual yang digunakan untuk membantu mengatur letak komponen lain agar terlihat lebih tertata rapi dan nyaman.

2.5 Grafis

Pemrograman grafis digunakan dalam banyak hal mulai dari upaya untuk memperoleh tampilan yang indah, aplikasi animasi, aplikasi simulasi, aplikasi pengolahan citra sampai visi komputer. Berikut ini adalah beberapa pemrograman dasar di bidang grafis dalam java yang diharapkan dapat menjadi bekal awal untuk memahami berbagai topic seputar grafis yang begitu luas. Pembahasan permograman garis akan dimulai dari menggambar obyek-obyek sederhana menggunakan garis, menggambar fungsi dan bagaimana dapat menampilkan dan mengolah data gambar (image processing) dengan pembahasan yang sangat sederhana.

Bahasa Java merupakan salah satu bahasa dengan fasilitas berupa komponen-komponen grafis yang lengkap. Karena itulah banyak program grafik, dan permainan yang berbasis grafik dibuat menggunakan bahas Java, khususnya untuk permainan di perangkat-perangkat mobile. Hal ini akan dibahas dalam pembahasan J2ME yang merupakan materi lanjut dari pemrograman Java dan tidak dibahas dalam buku ini

Salah satu cara untuk membuat aplikasi grafis dengan javaadalah dengan membuat class yang merupakan turunan dari classcanvas. Dalam class inilah kita meletakkan gambar atau animasi, dan membentuk sebuah obyek untuk mengakses gambar kita tersebut.

Page 9: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 9

Beberapa methode yang sering digunakan dalam aplikasi grafis yaitu: drawstring(String str, int x, int y) --> membuat sebuah text

menggunakan font dan color standar pada posisi koodinat x dan y. drawLine(int x1, int y1, int x2, int y2) --> membuat sebuah garis dari

titik x1,y1 ke titik x2,y2. drawRect(int x, int y, int width, int height) --> membuat sebuah kotak

dengan titik kiri atas pada(x,y) dan mempunyai ukuran tertentu. drawOval(int x, int y, int width, int height) --> membuat sebuah oval

dengan ukuran tertentu. drawRoundRect(int x, int y, int width, int height, int xdiam, int ydiam)

--> membuat kotak dengan sudut yang tidak tegak lurus. draw3DRect(int x, int y, int width, int height, boolean raised) -->

membuat kotak dengan efek 3 dimensi (sebaiknya warna gambar disesuaikan dengan warna background).

drawArc(int x, int y, int width, int height, int startAngle, int arcAngle) --> membuat sebuah lingkaran yang tidak penuh.

fillRect(int x, int y, int width, int height ) --> membuat kotak yang dalamnya berwarna.

fillOval(int x, int y, int width, int height) --> membuat oval yang mempunyai warna.

fillRoundRect(int x, int y, int width, int height, int xdiam, int ydiam) --> membuat kotak yang berwarna.

fill3DRect(int x, int y, int width, int height, Boolean raised) fillArc(int x, int y, int width, int height, int startAngle, int arcAngle)

3. Latihan 3.1 Konsep Pemograman Berbasis Objek

a. Class Lingkaran

public class Lingkaran {

double radius;

Lingkaran(){}

void inputData(int data) {this.radius = data;

}

public double hitungLuas() {double Luas;Luas = Math.PI * radius * radius;return Luas;

}

public double hitungKeliling() {double keliling;keliling = 2 * Math.PI * radius ;return keliling;

Page 10: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 10

}

public void cetak() {System.out.println("Radius Lingkaran: " + this.radius);System.out.println("Luas Lingkaran: " + this.hitungLuas());System.out.println("Keliling Lingkaran: " +

this.hitungKeliling());}

public static void main(String args[]) {Lingkaran lingkaran = new Lingkaran();lingkaran.inputData(10);lingkaran.cetak();

}}

b. Class Tabung yang mengextends class Lingkaran

public class Tabung extends Lingkaran {

Tabung() {}

public double hitungSelimut(int tinggi) {double selimut;selimut = 2 * hitungLuas() + hitungKeliling() * tinggi;return selimut;

}

public static void main(String args[]) {Tabung tabung = new Tabung() ;tabung.inputData(10);tabung.cetak();System.out.println("Luas Selimut: " +

tabung.hitungSelimut(10));}

}

Page 11: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 11

3.2 Komponen-komponen Visual

a. JFrame

import javax.swing.*;class AplikasiPenilaian extends JFrame{ AplikasiPenilaian() { setTitle("Lembar Penilaian"); setLocation(300,100); setSize(300,150); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public static void main(String args[]) { AplikasiPenilaian ap=new AplikasiPenilaian(); }}

import javax.swing.*;Pernyataaan ini merupakan perintah yang digunakan untuk menyiapkan class-class yang diperlukan oleh program kita. Komponen visual yang kita perlukan dalam pemrogaman visual berada dalam paket javax.swing.* ini.

class AplikasiPenilaian extends JFramePernyataan ini menunjukkan bahwa class AplikasiPenilaian merupakan turunan dari class JFrame yang berarti bahwa class ini memiliki atributatribut dari class JFrame.• setTitle digunakan untuk membuat judul frame.• setLocation(300,100) digunakan untuk menentukan posisi frame di layar dimana 300 menunjukkan posisi x dan 100 menunjukkan posisi y,• setSize(300,150) digunakan untuk menentukan besar frame dimana 300 menunjukkan lebar frame dan 150 menunjukkan tinggi frame.

Page 12: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 12

• setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) digunakan untuk mengakhiri jalannya program bila frame ditutup. Bila perintah tersebut tidak ada, maka penutupan frame tidak akan menghentikan jalannya program.• setVisible(true) digunakan untuk menampilkan frame.

b. JLabel

import javax.swing.*;class AplikasiPenilaian extends JFrame{ JLabel lblnim=new JLabel("NIM");

AplikasiPenilaian(){setTitle("Lembar Penilaian");setLocation(300,100);setSize(300,150);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);komponenVisual();

}void komponenVisual(){

getContentPane().setLayout(null);getContentPane().add(lblnim);lblnim.setBounds(10,10,70,20);setVisible(true);

}

public static void main(String args[]) { AplikasiPenilaian ap=new AplikasiPenilaian(); }}

JLabel lblnim=new JLabel("NIM");Merupakan cara untuk membentuk obyek JLabel yang kita beri nama lblnim dan bertuliskan “NIM“. Obyek ini akan kita gunakan sebagai informasi kepada user untuk memasukkan NIM mahasiswa.

getContentPane().setLayout(null)Sintaks di atas digunakan untuk mengatur tata letak komponen dalam frame, dimana layout null berarti bahwa koordinat tiap komponen dalam frame harus ditentukan sendiri posisinya oleh programmer.

getContentPane().add(lblnim)

Page 13: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 13

adalah perintah yang digunakan untuk menempelkan obyek JLabel ke frame.

lblnim.setBounds(10,10,70,20);perintah di atas berhubungan dengan getContentPane().setLayout(null) di atas yang berguna untuk mengatur posisi dari komponen Jlabel yang bernama lblnim. Pengaturan posisi dilakukan dengan menggunakan

setBounds(10,10,70,20) dimana agrumen pertama menunjukkan koordinat x dari ujung kiri atas obyek, argumen kedua menunjukkan koordinat y dari ujung kiri atas obyek, argumen ketiga menunjukkan lebar dari obyek dan argumen keempat menunjukkan tinggi dari obyek.

setVisible(true);digunakan untuk menampilkan frame berserta semua obyek yang ada di dalamnya. Pada program sebelumnya method ini kita letakkan pada constructor karena kita belum membuat method komponenVisual().

c. JTextField

import javax.swing.*;class AplikasiPenilaian extends JFrame{ JLabel lblnim=new JLabel("NIM"); JTextField txnim=new JTextField(20);

AplikasiPenilaian(){setTitle("Lembar Penilaian");setLocation(300,100);setSize(300,150);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);komponenVisual();

}void komponenVisual(){

getContentPane().setLayout(null);getContentPane().add(lblnim);lblnim.setBounds(10,10,70,20);getContentPane().add(txnim);txnim.setBounds(75,10,100,20);setVisible(true);

}

public static void main(String args[]) { AplikasiPenilaian ap=new AplikasiPenilaian(); }}

Page 14: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 14

JTextField txnim=new JTextField(20);Adalah membentuk obyek dari komponen JTextField yang akan digunakan untuk menampung nilai dari NIM mahasiswa.

getContentPane().add(txnim);txnim.setBounds(75,10,100,20); adalah perintah untuk menempelkan dan mengatur posisi txnim pada frame.

d. JButton

import javax.swing.*;class AplikasiPenilaian extends JFrame{ JLabel lblnim=new JLabel("NIM"); JTextField txnim=new JTextField(20); JButton tblcari=new JButton("Cari");

AplikasiPenilaian(){setTitle("Lembar Penilaian");setLocation(300,100);setSize(300,150);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);komponenVisual();

}void komponenVisual(){

getContentPane().setLayout(null);getContentPane().add(lblnim);lblnim.setBounds(10,10,70,20);getContentPane().add(txnim);txnim.setBounds(75,10,100,20);getContentPane().add(tblcari);tblcari.setBounds(180,10,95,20);setVisible(true);

}

public static void main(String args[]) { AplikasiPenilaian ap=new AplikasiPenilaian(); }}

e. JRadioButton

Page 15: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 15

import javax.swing.*;class AplikasiPenilaian extends JFrame {

JLabel lblnim=new JLabel("NIM ");JTextField txnim=new JTextField(20);JButton tblcari=new JButton("Cari");JLabel lblnama=new JLabel("Nama");JTextField txnama=new JTextField(20);JLabel lblkelas=new JLabel("Kelas ");JRadioButton kelasA=new JRadioButton("A");JRadioButton kelasB=new JRadioButton("B");JRadioButton kelasC=new JRadioButton("C");ButtonGroup grupkelas=new ButtonGroup();AplikasiPenilaian(){

setTitle("Lembar Penilaian");setLocation(300,100);setSize(300,150);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);komponenVisual();

}

void komponenVisual(){getContentPane().setLayout(null);getContentPane().add(lblnim);lblnim.setBounds(10,10,70,20);getContentPane().add(txnim);txnim.setBounds(75,10,100,20);getContentPane().add(tblcari);tblcari.setBounds(180,10,95,20);getContentPane().add(lblnama);lblnama.setBounds(10,30,70,20);getContentPane().add(txnama);txnama.setBounds(75,30,200,20);getContentPane().add(lblkelas);lblkelas.setBounds(10,50,100,20);getContentPane().add(kelasA);kelasA.setBounds(75,50,50,20);getContentPane().add(kelasB);kelasB.setBounds(125,50,50,20);getContentPane().add(kelasC);kelasC.setBounds(175,50,50,20);grupkelas.add(kelasA);grupkelas.add(kelasB);grupkelas.add(kelasC);setVisible(true);

}public static void main(String args[]){

AplikasiPenilaian ap=new AplikasiPenilaian();}

}

Page 16: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 16

JRadioButton kelasA=new JRadioButton("A");JRadioButton kelasB=new JRadioButton("B");JRadioButton kelasC=new JRadioButton("C");Sintaks di atas menunjukkan bahwa kita memiliki tiga kelas yang dibuat dengan membentuk tiga buah obyek dari class JRadioButton.

ButtonGroup grupkelas=new ButtonGroup();Merupakan obyek yang digunakan untuk menyatukan semua obyek JRadioButton, sehingga hanya akan terpilih satu diantara obyek JRadioButton yang ada.

grupkelas.add(kelasA);grupkelas.add(kelasB);grupkelas.add(kelasC);adalah cara untuk menyatukan ketiga obyek menjadi satu kesatuan, sehingga hanya dapat dipilih satu diantara ketiganya.

f. JComboBox

import javax.swing.*;class AplikasiPenilaian extends JFrame{

JLabel lblnim=new JLabel("NIM ");JTextField txnim=new JTextField(20);JLabel lblnama=new JLabel("Nama");JTextField txnama=new JTextField(20);JButton tblcari=new JButton("Cari");JLabel lblkelas=new JLabel("Kelas ");JRadioButton kelasA=new JRadioButton("A");JRadioButton kelasB=new JRadioButton("B");JRadioButton kelasC=new JRadioButton("C");ButtonGroup grupkelas=new ButtonGroup();JLabel lblkelompok=new JLabel("Kelompok");String[] jeniskelompok={"1","2","3","4","5","6","7"};JComboBox cbkelompok=new JComboBox(jeniskelompok);AplikasiPenilaian(){

setTitle("Lembar Penilaian");setLocation(300,100);setSize(300,150);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);komponenVisual();

}void komponenVisual(){

getContentPane().setLayout(null);getContentPane().add(lblnim);

Page 17: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 17

lblnim.setBounds(10,10,70,20);getContentPane().add(txnim);txnim.setBounds(75,10,100,20);getContentPane().add(tblcari);tblcari.setBounds(180,10,95,20);getContentPane().add(lblnama);lblnama.setBounds(10,30,70,20);getContentPane().add(txnama);txnama.setBounds(75,30,200,20);getContentPane().add(lblkelas);lblkelas.setBounds(10,50,100,20);getContentPane().add(kelasA);kelasA.setBounds(75,50,50,20);getContentPane().add(kelasB);kelasB.setBounds(125,50,50,20);getContentPane().add(kelasC);kelasC.setBounds(175,50,50,20);grupkelas.add(kelasA);grupkelas.add(kelasB);grupkelas.add(kelasC);getContentPane().add(lblkelompok);lblkelompok.setBounds(10,70,100,20);getContentPane().add(cbkelompok);cbkelompok.setBounds(75,70,100,20);setVisible(true);

}public static void main(String args[]){

AplikasiPenilaian ap=new AplikasiPenilaian();}

}

String[] jeniskelompok={"1","2","3","4","5","6","7"};Adalah variabel array yang akan digunakan sebagai alternatif pilihan bagi ComboBox.

JComboBox cbkelompok=new JComboBox(jeniskelompok);Merupakan deklarasi pembentukan obyek ComboBox menggunakan argumen array yang sebelumnya telah disediakan yaitu jeniskelompok.

g. JTextArea

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

class FrameTextArea extends JFrame {

Page 18: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 18

private JLabel label=new JLabel("Nama");private JTextArea area1=new JTextArea(3,20);FrameTextArea(){

setTitle("Form Text Area");setLocation(200,100);setSize(300,100);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);komponenVisual();

}

void komponenVisual() {getContentPane().setLayout(new FlowLayout());getContentPane().add(label);getContentPane().add(area1);setVisible(true);

}

public static void main(String args[]) {FrameTextArea textArea=new FrameTextArea();

}}

h. JCheckBox

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

class FrameCheckBox extends JFrame {JCheckBox cek1=new JCheckBox("Pilihan 1");JCheckBox cek2=new JCheckBox("Pilihan 2");JCheckBox cek3=new JCheckBox("Pilihan 3");

FrameCheckBox() {setTitle("FrameCheckBox");setLocation(200,100);setSize(300,100);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);komponenVisual();

}

void komponenVisual(){getContentPane().setLayout(new FlowLayout());getContentPane().add(cek1);getContentPane().add(cek2);getContentPane().add(cek3);setVisible(true);

}

public static void main(String args[]){

Page 19: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 19

FrameCheckBox cb=new FrameCheckBox();}

}

i. JTable

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

class FrameTabel extends JFrame {String[] header={"Senin","Selasa","Rabu"};String[][] data ={{"100","300","150"},{"500","600","450"},

{"290","690","360"}};JTable tabel1=new JTable(data,header);

FrameTabel(){setTitle("Frame Tabel");setLocation(200,100);setSize(300,100);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);komponenVisual();

}

void komponenVisual(){getContentPane().add(tabel1);setVisible(true);

}

public static void main(String args[]){FrameTabel t=new FrameTabel();

}}

j. JScrollPane

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

class FrameScrollPane extends JFrame {String[] header={"Senin","Selasa","Rabu"};

Page 20: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 20

String[][] data={{"100","300","150"},{"500","600","450"},{"290","690","360"}};

FrameScrollPane(){setTitle("Frame Scroll Pane");setLocation(200,100);setSize(300,100);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);komponenVisual();

}

void komponenVisual() {JTable tabel1=new JTable(data,header);JScrollPane scrollPane = new JScrollPane(tabel1);getContentPane().add(scrollPane, BorderLayout.CENTER);setVisible(true);

}

public static void main(String args[]){FrameScrollPane t=new FrameScrollPane();

}}

k. JMenu

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

class AplikasiMenu extends JFrame {JMenuBar mb=new JMenuBar();JMenu file=new JMenu("File");JMenu help=new JMenu("Help");JMenuItem open=new JMenuItem("Open");JMenuItem close=new JMenuItem("Close");JMenuItem quit=new JMenuItem("Quit");JMenuItem about=new JMenuItem("About");

AplikasiMenu(){setTitle("Menu Utama");setSize(320,160);setLocation(300,200);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);komponenVisual();

}

void komponenVisual(){setJMenuBar(mb);mb.add(file);

Page 21: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 21

mb.add(help);file.add(open);file.add(close);close.setEnabled(false);file.add(quit);help.add(about);setVisible(true);

}

public static void main(String args[]){AplikasiMenu m1=new AplikasiMenu();

}}

l. JInternalFrame

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

public class AplikasiFrameInternal extends JFrame {JDesktopPane desktop=new JDesktopPane();JInternalFrame iframe=new JInternalFrame("Internal

Frame",true,true,true,true);

AplikasiFrameInternal(){setTitle("Aplikasi Internal Frame");setLocation(100,200);setSize(300,200);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);komponenVisual();

}

void komponenVisual(){iframe.setLocation(20,20);iframe.setSize(200,100);iframe.setVisible(true);desktop.add(iframe);setContentPane(desktop);setVisible(true);

}

public static void main(String[] args){AplikasiFrameInternal if1=new AplikasiFrameInternal();

}}

Page 22: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 22

3.3 Event Handler

a. ActionEvent

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

class AplikasiEvent1 extends JFrame{JTextField data1=new JTextField(6);JTextField data2=new JTextField(6);JButton operasi=new JButton("+");JTextField hasil=new JTextField(6);JButton exit=new JButton("EXIT");

AplikasiEvent1(){setTitle("Event Sederhana");setLocation(200,100);setSize(270,100);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);komponenVisual();AksiReaksi();

}

void komponenVisual(){getContentPane().setLayout(null);getContentPane().add(data1);data1.setBounds(10,10,50,20);getContentPane().add(data2);data2.setBounds(60,10,50,20);getContentPane().add(operasi);operasi.setBounds(110,10,50,20);getContentPane().add(hasil);hasil.setBounds(160,10,90,20);getContentPane().add(exit);exit.setBounds(160,35,90,20);setVisible(true);

}

Page 23: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 23

void AksiReaksi(){operasi.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){int x=Integer.parseInt(data1.getText());int y=Integer.parseInt(data2.getText());String z=String.valueOf(x+y);hasil.setText(z);

}});

exit.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){

System.exit(0);}

});}

public static void main(String args[]){AplikasiEvent1 e1=new AplikasiEvent1();

}}

method AksiReaksi() digunakan untuk menempatkan kode-kode program event handler. Pada contoh di atas, terdapat dua event handler yaitu penekanan mouse pada tombol operasi dan penekanan mouse pada tombol exit. Reaksi yang timbul akibat klik mouse pada tombol operasi dan exit diimplementasikan dengan kode berikut :

operasi.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e){

… }});

exit.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e)

{});

Dalam method public void actionPerformed(ActionEvent e) inilah efek yang timbul akibat penekanan klik mouse pada tombol operasi dan exit kita tuliskan.

int x=Integer.parseInt(data1.getText());int y=Integer.parseInt(data2.getText());

Dua baris kode tersebut di atas mempunyai tugas yang sama yaitu mengambil nilai dari JTextField dengan cara data1.getText() , mengubahnya

Page 24: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 24

dari String menjadi integer dengan Integer.parseInt dan menyimpan nilainya ke dalam variabel x dan y.

String z=String.valueOf(x+y);Baris perintah di atas digunakan untuk melakukan proses penjumlahan kedua input data x dan y, kemudian mengubah tipe datanya menjadi String agar hasilnya dapat ditampilkan melalui JTextField hasil dengan menggunakan sintaks :hasil.setText(z);

Pada tombol exit diberikan sintaks System.exit(0) agar aplikasi berhenti bila tombol exit di klik.

b. KeyboardEvent

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

class keyboardEvent extends JFrame {JTextField data1=new JTextField(6);JTextField data2=new JTextField(6);JButton operasi=new JButton("+");JTextField hasil=new JTextField(6);JButton exit=new JButton("EXIT");

keyboardEvent(){setTitle("Keyboard Event");setLocation(200,100);setSize(300,100);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);komponenVisual();AksiReaksi();

}

void komponenVisual(){getContentPane().setLayout(null);getContentPane().add(data1);data1.setBounds(10,10,50,20);getContentPane().add(data2);data2.setBounds(70,10,50,20);getContentPane().add(operasi);operasi.setBounds(130,10,50,20);getContentPane().add(hasil);hasil.setBounds(190,10,90,20);getContentPane().add(exit);exit.setBounds(190,35,90,20);setVisible(true);

}

void AksiReaksi(){data1.addKeyListener(new KeyAdapter(){

public void keyPressed(KeyEvent e){if(e.getKeyCode()==e.VK_ENTER){

Page 25: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 25

data2.requestFocus();}

}});

data2.addKeyListener(new KeyAdapter(){public void keyPressed(KeyEvent e){

if(e.getKeyCode()==e.VK_ENTER){operasi.requestFocus();

}}

});

operasi.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){

int x=Integer.parseInt(data1.getText());int y=Integer.parseInt(data2.getText());String z=String.valueOf(x+y);hasil.setText(z);

}});

operasi.addKeyListener(new KeyAdapter(){public void keyPressed(KeyEvent e){

if(e.getKeyCode()==e.VK_ENTER){int x=Integer.parseInt(data1.getText());int y=Integer.parseInt(data2.getText());String z=String.valueOf(x+y);hasil.setText(z);exit.requestFocus();

}}

});

exit.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){

System.exit(0);}

});}

public static void main(String args[]){keyboardEvent e1=new keyboardEvent();

}}

if(e.getKeyCode()==e.VK_ENTER){……….

Page 26: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 26

……….}adalah sintaks yang memungkinkan suatu reaksi terjadi bila kita menekan tombol enter di keyboard. Dengan cara yang sama, program aplikasi sederhana di atas dapat kita sempurnakan dengan memberikan event enter pada JTextField data1 dan JTextField data2 sehingga setelah data pertama dimasukkandan kita tekan enter kursor akan pindah ke JTextField data2 siap untuk mengisi data kedua. Setelah data kedua diisi dan ditekan tombol enter maka fokus akan menuju ke tombol operasi, siap untuk ditekan.

data2.requestFocus()adalah kode yang memungkinkan terjadinya perpindahan kursor dari JTextfield pertama ke JTextField kedua.

c. TextAreaEvent

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

class textAreaEvent extends JFrame{JLabel lblnama=new JLabel("Nama");JTextField txnama=new JTextField(20);JLabel lblnim=new JLabel("NIM");JTextField txnim=new JTextField(7);JLabel lblkelamin=new JLabel("Jenis Kelamin");JRadioButton pria=new JRadioButton("Pria");JRadioButton wanita=new JRadioButton("Wanita");ButtonGroup kelompok=new ButtonGroup();JButton cetak=new JButton("Cetak");JTextArea hasil=new JTextArea();

textAreaEvent(){setTitle("TextArea Event");setLocation(300,100);setSize(300,320);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);komponenVisual();AksiReaksi();

}

void komponenVisual(){getContentPane().setLayout(null);getContentPane().add(lblnama);lblnama.setBounds(10,10,80,20);getContentPane().add(txnama);txnama.setBounds(105,10,175,20);getContentPane().add(lblnim);lblnim.setBounds(10,33,80,20);getContentPane().add(txnim);txnim.setBounds(105,33,70,20);getContentPane().add(lblkelamin);lblkelamin.setBounds(10,56,80,20);kelompok.add(pria);

Page 27: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 27

kelompok.add(wanita);getContentPane().add(pria);pria.setBounds(105,56,50,20);getContentPane().add(wanita);wanita.setBounds(160,56,70,20);getContentPane().add(cetak);cetak.setBounds(10,80,270,20);getContentPane().add(hasil);hasil.setBounds(10,105,270,150);setVisible(true);

}

void AksiReaksi(){cetak.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){hasil.append(txnama.getText()+"\n");hasil.append(txnim.getText()+"\n");if(pria.isSelected()==true){

hasil.append(pria.getText()+"\n");}else{

hasil.append(wanita.getText()+"\n");}

}});

}

public static void main(String args[]){textAreaEvent e5=new textAreaEvent();

}}

d. CheckBoxEvent

import javax.swing.*;

Page 28: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 28

import java.awt.event.*;

class checkBoxEvent extends JFrame {JLabel lblnama=new JLabel("Nama");JTextField txnama=new JTextField(20);JLabel lblnim=new JLabel("NIM");JTextField txnim=new JTextField(7);JLabel lblkelamin=new JLabel("Jenis Kelamin");JRadioButton pria=new JRadioButton("Pria");JRadioButton wanita=new JRadioButton("Wanita");ButtonGroup kelompok=new ButtonGroup();JLabel lblhobi=new JLabel("Hobi");JCheckBox baca=new JCheckBox("Membaca");JCheckBox mancing=new JCheckBox("Memancing");JCheckBox jalan=new JCheckBox("Jalan-Jalan");JButton cetak=new JButton("Cetak");JTextArea hasil=new JTextArea();

checkBoxEvent(){setTitle("Event Sederhana");setLocation(300,100);setSize(300,320);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);komponenVisual();AksiReaksi();

}

void komponenVisual(){getContentPane().setLayout(null);getContentPane().add(lblnama);lblnama.setBounds(10,10,80,20);getContentPane().add(txnama);txnama.setBounds(105,10,175,20);getContentPane().add(lblnim);lblnim.setBounds(10,33,80,20);getContentPane().add(txnim);txnim.setBounds(105,33,70,20);getContentPane().add(lblkelamin);lblkelamin.setBounds(10,56,80,20);kelompok.add(pria);kelompok.add(wanita);getContentPane().add(pria);pria.setBounds(105,56,50,20);getContentPane().add(wanita);wanita.setBounds(160,56,70,20);getContentPane().add(lblhobi);lblhobi.setBounds(10,80,70,20);getContentPane().add(baca);baca.setBounds(105,80,100,20);getContentPane().add(mancing);mancing.setBounds(105,103,100,20);getContentPane().add(jalan);jalan.setBounds(105,126,100,20);getContentPane().add(cetak);cetak.setBounds(10,150,270,20);

Page 29: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 29

getContentPane().add(hasil);hasil.setBounds(10,180,270,100);setVisible(true);

}

void AksiReaksi(){cetak.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){hasil.append(txnama.getText()+"\n");hasil.append(txnim.getText()+"\n");if(pria.isSelected()==true){

hasil.append(pria.getText()+"\n");}else{

hasil.append(wanita.getText()+"\n");}if(baca.isSelected()==true){

hasil.append(baca.getText()+"\n");}if(mancing.isSelected()==true){

hasil.append(mancing.getText()+"\n");}if(jalan.isSelected()==true){

hasil.append(jalan.getText()+"\n");}

}});

}

public static void main(String args[]){checkBoxEvent e5=new checkBoxEvent();

}}

Page 30: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 30

e. MenuEvent

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

class menuEvent extends JFrame {JMenuBar mb=new JMenuBar();JMenu data=new JMenu("Data");JMenu help=new JMenu("Help");JMenuItem input=new JMenuItem("Input Data");JMenuItem edit=new JMenuItem("Edit Data");JMenuItem quit=new JMenuItem("Keluar");JMenuItem about=new JMenuItem("About");

menuEvent(){setTitle("Menu Utama");setSize(320,160);setLocation(300,200);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);komponenVisual();AksiReaksi();

}

void komponenVisual(){setJMenuBar(mb);mb.add(data);mb.add(help);data.add(input);data.add(edit);data.addSeparator();data.add(quit);help.add(about);setVisible(true);

}

void AksiReaksi(){input.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){JOptionPane.showInputDialog(null,"Masukkan nama

anda","DataPersonalia",JOptionPane.INFORMATION_MESSAGE);}

});

edit.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){

new checkBoxEvent();}

});

quit.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){

System.exit(0);}

Page 31: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 31

});

about.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){

new FrameTextArea();}

});}

public static void main(String args[]){menuEvent e8=new menuEvent();

}}

f. twoListener

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

public class twoListener extends JFrame {

JTextField text = new JTextField(30);JLabel lbl = new JLabel("Click dan Drag Mouse");twoListener() {

setTitle("Contoh 2 Listener");setSize(300,300);setLocation(300,200);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);komponenVisual();Aksi();

}

void komponenVisual() {getContentPane().setLayout(new BorderLayout(3,3));getContentPane().add(lbl, BorderLayout.NORTH);getContentPane().add(text, BorderLayout.SOUTH);setVisible(true);

}

Page 32: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 32

void Aksi() {

this.addMouseMotionListener(new MouseMotionAdapter() {public void mouseDragged(MouseEvent e) {

String s = "Mouse dragging: X= "+ e.getX() + " Y= "+ e.getY();

text.setText(s);}

});

this.addMouseListener(new MouseAdapter() {public void mouseEntered(MouseEvent e) {

String s = "Mouse Entered!";text.setText(s);

}});

this.addMouseListener(new MouseAdapter() {public void mouseExited(MouseEvent e) {

String s = "Mouse Exited!";text.setText(s);

}});

}

public static void main(String args[]) {twoListener two = new twoListener();

}

}

3.4 LayoutManagera. FlowLayout

import javax.swing.*;

Page 33: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 33

import java.awt.*;

class flowlayout extends JFrame{JLabel nama=new JLabel("Nama");JLabel nim=new JLabel("NIM");JTextField txnama=new JTextField(20);JTextField txnim=new JTextField(7);JButton tombolSimpan=new JButton("Simpan");flowlayout(){

setTitle("FlowLayout");setLocation(200,100);setSize(450,120);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);komponenVisual();

}

void komponenVisual(){getContentPane().setLayout(new FlowLayout());getContentPane().add(nama);getContentPane().add(txnama);getContentPane().add(nim);getContentPane().add(txnim);getContentPane().add(tombolSimpan);setVisible(true);

}

public static void main(String args[]){flowlayout fl=new flowlayout();

}}

b. BorderLayout

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

public class borderlayout2 extends JFrame {

JButton north = new JButton("NORTH");JButton east = new JButton("EAST");JButton south = new JButton("SOUTH");JButton west = new JButton("WEST");JButton center = new JButton("CENTER");

borderlayout2() {setTitle("BorderLayout");setLocation(300,200);

Page 34: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 34

setSize(300,300);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);komponenVisual();

}

void komponenVisual() {getContentPane().setLayout(new BorderLayout(2,2));getContentPane().add(north,"North");getContentPane().add(south,"South");getContentPane().add(center,"Center");getContentPane().add(east,"East");getContentPane().add(west,"West");setVisible(true);

}

public static void main(String args[]) {borderlayout2 bl = new borderlayout2();

}}

Kode program yang digunakan untuk pengaturan BoderLayout adalah :getContentPane().setLayout(new BorderLayout());getContentPane().add(nama, "North");method add membutuhkan argumen nama obyek dan salah satu dari posisi layout yang telah disediakan dalam BorderLayout().

c. GridLayout

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

class gridlayout extends JFrame{

JButton satu=new JButton("1");JButton dua=new JButton("2");JButton tiga=new JButton("3");

Page 35: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 35

JButton empat=new JButton("4");JButton lima=new JButton("5");JButton enam=new JButton("6");JButton tujuh=new JButton("7");JButton delapan=new JButton("8");JButton sembilan=new JButton("9");

gridlayout(){setLocation(200,100);setSize(200,200);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);komponenVisual();

}

void komponenVisual(){getContentPane().setLayout(new GridLayout(3,3));getContentPane().add(satu);getContentPane().add(dua);getContentPane().add(tiga);getContentPane().add(empat);getContentPane().add(lima);getContentPane().add(enam);getContentPane().add(tujuh);getContentPane().add(delapan);getContentPane().add(sembilan);setVisible(true);

}

public static void main(String args[]){gridlayout fl=new gridlayout();

}}

Kode program yang digunakan untuk pengaturan GridLayout adalah :getContentPane().setLayout(new GridLayout(3,3));dimana angka 3 pada argumen GridLayout menunjukkan banyaknya baris dan 3 menunjukkan banyaknya kolom.

d. JPanel

import javax.swing.*;

Page 36: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 36

import java.awt.*;

public class panellayout extends JFrame {

JLabel cust = new JLabel("Nama Customer");JLabel ker = new JLabel("Nama Kereta");JLabel kuan = new JLabel("Kuantitas Pesanan");JLabel tanggal = new JLabel("Tanggal Berlaku");JLabel petug = new JLabel("Petugas");JLabel dar = new JLabel("Dari");JLabel men = new JLabel("Menuju");JTextField nam = new JTextField();JTextField tan = new JTextField();JButton tbls = new JButton("Simpan");JButton tble = new JButton("Edit");JButton tblx = new JButton("Exit");String[]

jenisasal={"Surabaya","Jakarta","Bandung","Yogyakarta","Semarang","Malang"};

JComboBox cbasal=new JComboBox(jenisasal);String[]

jenistujuan={"Surabaya","Jakarta","Bandung","Yogyakarta","Semarang","Malang"};

JComboBox cbtujuan=new JComboBox(jenistujuan);String[]

petugas={"Yuni","Dien","Taufan","Viska","Rizky","Putra"};JComboBox cbpetugas=new JComboBox(petugas);String[] pesan={"1","2","3","4","5","6"};JComboBox cbpesan=new JComboBox(pesan);String[] jeniskereta={"Mutiara

Selatan","Argo","Cempaka","Gambir","Senja","Wilis"};JComboBox cbkereta=new JComboBox(jeniskereta);JPanel north = new JPanel();JPanel south = new JPanel();JPanel east = new JPanel();JPanel kosong = new JPanel();JPanel kosong1 = new JPanel();JPanel kosong2 = new JPanel();JPanel kosong3 = new JPanel();JPanel kosong4 = new JPanel();JPanel kosong5 = new JPanel();JPanel kosong6 = new JPanel();JPanel back = new JPanel();JPanel back_n = new JPanel();JPanel back_e = new JPanel();JPanel back_s = new JPanel();JPanel back_w = new JPanel();

panellayout() {setTitle("Kompleks Layout");setLocation(300,300);setSize(400, 250);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);komponenVisual();

Page 37: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 37

}

void komponenVisual() {north.setLayout(new GridLayout(8,1,5,5));north.add(cust);north.add(ker);north.add(cbkereta);north.add(kuan);north.add(tanggal);north.add(petug);north.add(kosong);north.add(tbls);

south.setLayout(new GridLayout(8,1,5,5));south.add(nam);south.add(dar);south.add(cbasal);south.add(cbpesan);south.add(tan);south.add(cbpetugas);south.add(kosong1);south.add(tble);

east.setLayout(new GridLayout(8,1,5,5));east.add(kosong3);east.add(men);east.add(cbtujuan);east.add(kosong4);east.add(kosong5);east.add(kosong6);east.add(kosong2);east.add(tblx);

back.setLayout(new GridLayout(1,3,5,5));back.add(north);back.add(south);back.add(east);

getContentPane().setLayout(new BorderLayout());getContentPane().add(back,"Center");getContentPane().add(back_n,"North");getContentPane().add(back_e,"East");getContentPane().add(back_s,"South");getContentPane().add(back_w,"West");setVisible(true);

}

public static void main(String args[]) {panellayout pl = new panellayout();

}

}

Page 38: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 38

3.5 Grafisa. Primitive Drawing

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

class Kanvas extends Canvas {public void paint(Graphics g) {

g.setColor(Color.red);g.drawLine(10,10,250,10);g.setColor(Color.blue);g.drawRect(10,20,100,50);g.setColor(Color.red);g.drawOval(120,20,50,50);g.drawString("Selamat Belajar", 100,100);g.setColor(Color.black);

}}

public class Menggambar extends JFrame {Kanvas gambar = new Kanvas();

Menggambar() {super("Aplikasi grafis sederhana");setLocation(300,200);setSize(300,150);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);komponenVisual();

}

void komponenVisual() {getContentPane().setLayout(new BorderLayout());getContentPane().add(gambar,"Center");setVisible(true);

}

public static void main(String args[]) {Menggambar gb = new Menggambar();

Page 39: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 39

}

}

Penjelasan dari sintak-sintak program di atas adalah sebagai berikut:class Kanvas1 extends Canvas{ public void paint(Graphics g){ }}Sintaks ini merupakan class tempat menggambar berbagai obyek gambar. Class inilah yang digunakan untuk meletakkan gambar yang kita bangun menggunakan kode-kode tertentu. Kode-kode tersebut diletakkan dalam method paint. Pada method paint() di atas tidak terdapat baris kode apapun sehingga output yang muncul adalah frame kosong tanpa gambar apapun.

class Menggambar extends JFrame {Kanvas gambar=new Kanvas();

..........

..........}

Class Menggambar adalah program aplikasi grafis kita. Pada class ini kita membentuk obyek menggunakan class Kanvas1 dengan nama gambar.

Kanvas gambar=new Kanvas();Obyek gambar ini kemudian dimasukkan dalam method komponenVisual() untuk menampilkan di frame dengan cara:

getContentPane().setLayout(new BorderLayout());getContentPane().add(gambar,BorderLayout.CENTER);

Layout diatur menggunakan BorderLayout dan obyek gambar diletakkan dalam salah satu diantara lima posisi yang ada. Output dari program di atas berupa frame kosong tanpa gambar apapun. Method paint() pada Class Kanvas1 dapat diisi dengan berbagai sintaks untuk membuat aplikasi grafis, misalnya kita isi dengan sintaks berikut :

class Kanvas extends Canvas{public void paint(Graphics g){

g.setColor(Color.red);g.drawLine(10,10,250,10);

Page 40: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 40

g.setColor(Color.blue);g.drawRect(10,20,100,50);g.setColor(Color.red);g.drawOval(120,20,50,50);g.drawString("Selamat Belajar", 100,100);g.setColor(Color.black);

}}Penjelasan sintaks-sintaks di atas adalah sebagai berikut :

g.setColor(Color.red);

Digunakan untuk mengatur warna dari obyek gambar setelah baris tersebut dituliskan..

g.drawLine(10,10,250,10);

Digunakan untuk mengambar bentuk garis dimana argumen pertama dan kedua menunjukkan koordinat titik awal garis, argumen ketiga dan keempat menunjukkan koordinat titik akhir garis.

g.drawRect(10,20,100,50);

Digunakan untuk menggambar bentuk segi empat dimana argumen pertama dan kedua merupakan ujung kiri atas, argumen ketiga dan keempat menunjukkan ujung kanan bawah dari segi empat.

g.drawOval(120,20,50,50);

Digunakan untuk menggambar bentuk lingkaran dimana argumen pertama dan kedua merupakan koordinat pusat, argumen krtiga jarak horisontal dan argumen keempat adalah jarak vertikal.

g.drawString("Selamat Belajar", 100,100);

Digunakan untuk menggambar bentuk string. Argumen pertama merupakan string yang akan ditampilkan, argumen kedua dan ketiga menunjukkan posisi dari tulisan.

b. Mouse Tracking dengan Canvas

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

class m_canvas extends Canvas {

int startX,startY;String event = null;String modifier = "";

Page 41: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 41

m_canvas() {setBackground(Color.WHITE);

}

public void paint(Graphics g) {

if(event == null){return;

}

g.setColor(Color.RED);g.drawString("Mouse event type: "+ event, 6,18);if(modifier.length() > 0) {

g.drawString("Modifier Key: "+ modifier, 6,34);}

g.setColor(Color.BLACK);g.drawString("("+startX+","+startY+")", startX,startY);

}

void setInfo(MouseEvent e, String type) {this.event = type;startX = e.getX();startY = e.getY();modifier = "";if(e.isShiftDown()) {

modifier +="Shift ";}

if(e.isControlDown()) {modifier +="Control ";

}if(e.isAltDown()) {

modifier +="Alt ";}if(e.isMetaDown()) {

modifier +="Meta ";}

repaint();

}}

public class mouseTrack extends JFrame {

m_canvas mc = new m_canvas();mouseTrack() {

setTitle("Mouse Track!");setLocation(300,150);setSize(300,300);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);komponenVisual();

Page 42: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 42

aksi();}

void komponenVisual() {getContentPane().setLayout(new BorderLayout(3,3));getContentPane().add(mc,"Center");setVisible(true);

}void aksi(){

mc.addMouseMotionListener(new MouseMotionAdapter() {public void mouseDragged(MouseEvent e) {

mc.setInfo(e,"mouseDragged");}

});

mc.addMouseListener(new MouseAdapter() {public void mousePressed(MouseEvent e) {

mc.setInfo(e,"mousePressed");

}});mc.addMouseListener(new MouseAdapter() {

public void mouseExited(MouseEvent e) {mc.setInfo(e,"mouseExited");

}});mc.addMouseListener(new MouseAdapter() {

public void mouseClicked(MouseEvent e) {mc.setInfo(e,"mouseClicked");

}});mc.addMouseListener(new MouseAdapter() {

public void mouseEntered(MouseEvent e) {mc.setInfo(e,"mouseEntered");

}});mc.addMouseListener(new MouseAdapter() {

public void mouseReleased(MouseEvent e) {mc.setInfo(e,"mouseReleased");

}});mc.addMouseMotionListener(new MouseMotionAdapter() {

public void mouseMoved(MouseEvent e) {mc.setInfo(e,"mouseMoved");

}});

}

public static void main(String args[]) {mouseTrack mt = new mouseTrack();

}

}

Page 43: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 43

c. Animasi Font dengan Canvas

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

class k_font extends Canvas {Font font1, font2, font3, font4, font5;String message;k_font (){

this(null);}k_font (String stringMessage) {

message = stringMessage;if (message == null ) {

message = "Java !";}

font1 = new Font("Serif", Font.BOLD, 14);font2 = new Font("SansSerif", Font.BOLD + Font.ITALIC,

24);font3 = new Font("Monospaced", Font.PLAIN, 30);font4 = new Font("Dialog", Font.PLAIN, 36);font5 = new Font("Serif", Font.ITALIC, 48);setBackground(Color.BLACK);

}public void paint(Graphics g) {

int width = getWidth();int height = getHeight();

for (int i=0; i<25;i++) {int fontNum = (int)(5 * Math.random()) + 1;switch(fontNum) {

case 1:g.setFont(font1);

Page 44: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 44

break;case 2:

g.setFont(font2);break;

case 3:g.setFont(font3);break;

case 4:g.setFont(font4);break;

case 5:g.setFont(font5);break;

}

g.setColor(new Color((float)Math.random(), (float)Math.random(), (float)Math.random()));

int x,y;x = -50 + (int)(Math.random() * (width+40));y = (int) (Math.random() * (height + 20));g.drawString(message, x, y);

}}

}

public class animasiFont extends JFrame {

k_font k = new k_font ();

animasiFont (){setTitle("animasiFont ");setLocation(300,250);setSize(300,300);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);komponenVisual();aksi();

}

void komponenVisual(){getContentPane().setLayout(new BorderLayout());getContentPane().add(k,"Center");setVisible(true);

}

void aksi() {k.addMouseListener(new MouseAdapter() {

public void mousePressed(MouseEvent e) {Component source = (Component) e.getSource();source.repaint();

}});

}

Page 45: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 45

public static void main(String args[]) {animasiFont n = new animasiFont();

}}

d. Simple Stamp

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

class simpleStampCanvas extends Canvas {int p = 0;int x ,y;simpleStampCanvas() {

setBackground(Color.BLACK);

}

public void paint(Graphics g) {switch(p) {

case 0:setBackground(Color.BLACK);break;

case 1:g.setColor(Color.BLUE);g.fillOval(x-30, y-15, 60, 30);g.setColor(Color.BLACK);g.drawOval(x-30, y-15, 60, 30);break;

case 2:g.setColor(Color.RED);g.fillRect(x-30, y-15, 60, 30);g.setColor(Color.BLACK);

Page 46: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 46

g.drawRect(x-30, y-15, 60, 30);break;

}g.dispose();

}

}

public class simpleStamp extends JFrame {

simpleStampCanvas ssC = new simpleStampCanvas();

simpleStamp() {setTitle("Simple Stamp");setLocation(300,150);setSize(300,300);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);komponenVisual();aksi();

}

void komponenVisual() {getContentPane().setLayout(new BorderLayout());getContentPane().add(ssC, "Center");setVisible(true);

}

void aksi() {ssC.addMouseListener(new MouseAdapter() {

public void mousePressed(MouseEvent e) {ssC.x = e.getX();ssC.y = e.getY();if(e.isMetaDown()) {

if(e.isShiftDown())ssC.p = 0;

elsessC.p = 1;

}else{

if(e.isShiftDown())ssC.p = 0;

elsessC.p = 2 ;

}

ssC.repaint();}

Page 47: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 47

});

}

public static void main(String args[]) {simpleStamp ss = new simpleStamp();

}}

Saat Klik Kiri Saat Klik Kanan Saat klik+shift

e. Program Paint

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

class kanvas extends Canvas {private final static int BLACK =0, RED = 1, GREEN=2, BLUE = 3,

CYAN = 4, MAGENTA= 5, YELLOW = 6;int currentColor = BLACK;int prevX, prevY;boolean drag;Graphics lembarLukis;

kanvas() {setBackground(Color.WHITE);aksi();

}

public void paint(Graphics g) {int width = getWidth();int height = getHeight();

/*membuat pembagian untuk 7 pallete warna*/int colorSpacing = (height - 56) /7;

/*membuat border untuk canvas*/g.setColor(Color.GRAY);

Page 48: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 48

g.drawRect(0,0,width-1,height-1);g.drawRect(1,1,width-3,height-3);g.drawRect(2,2,width-5,height-5);

/*membuat canvas untuk pallete warna*/g.fillRect(width-56,0,56,height);

/*membuat clear button*/g.setColor(Color.WHITE);g.fillRect(width-53,height-53,50,50);g.setColor(Color.BLACK);g.drawRect(width-53,height-53,49,49);g.drawString("CLEAR",width-48, height-23);

/*membuat 7 pallete warna dengan batuan colorSpacing*/

g.setColor(Color.BLACK);g.fillRect(width-53,3+0*colorSpacing,50,colorSpacing-3);g.setColor(Color.RED);g.fillRect(width-53,3+1*colorSpacing,50,colorSpacing-3);g.setColor(Color.GREEN);g.fillRect(width-53,3+2*colorSpacing,50,colorSpacing-3);g.setColor(Color.BLUE);g.fillRect(width-53,3+3*colorSpacing,50,colorSpacing-3);g.setColor(Color.CYAN);g.fillRect(width-53,3+4*colorSpacing,50,colorSpacing-3);g.setColor(Color.MAGENTA);g.fillRect(width-53,3+5*colorSpacing,50,colorSpacing-3);g.setColor(Color.YELLOW);g.fillRect(width-53,3+6*colorSpacing,50,colorSpacing-3);

/*membuat borde 2 pixel di antara pallette warna */g.setColor(Color.WHITE);g.drawRect(width-

55,1+currentColor*colorSpacing,53,colorSpacing);g.drawRect(width-

54,2+currentColor*colorSpacing,51,colorSpacing-2);

}

public void gantiWarna(int y) {int width = getWidth();int height = getHeight();

int colorSpacing = (height-56)/7;int newColor = y / colorSpacing; //mendapatkan range dari

pallete

if(newColor>0 || newColor<6) {

// pastikan bahwa hasil pembagian berada pada range yang benar

Graphics g = getGraphics();

/*pallete lama di set kembali denan border abu-abu*/

Page 49: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 49

g.setColor(Color.GRAY);g.drawRect(width-

55,1+currentColor*colorSpacing,53,colorSpacing);g.drawRect(width-

54,2+currentColor*colorSpacing,51,colorSpacing-2);

/*pallete baru di set dengan border putih*/currentColor = newColor;g.setColor(Color.WHITE);g.drawRect(width-

55,1+currentColor*colorSpacing,53,colorSpacing);g.drawRect(width-

54,2+currentColor*colorSpacing,51,colorSpacing-2);g.dispose();

}

}

/*Routine yang dipanggil oleh mousePressed ketika user mengklick area dari canvas gambar*/

/*Routine ini mengeset pallete warna */

void setWarna(){lembarLukis = getGraphics();

switch(currentColor){case BLACK:

lembarLukis.setColor(Color.BLACK);break;

case RED:lembarLukis.setColor(Color.RED);break;

case GREEN:lembarLukis.setColor(Color.GREEN);break;

case BLUE:lembarLukis.setColor(Color.BLUE);break;

case CYAN:lembarLukis.setColor(Color.CYAN);break;

case MAGENTA:lembarLukis.setColor(Color.MAGENTA);break;

case YELLOW:lembarLukis.setColor(Color.YELLOW);break;

}}

void aksi() {this.addMouseListener(new MouseAdapter() {

public void mousePressed(MouseEvent e) {

Page 50: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 50

int x = e.getX(); //x koordinat saat user mengklik

int y = e.getY(); //y koordinat saat user mengklik

int width = getWidth(); //lebar canvasint height = getHeight(); //tinggi canvas

if (drag == false) {

if (x > width -53) { // user mengclik pada area pallete

if(y > height - 53) { //user mengclik pada area clear

repaint();}else { //user mengclik pada area

pallete warnagantiWarna(y);

}}else if(x>3 && x < width-56 && y > 3 &&

y < height -3) { //user mengclik pada area canvas gambarprevX = x; //mulai menggambar dari

point iniprevY = y;drag = true;setWarna();

}}

}

//akhir mouse ditekan});

this.addMouseListener(new MouseAdapter() {public void mouseReleased(MouseEvent e) {

if (drag == true){

drag=false;lembarLukis.dispose();lembarLukis = null;

}} //akhir mouse released

});

this.addMouseMotionListener(new MouseMotionAdapter() {public void mouseDragged(MouseEvent e) {

if (drag == true){

Page 51: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 51

int x = e.getX(); //x koordinat saat user mengklik

int y = e.getY(); //y koordinat saat user mengklik/*menormalkan koordinat*/

if ( x<3) {x = 3;

}if (x > getWidth() -57 ) {

x = getWidth() -57; }if (y<3) {

y=3;}if(y>getHeight() -4) {

y = getHeight() -4;}

lembarLukis.drawLine(prevX, prevY,x,y);prevX = x;prevY = y;

}} //akhir mouse released

});}

}

public class melukis extends JFrame {kanvas kv = new kanvas();melukis() {

setTitle("Mari melukis yuk!");setLocation(300,300);setSize(600,480);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);komponenVisual();

}

void komponenVisual(){getContentPane().add(kv);setVisible(true);

}

public static void main(String args[]) {melukis lukis = new melukis();

}}

Page 52: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 52

f. KeyboardEvent

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

class canvas_k extends Canvas {

final int ukuranBox = 40;Color warnaBox;int boxX, boxY;

canvas_k() {setBackground(Color.WHITE);boxX = 100;boxY = 100;warnaBox = Color.RED;aksi();

}

public void paint(Graphics g) {int width = getWidth();int height = getHeight();

if(hasFocus()) {g.setColor(Color.CYAN);

}else {

g.setColor(Color.LIGHT_GRAY);}

Page 53: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 53

g.drawRect(0,0,width-1,height-1);g.drawRect(1,1,width-3,height-3);g.drawRect(2,2,width-5,height-5);

g.setColor(warnaBox);g.fillRect(boxX, boxY, ukuranBox, ukuranBox);

g.setColor(Color.RED);if(hasFocus()) {

g.drawString("Tanda panah untuk menggerakkan!",7, 20);

g.drawString("K, R, G, B untuk ganti warna",7, 40);}else {

g.drawString("Klik untuk mengaktifkan!",7, 20);}

}

void aksi() {this.addFocusListener(new FocusAdapter() {

public void focusGained(FocusEvent e) {repaint();

}});

this.addFocusListener(new FocusAdapter() {public void focusLost(FocusEvent e) {

repaint();}

});

this.addKeyListener(new KeyAdapter() {public void keyPressed(KeyEvent e) {

int key = e.getKeyCode();if(key== KeyEvent.VK_LEFT) {

boxX -= 8;if(boxX < 3) {

boxX = 3;}repaint();

}else if(key == KeyEvent.VK_RIGHT) {

boxX +=8;if(boxX > getWidth() -3 - ukuranBox) {

boxX = getWidth() -3 - ukuranBox;}repaint();

}else if(key == KeyEvent.VK_UP) {

boxY -=8;

Page 54: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 54

if(boxY < 3) {boxY = 3 ;

}repaint();

}else if(key == KeyEvent.VK_DOWN) {

boxY +=8;if(boxY > getHeight() - 3 - ukuranBox) {

boxY = getHeight() - 3 - ukuranBox;}repaint();

}}

});

this.addKeyListener(new KeyAdapter() {public void keyTyped(KeyEvent e) {

char key = e.getKeyChar();if(key== 'K' || key== 'k' ) {

warnaBox = Color.BLACK;repaint();

}else if(key== 'R' || key== 'r' ) {

warnaBox = Color.RED;repaint();;

}else if(key== 'G' || key== 'g' ) {

warnaBox = Color.GREEN;repaint();

}else if(key== 'B' || key== 'b' ) {

warnaBox = Color.BLUE;repaint();

}}

});

this.addMouseListener(new MouseAdapter() {public void mousePressed(MouseEvent e) {

requestFocus();}

});

}}

public class keyboardEvent2 extends JFrame {

canvas_k ck = new canvas_k();

keyboardEvent2() {setTitle("Keyboard Event");setLocation(100,100);

Page 55: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 55

setSize(300,300);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);komponenVisual();

}

void komponenVisual(){getContentPane().add(ck);setVisible(true);

}

public static void main(String args[]) {keyboardEvent2 kb = new keyboardEvent2();

}}

4. Tugas

a. Buatlah tampilan GUI seperti di bawah ini(gunakan cara manual):

Page 56: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 56

b. Buatlah sebuah program tebak angka, dengan tampilan sebagai berikut:

Bila kita masukkan sebuah bilangan ke dalam textfield dan bilangan tersebut sesuai dengan bilangan yang kita tentukan, maka akan muncul tampilan gambar :

Bila angka yang kita masukkan tidak sesuai, maka akan muncul tampilan gambar:

Page 57: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 57

Dan ketika kita memasukkan sebuah bilangan baru ke dalam textfield maka tampilan akan kembali ke kondisi awal.

c. Buatlah Layout Calculator dan tambahkan eventHandlernya di bawah ini(gunakan layout manager):

Gunakan method JTextField.setHorizontalAlignment(JTextField.RIGHT) untuk rata kanan.

d. Modifikasi program seperti di bawah ini:

Page 58: 01_Java_GUI

PEMOGRAMAN BERORIENTASI OBJEK

Pengenalan Java GUI I - 58

e. Buatlah satu aplikasi yang menggunkan minimal event handler di bawah ini dan class Cnavas(contoh Game):