Anda di halaman 1dari 216
BAHASA PEMROGRAMAN JAVA GUI, ERROR EXCEPTION, THREAD, I/O (INPUT/OUTPUT), DATABASE & PEMBUATAN LAPORAN WINDU GATA,

BAHASA PEMROGRAMAN JAVA

GUI, ERROR EXCEPTION, THREAD, I/O (INPUT/OUTPUT), DATABASE & PEMBUATAN LAPORAN

WINDU GATA, SKOM

1

KATA PENGANTAR

Dengan berkembangnya teknologi, bahasa pemrograman Java tampil dengan gaya yang berbeda dengan bahasa pemrograman sebelumnya. Dengan keunggulan yang tidak dimiliki oleh bahasa pemrograman lainnya, yaitu multiplatform. Java dengan motonya “Write Once Use Every Where” telah dibuktikan dengan banyaknya peralatan dewasa ini yang menggunakan bahasa pemrograman Java.

Java

juga

merupakan

para

bahasa

pemrograman

bebas

atau

tanpa

biaya,

maupun

memudahkan

pengguna aplikasi, dapat mengefesienkan biaya yang harus dikeluarkan.

pengembang

untuk

mengembangkan

aplikasi,

sehingga

sisi

dari

Untuk mempelajari bahasa pemrograman Java, khususnya tampilan layar Client/Server tidaklah mudah, banyak kendala yang dihadapi, oleh karena itu penulis merasa terdorong untuk membuat buku yang lebih detail beserta contoh dan latihan.

Buku ini selain membahas tentang pemgrograman GUI (Grafik User Interface), pembahasan lainnya adalah penggunaan dan penanganan kesalahan program (Error Exception), penggunaan program dengan proses parallel (thread), penanganan file input dan output, bagaimana cara menyimpan data pada database, membuat laporan menggunakan JFreeReport dan Pentaho, dan menyinggung sedikit mengenai penggunaan editor bahasa pemrograman Java, yaitu NetBeans dan JBuilder.

Pembuatan buku ini dibuat dan ditujukan kepada pengembang program, mahasiswa informatika, Sekolah Menengah Kejuruan (SMK) informatika, dan buat masyarakat luas yang tertarik mengeneai informatika khususnya bidang pembuatan aplikasi program dengan menggunakan bahasa pemrograman Java. Dengan tujuan dapat diterapkan dan dimanfaatkan secara luas di masyarakat.

Penulis telah semaksimal mungkin untuk menulis buku Bahasa Pemrograman Java ini, sebagai pengabdian penulis terhadap Negara untuk turut serta mencerdaskan masyarakat luas.

Walaupun sudah semaksimal mungkin penulis tetap membutuhkan kritis dan saran dari teman-teman yang telah membaca tulisan ini dengan mengirimkan email ke windu@antara.co.id atau windu_gata@yahoo.com.

Akhir kata saya ucapkan terima kasih, semoga Bangsa dan Negara Indonesia semakin maju diseluruh bidang dan semakin memperhatikan dibidang pendidikan Indonesia khususnya bidang Informatika.

Jakarta, Desember 2005

Penulis

2

DAFTAR ISI

3

PENDAHULUAN

Teknologi Java dibuat sebagai bahasa pemrograman kecil pada tahun 1991 oleh Sun Microsystem. Pada saat itu proyek pembuatan bahasa pemrograman Java disebut “The Green Project”. “The Green Project” yang merupakan proyek rahasia saat itu beranggotakan 13 (tiga belas) orang dan dipimpin oleh James Gosling yang berkantor tersembunyi di Sand Hill Road di Menlo Park. Secara teknis terputus dari perusahaan SUN dan dikerjakan sekitar 18 (delapan belas) bulan lamanya. Mereka berusaha untuk mengantisipasi dengan merancang aplikasi atau perangkat lunak lanjutan pada komputer. Hasilnya sangat berbeda dengan sistem komputer yang telah ada. Nama bahasa pemrograman dikenal dengan nama “Oak”. Pengenalan bahasa pemrograman baru tersebut dikenalkan pada industri televisi kabel digital, tetapi ide mereka terlalu jauh dan tidak dapat diterapkan pada waktu dekat, sehingga industri televisi belum siap menerima teknologi yang mereka tawarkan. Saat teknologi internet sudah dikenal luas, bahasa pemrograman “Oak” berubah menjadi bahasa pemrograman Java dan dipublikasi tahun 1995. Aplikasi pertama yang menggunakan teknologi Java adalah Netscape Navigator, yang merupakan Selancar Internet. Saat ini, dalam waktu 10 tahun, penggunaan Java sudah dilakukan oleh 4 (empat) juta pengembang sistem aplikasi komputer secara keseluruhan di dunia, dan telah memasuki segmen industri besar serta penggunaannya serta kertekaitannya dengan peralatan, komputer dan jaringan. Terbukti dengan keunggulan, efesiensi, penggunaan banyak platform, dan keamanan membuat teknologi Java digunakan untuk penanganan 2.5 (dua setengah) miliar peralatan yang terdiri dari lebih 700 (tujuh ratus) juta komputer, lebih dari 1 (satu) miliar peralatan bergerak (data berdasarkan dari Ovum), 1.25 (satu seperempat) miliar kartu pintar, printer, kamera Web, permainan, navigasi kendaraan seperti mobil, aplikasi pembayaran parkir dan banyak lagi. Pada saat ini, kita dapat menemukan Teknologi Java pada jaringan komputer dan peralatan yang berhubungan dengan Internet dan komputer supercepat para ahli hingga laptop dan handphone. Dari pengguna di jalan-jalan hingga pemain permainan (game) dan kartu kredit, sebagai bukti bahwa teknologi Java ada dimana-mana. Kenapa pengembang aplikasi memilih Teknologi Java ?. Karena bahasa program Java telah berulang-ulang dikaji ulang, pengembangan, pengujian langsung dan dibuktikan dengan komunitas lebih dari 4 (empat) juta pengembang perangkat lunak dan aplikasi. Alasan lain adalah bahasa pemrograman Java dapat dikembangkan pada 1 (satu) platform atau jenis sistem operasi dan dapat dijalankan pada platform lainnya, dan tidak tergantung pada aplikasi web, server client, penyimpanan data HTML dan lain- lain. Dengan kombinasi teknologi yang dimiliki oleh Java menjadikan aplikasi yang dapat dan mudah diubah suatu saat serta meringankan sisi pengguna produk aplikasi.

4

Buku Bahasa Pemrograman JAVA-GUI, yang ada dihadapan anda sekarang, menggunakan bahasa pemrograman Java standard J2SDK yang dikembangkan oleh Sun Microsystem (www.sun.com). Selain itu, buku ini disusun menggunakan konsep praktik langsung (learning by doing) yang dilengkapi pembahasan contoh program dengan menggunakan beberapa objek Java , lengkap dengan pembahasannya. Harapannya, buku ini bisa mengantarkan pembaca mampu mengembangkan program GUI (Grafik User Interface) layaknya form dan objek lainnya. Sekaligus dapat digunakan dalam form, grafik 2 (dua) dimensi, event handling, error handling, file akses, multithread, dan database (mysql) serta penggunaan JBuilder, Netbeans dan JfreeReport dan Pentaho. Dikarenakan buku ini diperuntukkan pada pembaca yang sudah mengenal dasar- dasar algoritma dan dasar-dasar bahasa pemrograman Java . Pembahasannya terdiri dari 14 (empat belas) bab, yaitu :

BAB I Pengenalan GUI dan cara menggunakan Jframe. BAB II Penggunaan grafik 2D pada Jframe. BAB III Contoh program input mahasiswa menggunakan objek JLabel, JTextField, JCheckBox, JRadioButton, JComboBox, JButton, Action Listener dan Layout (FlowLayout dan Border Layout). BAB IV Merubah contoh program input pada bab III dengan merubah objek JCheck box dengan JList Multi Selected, dan objek JRadioButton dengan JList Single Selected. Sedangkan layout yang digunakan adalah Border Layout BAB V Bab ini menerangkan bagaimana menggunakan peralatan mouse dan keyboard dengan fasilitas Java objek MouseMotionListener, MouseListener, KeyListener, dan ActionListener. BAB VI Membuat program konversi suhu menggunakan objek JSlider BAB VII Membuat program editor berita menggunakan objek JMenuBar, JMenu, JPopupMenu, JMenuItem, JTextArea, dan Box BAB VIII Mengenal penggunaan JInternalFrame BAB IX Mengenal penggunaan tampilan group berupa tab dengan objek JTabbedPane BAB X Mengenal model desain tampilan pada standar Java BAB XI Bagaimana cara mengatasi kesalahan program atau yang kita kenal dengan Error Excption. BAB XII

5

Mengenal Penggunaan Thread BAB XIII Mengenal cara mengakses file dan mengembangkan program pada bab VII menggunakan fasilitas akses file. BAB XIV Cara menggunakan database mysql dan interface koneksi database JDBC BAB XV Membuat laporan dengan menggunakan jFreeReport BAB XVI Jawaban Soal Latihan BAB XVI Penutup

6

BAB I

GUI (Grafik User Interface)

Pertanyaan mendasar mengenai penggunaan tampilan atau GUI dalam program adalah seberapa penting hal itu dilakukan. Bukankah program sudah berjalan sesuai dengan permintaan? Pertanyaan itu biasanya menghantui setiap pengembang program (programmer) pada saat membuat program. Tentu saja kepentingan penggunaan tampilan akan berpulang pada penempatan program itu sendiri. Untuk program yang hanya ditempatkan pada sisi komputer server yang jarang berinteraksi dengan pengguna, maka fungsi dasar program dirasa cukup memadai. Tetapi apabila program tersebut diperkirakan akan banyak berinteraksi dengan pengguna, maka ada baiknya jika program menggunakan tampilan. Beberapa alasan bahwa program harus menggunakan tampilan, yaitu

- Dengan tampilan, program akan nampak jauh lebih menarik

- Interaktif

- User Friendly atau mudah dalam penggunaannya

- Dapat berinteraksi dengan peralatan seperti mouse, joystick dan peralatan lainnya. Jika pengembang program peduli terhadap tampilan, biasanya program yang dihasilkan akan lebih diterima oleh pengguna. Bahkan sering karena tampilan yang menarik, program itu memiliki nilai yang lebih tinggi dibandingkan dengan program lain dengan tampilan yang sederhana. Saat ini, terdapat beberapa model Frame GUI yang dapat digunakan saat mengembangkan program Java yaitu java.awt.* dan javax.swing.*. Di dalam buku ini, untuk tampilan GUI, penulis menggunakan javax.swing.*, yaitu JFrame, Jlabel, JTextField, JRadioButton, JCheckBox, JComboBox, JTextArea, JSlider, JMenuBar, JPopUpMenu, JMenuItem, dan tools lainnya. Disertakan pula cara instalasi dan penggunaan Borland JBuilder dan Netbean dalam pembuatan aplikasi GUI.

JFRAME

Saat kita membuat program Java GUI, yang pertama kali kita harus kuasai adalah penggunaan JFrame. Jframe digunakan untuk mendesainmodel tampilan yang didalamnya dapat kita tempatkan komponen-komponen lainnya. Contoh penggunaan tampilan frame pada program Java :

//program pertama //Tidak Menggunakan Construktor import javax.swing.JFrame; class frame1{ public static void main(String args []){ JFrame tampil = new JFrame(); tampil.show();

}

}

7

Atau

//program kedua menggunakan konstruktor import javax.swing.*; class frame21 extends JFrame{

frame21(){

show();

}

//construktor

}

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

new frame21();

}

}

Apabila kedua program tersebut dikompilasi dan dijalankan maka akan terdapat tampilan seperti dibawah ini :

dijalankan maka akan terdapat tampilan seperti dibawah ini : Gambar 1.1. JFrame Untuk membuat frame dengan

Gambar 1.1. JFrame

Untuk membuat frame dengan tulisan “Universitas Budi Luhur”, pada posisi x = 10 dan Y = 100, lebar = 300, tinggi = 200, Resizable false, dan akan terhapus di alokasi memori setelah aplikasi di tutup seperti pada gambar 1.2 sebagai berikut :

super("Universitas Budi Luhur"); setResizable(false); this.setSize(300,200)
super("Universitas Budi Luhur");
setResizable(false);
this.setSize(300,200)
Luhur"); setResizable(false); this.setSize(300,200) setLocation (10, 100 ); Gambar 1.2. JFrame Dan Property

setLocation

(10,100);

Gambar 1.2. JFrame Dan Property

//program ketiga import javax.swing.*; class frame61 extends JFrame{

8

frame61(){

super("Universitas Budi Luhur"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocation (10,100);

this.setSize(300,200);

setResizable(false);

show();

}

}

class frame62{ public static void main (String args[]){ new frame61();

}

}

9

BAB II

GRAFIK DUA DIMENSI (2D) PADA JFRAME

Grafik dua dimensi (2D) menggunakan class yang terdapat pada java.awt.*, yaitu Canvas. Komponen Canvas tersebut berbentuk kotak kosong pada layar. Di dalam Canvas tersebut dapat kita gunakan sebagai media gambar 2 (dua) dimensi. Penggunaan Canvas harus dibarengi dengan sub class paint sebagai media gambar yang berupa perintah.

Cara menggabungkan penggunaan Canvas dan Jframe adalah sebagai berikut :

penggunaan Canvas dan Jframe adalah sebagai berikut : Gambar 2.1. Grafik dua Dimensi (2D) Dan JFRAME

Gambar 2.1. Grafik dua Dimensi (2D) Dan JFRAME

//program ke empat import javax.swing.*; import java.awt.*; //Class Canvas class grap1 extends Canvas{ public void paint (Graphics g){ //(x,y,width,height)

}

}

g.drawRect(1,5,50,20);

g.drawLine(35,50,100,70);

//(x,y,width,height,arcwidth,archeight

g.drawRoundRect(1,50,30,40,5,100);

g.setColor(Color.YELLOW);

g.drawOval(110,50,40,30);

g.setFont(new Font("Tahoma",Font.ITALIC,20));

g.drawString("9511500134",80,15);

g.setColor(Color.BLUE); //set warna

g.fillRect(1,110,30,20);

g.fillOval(50,110,30,20);

//set warna

10

//Class frame class grap11 extends JFrame{ private Container konten=new Container(); private grap1 duaD =new grap1();

grap11(){

super("Universitas Budi Luhur"); setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE

}

);

this.setLocation(10,100);

this.setSize(250,200);

konten=

konten.add(duaD);

getContentPane();

show();

public static void main(String args[]){ new grap11();

}

}

Contoh tampilan pada gambar ke II.1, terdapat 2 (dua) class, yaitu

- class grap1 extends Canvas

- class grap11 extends JFrame

Pada class pertama, class yang bernama grap1, merupakan turunan dari objek Canvas yang berasal dari java.awt yang digunakan untuk melakukan design grafik

2D.

dasar

pemrogramannya adalah sebagai berikut :

Adapun

struktur

dasar

dari

canvas

bersifat

abstrak

dengan

bentuk

[public|private] class <nameclass> extends Canvas{ public void paint(Graphics <objectname>){

}

}

Perumpamaan membuat gambar 2D menggunakan objek Canvas adalah seperti menggambar pada sebuah kertas kosong dengan pensil gambar. Hanya saja penggunaan objek Canvas menggunakan posisi piksel pada frame. Posisi 0 pada horizontal (X=0) dan posisi 0 pada vertikal (Y=0), menunjukan

posisi tersebut berada pada posisi ujung paling kiri dan paling atas dari frame. Jika X > 0 maka posisi berada ke arah kanan dari frame, sedangkan jika Y > 0 maka posisi berada ke arah bawah dari frame. Banyak objek yang dapat digunakan untuk menggambar 2D pada Canvas, yaitu bulat, kotak, garis dan lain-lain. Pada Gambar 2.1 terdapat beberapa objek, yaitu :

- Kotak

drawRect (x,y,width, height)

11

- Kotak dengan bundaran di pinggir

drawRoundRect (x, y, width, height, arcwidth, archeight)

- Kotak dengan warna di dalamnya

fillRect (x,y,width,height)

- Penggunaan Font

setFont(new Font("<Model Font>", <STANDAR|BOLD|ITALIC>, <Size>))

- String

drawstring(“<tulisan>”,x,y)

- Garis

drawLine(x,y,width,height)

- Bundar

drawOval(x,y,width,height)

- Bundar dengan warna didalamnya

fillOval(x,y,width, height)

- Pewarnaan

setColor(<color>)

Ketika hendak menggunakan Class pertama pada class kedua (frame) perlu menggunakan perintah :

private grap1 duaD = new grap1(); Kemudian class pertama tersebut ditampilkan pada JFrame dengan menggunakan perintah :

konten.add(duaD);

12

Latihan 1 Buatlah program 2 (dua) dimensi seperti pada gambar dibawah ini

Latihan 1 Buatlah program 2 (dua) dimensi seperti pada gambar dibawah ini Gambar 2.2. Grafik 2D

Gambar 2.2. Grafik 2D Bendera Merah Putih

13

BAB III

JLabel, JTextField, JCheckBox, JRadioButton, JComboBox, JButton , Action Listener Dan Layout (FlowLayout dan Border Layout)

Objek GUI yang dapat digunakan pada bahasa pemrograman Java standard, khususnya javax.swing.*, sangat banyak dan fleksibel. Contoh pada Gambar 3.1, menunjukan form input-an mahasiswa yang menggunakan beberapa objek javax.swing.*, yaitu : JLabel, JTextField, JCheckBox, JRadioButton, JComboBox dan JButton. Ditambah dengan penggunaan Action Listener dari java.awt.event.* dan model-model tampilan (FlowLayout dan GridLayout )

dan model-model tampilan (FlowLayout dan GridLayout ) JLabel JTextField JCheckBox JRadioButton JComboBox JButton
dan model-model tampilan (FlowLayout dan GridLayout ) JLabel JTextField JCheckBox JRadioButton JComboBox JButton
dan model-model tampilan (FlowLayout dan GridLayout ) JLabel JTextField JCheckBox JRadioButton JComboBox JButton
dan model-model tampilan (FlowLayout dan GridLayout ) JLabel JTextField JCheckBox JRadioButton JComboBox JButton
dan model-model tampilan (FlowLayout dan GridLayout ) JLabel JTextField JCheckBox JRadioButton JComboBox JButton
dan model-model tampilan (FlowLayout dan GridLayout ) JLabel JTextField JCheckBox JRadioButton JComboBox JButton

JLabel

dan model-model tampilan (FlowLayout dan GridLayout ) JLabel JTextField JCheckBox JRadioButton JComboBox JButton Gambar

JTextField

JCheckBox

JRadioButton

JComboBox

JButton

Gambar 3.1. Input Data Mahasiswa

Sebelum membuat program, sebaiknya kita mengenal masing-masing objek satu persatu, yaitu :

JLabel

Berfungsi untuk menampilkan tulisan atau gambar ikon pada frame

Constructor

JLabel()

Membuat JLabel tanpa gambar dan tanpa tulisan di dalamnya

JLabel(Icon image)

Membuat JLabel dengan gambar.

JLabel(Icon image, int horizontalAlignment)

Membuat JLabel dengan Gambar dan model horizontal alignment (LEFT,

CENTER, RIGHT, LEADING atau TRAILING)

JLabel(String text)

Membuat JLabel dengan isi teks di dalamnya.

JLabel(String text Icon icon int horizontalAlignment)

14

Membuat JLabel dengan isi text di dalamnya, gambar dan horizontal

alignment (LEFT, CENTER, RIGHT, LEADING atau TRAILING).

JLabel(String text, int horizontalAlignment)

Membuat JLabel dengan isi text di dalamnya dan horizontal alignment (LEFT,

CENTER, RIGHT, LEADING atau TRAILING).

Beberapa Method yang harus diketahui

String

getText()

Mendapatkan nilai string pada JLabel

void

setText(String text)

Memberikan nilai string pada JLabel

Contoh Penggunaan :

http://java.sun.com/docs/books/tutorial/uiswing/components/label.html

JTextField

Berfungsi sebagai media edit single teks

Constructor

JTextField() Membuat JTextField.

JTextField(Document doc, String text, int columns)

Membuat JTextField yang menggunakan model text, isi dari JTextField dan kolom.

JTextField(int columns)

Membuat JTextField dengan model kolom.

JTextField(String text)

Membuat JTextField dengan isi teks di dalamnya.

JTextField(String text, int columns)

Membuat JTextField dengan isi teks di dalamnya dan kolom.

Beberapa Method yang harus diketahui

void

addActionListener(ActionListener l)

Memberikan action listener pada JTextField

String

getText()

Mendapatkan nilai string dari JTextField.

void

setFont(Font f)

Merubah Font pada JTextField

void

setText(String Text)

15

Memberikan nilai string pada JTextField
Memberikan nilai string pada JTextField

Contoh Penggunaan :

http://java.sun.com/docs/books/tutorial/uiswing/components/textfield.html

JCheckBox

Digunakan untuk pilihan yang dapat lebih dari satu pilihan

Constructor

JCheckBox()

Membuat JCheckBox dalam posisi tidak tercentang/terpilih tanpa text dan ikon.

JCheckBox(Action a)

Creates a check box where properties are taken from the Action supplied.

JCheckBox(Icon icon)

Membuat JCheckBox dengan posisi tidak tercentang/terpilih dengan tampilan gambar ikon.

JCheckBox(Icon icon, boolean selected)

Membuat JCheckBox dengan tampilan gambar ikon dan posisi tercentang/terpilih tergantung dengan parameter Boolean yang diberikan.

JCheckBox(String text)

Membuat JCheckBox dengan posisi tidak tercentang/terpilih dengan teks.

JCheckBox(String text, boolean selected)

Membuat JCheckBox dengan isian berupa teks dan posisi tercentang/terpilih disesuaikan dengan parameter Boolean yang diberikan.

JCheckBox(String text, Icon icon)

Membuat JCheckBox dengan posisi tidak tercentang dengan teks dan tampilan gambar ikon.

JCheckBox(String text, Icon icon, boolean selected)

Membuat JCheckBox dengan teks dengan tampilan gambar ikon dan posisi tercentang/terpilih disesuaikan dengan parameter Boolean yang diberikan.

Beberapa Method yang harus diketahui

Boolean

isSelected()

Mendapatkan nilai dari JCheckBox . Jika tercentang/terpilih maka nilainya adalah true, apabila tidak tercentang nilainya adalah false.

void

setSelected()

Memberikan nilai true atau false pada objek JCheckBox.

Contoh Penggunaan :

16

http://java.sun.com/docs/books/tutorial/uiswing/components/button.html

JRadioButton

Digunakan untuk memilih satu dari beberapa pilihan.

Constructor

JRadioButton()

Membuat JRadioButton dengan posisi tidak tercentang/terpilih dan tanpa isian

teks.

JRadioButton(Icon icon)

Membuat JRadioButton dengan posisi tidak tercentang/terpilih dengan tampilan gambar dengan tanpa teks.

JRadioButton(Icon icon, boolean selected)

Membuat JRadioButton dengan gambar, tanpa teks dan posisi tercentang/terpilih sesuai dengan parameter Boolean yang diberikan.

JRadioButton(String text)

Membuat JRadioButton dengan posisi tidak tercentang/terpilih dengan teks.

JRadioButton(String text, boolean selected)

Membuat JRadioButton dengan teks dan posisi tercentang/terpilih sesuai dengan parameter boolean yang diberikan.

JRadioButton(String text, Icon icon)

Membuat JRadioButton dengan teks dan gambar ikon dengan posisi tidak tercentang/terpilih.

JRadioButton(String text, Icon icon, boolean selected)

Membuat JRadioButton dengan teks, gambar ikon dan posisi tercentang/terpilih disesuaikan dengan parameter Boolean yang diberikan.

Beberapa Method yang harus diketahui

Boolean

isSelected()

Mendapatkan nilai dari JRadioButton. Jika tercentang/terpilih maka nilainya adalah true, apabila tidak tercentang nilainya adalah false.

void

setSelected()

Memberikan nilai true atau false pada objek JRadioButton.

Contoh Penggunaan :

http://java.sun.com/docs/books/tutorial/uiswing/components/button.html

17

Saat

penggunaan

JRadioButton harus menggunakan ButtonGroup untuk

menggabungkan JRadioButton .

ButtonGrop

Berfungsi sebagai penggabungan komponen pada Java

Constructor ButtonGroup() Membuat ButtonGroup
Constructor
ButtonGroup()
Membuat ButtonGroup

Beberapa Method yang harus diketaui

void

add(AbstractButton b)

Menambah button pada group.

void

remove(AbstractButton b)

Menghapus button dari the group.

JComboBox

Berfungsi untuk memilih satu dari beberapa pilihan dengan tampilan list dan dapat diedit sesuai dengan kebutuhan

Constructor

JComboBox() Membuat JComboBox.

JComboBox(ComboBoxModel aModel)

Membuat JComboBox dengan ComboBoxModel yang diinginkan

(DefaultComboBoxModel, MetalFileChooserUI.DirectoryComboBoxModel, MetalFileChooserUI.FilterComboBoxModel).

JComboBox(Object[] items)

Membuat JComboBox dengan isian berupa array.

JComboBox(Vector items)

Membuat JComboBox dengan element Vector.

18

Beberapa Method yang harus diketahui

 

Void

addItem(Object anObject)

Menambah Item pada JComboBox.

Int

getItemCount()

Mendapat nilai jumlah item pada JComboBox .

Object

getItemAt(int index)

Mendapatkan nilai dari item dengan Index yang ditentukan.

int

getMaximumRowCount()

Mendapatkan jumlah nilai maksimum list pada

JComboBox

int

getSelectedIndex()

Mendapatkan nilai item ke berapa (index) pada

JComboBox.

Object

getSelectedItem()

Mendapatkan isi dari JComboBox.

boolean

isEditable()

Mendapatkan nilai true atau false dari status editable

JComboBox.

void

removeAllItems()

Menghapus semua item pada JComboBox.

void

removeItem(Object anObject)

Menghapus salah satu item pada JComboBox.

void

setEditable(boolean aFlag)

Merubah status editable pada JComboBox.

void

setEnabled(boolean b)

Mengaktifkan atau menon aktifkan JComboBox .

void

setMaximumRowCount(int count)

Menampilkan maximum item yang dapat ditampilkan

JComboBox.

void

setSelectedIndex(int anIndex)

merubah pointer Index.

void

setSelectedItem(Object anObject)

Merubah posisi item berdasarkan object.

Contoh Penggunaan :

http://java.sun.com/docs/books/tutorial/uiswing/components/combobox.html

JButton

Mengimplementasikan penggunaan “push button”

Constructor JButton()
Constructor
JButton()

19

Membuat tombol tanpa teks dan gambar ikon.

JButton(Icon icon)

Membuat tombol dengan gambar ikon.

JButton(String text)

Membuat tombol dengan tampilan teks.

JButton(String text, Icon icon)

Membuat tombol dengan tampilan teks dan gambar ikon.

Contoh Penggunaan :

http://java.sun.com/docs/books/tutorial/uiswing/components/button.html

Dalam tampilan layar pada Gambar 3.1, apabila tombol “Tampilkan” ditekan maka akan tampil isi data dari form. Pada pemrograman Java, fungsi tersebut dapat

menggunakan method addActionListener dan actionPerformed.

Method

void

actionPerformed(ActionEvent e)

Mendeteksi Action yang diberikan.

Rancangan

tampilan

dibuat

dengan

menggunakan

layout

FlowLayout

dan

GridLayout.

Dalam

layout

FlowLayout

terdapat

3

(tiga)

jenis

layout,

yaitu

FlowLayout.LEFT untuk posisi kiri, FlowLayout.CENTER untuk posisi tengah dan FlowLayout.RIGHT untuk posisi kanan

LEFT

CENTER

RIGHT

Sedangkan GridLayout disesuaikan dengan parameter yang diberikan. Sebagai contoh, GridLayout(6,2), berarti baris dari grid adalah 6 (enam) dan kolomnya sebanyak 2 dua). Untuk lebih jelasnya pada Gambar 3.1 adalah sebagai berikut :

container

panel1 gridlayout (6,2)

lblNim

lblNama

lblSertifikat

lblJurusan

lblKampus

cmdSave

txtNim

txtNama

panel2 gridlayout (1,3)

chSD

chSMP

chSMA

panel3 gridlayout (1,4)

rdTI

rdMI

rdAK

rdTK

cmbKampus

cmdExit

20

berarti

Container selalu berada di tengah Frame. Dengan 3 (tiga) panel, yaitu :

- panel1, dengan layout GridLayout(6,2) untuk penempatan lblNim, txtNim, lblNama, txtNama, lblSertifikat, panel2, lblJurusan, panel3, lblKampus, cmbKampus, cmdSave, dan cmdExit

- panel2, dengan layout GridLayout(1,3) untuk penempatan chSD, chSMP, dan chSMA

- panel3, dengan layout GridLayout(1,4), untuk penempatan rdTI, rdMI, rdAK, dan rdTKD

Terdapat

satu

Container

dengan

layout

FlowLayout.CENTER,

yang

Setelah mengenal objek yang akan digunakan, maka kita dapat menganalisa program untuk tampilan pada layer seperti pada Gambar 3.1

//program ke lima import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*;

class frame23 extends JFrame{ //deklarasi private Container konten = new Container(); private JPanel panel1 = new JPanel(); private JLabel lblNim = new JLabel(); private JTextField txtNim = new JTextField(10); private JLabel lblNama = new JLabel(); private JTextField txtNama = new JTextField(20);

private JLabel lblSertifikat = new JLabel(); private JPanel panel2 = new JPanel(); private JCheckBox chSD = new JCheckBox("SD"); private JCheckBox chSMP = new JCheckBox("SMP"); private JCheckBox chSMA = new JCheckBox("SMA");

private JPanel panel3 = new JPanel(); private JLabel lblJurusan = new JLabel();

//Digunakan untuk mengelompokkan radio button private ButtonGroup grpJurusan = new ButtonGroup();

private JRadioButton rdTI = new JRadioButton("TI"); private JRadioButton rdMI = new JRadioButton("MI"); private JRadioButton rdAK = new JRadioButton("AK"); private JRadioButton rdTK = new JRadioButton("TK");

private JLabel lblKampus = new JLabel(); String sKampus[] = { "Cempaka Putih", "Cileduk","Roxy","Salemba" }; private JComboBox cmbKampus = new JComboBox(sKampus);

private JButton cmdSave = new JButton("Tampilkan");

21

private JButton cmdEnd = new JButton("Selesai");

frame23(){

super("Universitas Budi Luhur"); setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

this.setLocation(10,100);

this.setSize(500,200);

konten=getContentPane(); konten.setLayout(new FlowLayout( FlowLayout.CENTER)

);

lblNim.setText("NIM");

lblNama.setText("NAMA");

lblSertifikat.setText("Sertifikat");

lblJurusan.setText("Jurusan");

lblKampus.setText("Kampus");

panel1.setLayout(new GridLayout(6,2));

panel1.add(lblNim);

panel1.add(txtNim);

panel1.add(lblNama);

panel1.add(txtNama);

panel1.add(lblSertifikat);

panel2.setLayout(new GridLayout(1,3));

panel2.add(chSD);

panel2.add(chSMP);

panel2.add(chSMA);

panel1.add(panel2);

grpJurusan.add(rdTI);

grpJurusan.add(rdMI);

grpJurusan.add(rdAK);

grpJurusan.add(rdTK);

panel3.setLayout(new GridLayout(1,4));

panel3.add(rdTI);

panel3.add(rdMI);

panel3.add(rdAK);

panel3.add(rdTK);

panel1.add(lblJurusan);

panel1.add(panel3);

//posisi index terpilih = I Ciledug

cmbKampus.setSelectedIndex(1);

//tampil da ta dalam combo hanya 3 baris

cmbKampus.setMaximumRowCount(3);

panel1.add(lblKampus);

panel1.add(cmbKampus);

itemHandler itemHandler = new itemHandler();

panel1.add(cmdSave);

22

cmdSave.addActionListener(itemHandler);

panel1.add(cmdEnd);

cmdEnd.addActionListener(itemHandler);

konten.add(panel1);

}

show();

private class itemHandler implements ActionListener{

public void actionPerformed(ActionEvent e){

//mend apatkan nama objek action Object obj=e.getSource(); if(obj==cmdSave){ String sTampil; sTampil = "NIM : " + txtNim.getText(); sTampil+= "\nNama : " + txtNama.getText(); sTampil+= "\nSertifikat"; if (chSD.isSelected()) sTampil+= ", SD"; if (chSMP.isSelected()) sTampil+= ", SMP"; if (chSMA.isSelected()) sTampil+= ", SMA"; sTampil+= "\nJurusan"; if (rdTI.isSelected()) sTampil+= ", TI"; else if(rdMI.isSelected()) sTampil+=",MI"; else if(rdAK.isSelected()) sTampil+=",AK"; else if(rdTK.isSelected()) sTampil+=",TK"; else sTampil+=", Ngak Jelas";

sTampil+="\nKampus,";

sTampil+=cmbKampus.getItemAt(

cmbKampus.getSelectedIndex()

);

JOptionPane.showMessageDialog( null,sTampil , "HASIL", JOptionPane.INFORMATION_MESSAGE

);

}

else {System.exit (0);}

}

}

public static void main(String args[]){

}

new frame23();

}

23

Latihan 2

Pada program kelima tambahkan beberapa fasilitas yang akan tampil pada saat program dijalankan, antara lain :

- Icon pada frame

- Nim : 9511500134

- Nama : Windu Gata

- SD : Checked

- SMP : Checked

- SMA : Checked

- Jurusan TI : Checked

- Icon Pada Tombol Save

- Icon Pada Tombol End

- Short Key “P” Pada Tombol Save

- Short Key “S” Pada Tombol End

End - Short Key “P” Pada Tombol Save - Short Key “S” Pada Tombol End Gambar

Gambar 3.2 Latihan Menambah Icon

24

BAB IV

JList (Single Selected dan Multi Selected) DAN LAYOUT (Border Layout)

Gambar 4.1 adalah merupakan model form yang mirip seperti pada Gambar 3.1 dimana JCheckBox diganti dengan JList model multiselection dan JRadioButton diganti dengan JList model singleselection.

JRadioButton diganti dengan JList model s ingleselection . JList Multiple Selection JList Single Selection Gambar 4.1.
JRadioButton diganti dengan JList model s ingleselection . JList Multiple Selection JList Single Selection Gambar 4.1.

JList

Multiple Selection

JList

Single Selection

. JList Multiple Selection JList Single Selection Gambar 4.1. Form Input Mahasiswa (JLIST) JLIST Membuat

Gambar 4.1. Form Input Mahasiswa (JLIST)

JLIST

Membuat tampilan data list

Constructor

JList()

Membuat JList standar

JList(ListModel dataModel)

Membuat JList yang menampilkan elemen dengan non-null model.

JList(Object[] listData)

Membuat JList yang menampilkan elemen array.

JList(Vector listData)

Membuat JList yang menampilkan elemen dengan model Vector.

25

Beberapa Method yang harus diketahui int getSelectedIndex() Mendapatkan nilai Index jika tidak ada yang terpilih
Beberapa Method yang harus diketahui
int
getSelectedIndex()
Mendapatkan nilai Index jika tidak ada yang terpilih maka
Jlist akan memberikan nilai -1.
Object
getSelectedValue()
Mendapatkan nilai terpilih jika tidak ada yang terpilih maka
Jlist akan memberikan nilai null.
Object[]
getSelectedValues()
Mendapatkan nilai dalam bentuk Array dari sel terpilih.
boolean
isSelectedIndex(int index)
Mendapatkan nilai true apabila index terpilih dan akan
mengembalikan nilai false jika tidak terpilih.
boolean
isSelectionEmpty()
Mendapatkan nilai true apabila tidak ada sel yang terpilih.
void
setSelectedIndex(int index)
Mengaktifkan sebuah sel .
void
setSelectedValue(Object anObject,
boolean shouldScroll)
Mengaktifkan objek pada list.
void
setSelectionBackground(Color selectionBackground)
Memberikan warna background.
void
setSelectionForeground(Color selectionForeground)
Memberikan warna foreground.
void
setSelectionMode(int selectionMode)
Merubah model Jlist menjadi single selection
<object>.setSelectionMode(ListSelectionModel.SINGLE_SE
LECTION)
atau multiple selection.
<object>.setSelectionMode(ListSelectionModel.MULTIPLE_
INTERVAL_SELECTION)
Contoh Penggunaan :
http://java.sun.com/docs/books/tutorial/uiswing/components/list.html
dalam
rancangan
tampilan
pada
Gambar
4.1,
kita
menggunakan
layout
FlowLayout, Gridlayout dan BorderLayout.
Perlu
diingat
bahwa
layout
FlowLayout
dan
GridLayout
telah
diterangkan
sebelumnya, khususnya dalam contoh pada Gambar 3.1.
Sedangkan ilustrasi dari penggunaan layout BorderLayout dapat dilihat dalam
bentuk berikut :
NORTH
WEST
CENTER
EAST
26

SOUTH

Layout BorderLayout menggunakan arah mata angin sebagai patokan, misalkan :

- North, berarti objek berada pada posisi atas.

- West, berarti objek berada pada posisi kiri.

- Center, berarti objek berada pada tengah.

- East, berarti objek berada pada posisi kanan.

- South, berarti objek berada pada posisi bawah.

Untuk lebih jelasnya rancangan tampilan pada Gambar 3.1 adalah sebagai berikut :

panel4

panel1 (2,2) BorderLayout.NORTH

lblNim

txtNim

lblNama

txtNama

panel2 (2,2) BorderLayout.CENTER

lblSertifikat

lstSertifikat

lblJurusan

lstJurusan

panel3(2,2) BorderLayout.SOUTH

lblKampus

cmbKampus

cmdSave

cmdExit

Terdapat 1(satu) Container dengan model FlowLayout.CENTER dengan jumlah

panel sebanyak 4 (empat) panel :

- panel1, dengan model layout GridLayout(2,2) untuk penempatan lblNim, txtNim, lblNama dan txtNama

- panel2, dengan model layout GridLayout(2,2) untuk penempatan lblSertifikat, lstSertifikat, lblJurusan, dan lstJurusan

- panel3, dengan model layout GridLayout(2,2) untuk penempatan lblKampus, cmbKampus, btnSave, dan btnExit

- panel4,

dengan

model

BorderLayout.

Dimana

pada

posisi

NORTH

untuk

penempatan

panel1,

posisi

CENTER

untuk

penempatan

panel2,

dan

posisi

SOUTH untuk penempatan panel3

 
 

27

Contoh program java untuk Gambar 4.1 :

//program ke enam import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*;

class frame31 extends JFrame{ private Container konten = new Container();

private JPanel panel1 = new JPanel(); private JLabel lblNim = new JLabel(); private JTextField txtNim = new JTextField(10); private JLabel lblNama = new JLabel(); private JTextField txtNama = new JTextField(20);

private JPanel panel2 = new JPanel(); private JLabel lblSertifikat = new JLabel(); String sSertifikat[] = {"SD", "SMP", "SMA"}; private JList lstSertifikat;

private JLabel lblJurusan = new JLabel(); String sJurusan[] = {"TI", "MI", "AK", "TK"}; private JList lstJurusan;

private JPanel panel3 = new JPanel(); private JLabel lblKampus = new JLabel(); String sKampus[] = {"Cempaka Putih","Cileduk","Roxy","Salemba"}; private JComboBox cmbKampus = new JComboBox(sKampus);

private JButton cmdSave = new JButton("Tampilkan"); private JButton cmdEnd = new JButton("Selesai");

private JPanel panel4 = new JPanel();

frame31(){

super("Universitas Budi Luhur"); setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE

);

this.setLocation(10,100);

this.setSize(500,450);

konten=getContentPane(); konten.setLayout( new FlowLayout( FlowLayout.CENTER

)

);

lblNim.setText("NIM");

lblNama.setText("NAMA");

lblSertifikat.setText(

28

"Sertifikat (Multiple Selection)"

);

lblJurusan.setText( "Jurusan (Single Selection)"

);

lblKampus.setText("Kampus");

panel1.setLayout(new GridLayout(2,2));

panel1.add(lblNim);

panel1.add(txtNim);

panel1.add(lblNama);

panel1.add(txtNama);

panel2.setLayout(new GridLayout(2,2));

//Multi selection lstSertifikat = new JList(sSertifikat); lstSertifikat.setSelectionMode( ListSelectionModel.MULTIPLE_INTERVAL_SELECTION

);

panel2.add(lblSertifikat, BorderLayout.NORTH);

//untuk mengaktifkan scroll //menu gunakan JScrollPane panel2.add(new JScrollPane(lstSertifikat));

//Single Selection lstJurusan = new JList(sJurusan); lstJurusan.setSelectionMode( ListSelectionModel.SINGLE_SELECTION

);

panel2.add(lblJurusan);

//Jangan lupa biar kasih JScroll Pane //Biar tampil scrollnya panel2.add(new JScrollPane(lstJurusan));

panel3.setLayout(new GridLayout(2,2));

cmbKampus.setSelectedIndex(1);

cmbKampus.setMaximumRowCount(3);

panel3.add(lblKampus);

panel3.add(cmbKampus);

itemHandler itemHandler = new itemHandler();

panel3.add(cmdSave);

cmdSave.addActionListener(itemHandler);

panel3.add(cmdEnd);

cmdEnd.addActionListener(itemHandler);

panel4.setLayout(new BorderLayout()); panel4.add(panel1, BorderLayout.NORTH); panel4.add(panel2, BorderLayout.CENTER); panel4.add(panel3, BorderLayout.SOUTH);

29

konten.add(panel4, BorderLayout.EAST); show();

}

private class itemHandler implements ActionListener{ public void actionPerformed(ActionEvent e){ Object obj=e.getSource(); if(obj==cmdSave){ String sTampil; sTampil = "NIM : " + txtNim.getText(); sTampil+= "\nNama : " + txtNama.getText(); sTampil+= "\nSertifikat ";

if (lstSertifikat.isSelectedIndex(0)) sTampil+=", " + sSertifikat[0]; if (lstSertifikat.isSelectedIndex(1)) sTampil+=", " + sSertifikat[1]; if (lstSertifikat.isSelectedIndex(2)) sTampil+=", " + sSertifikat[2];

sTampil+= "\nJurusan, "; sTampil+= lstJurusan.getSelectedValue(); sTampil+="\nKampus,"; sTampil+=cmbKampus.getItemAt( cmbKampus.getSelectedIndex()

);

JOptionPane.showMessageDialog( null, sTampil , "HASIL", JOptionPane.INFORMATION_MESSAGE

);

}

else {System.exit (0);}

}

}

public static void main(String args[]){ new frame31();

}

}

30

Latihan 3

- Buatlah tampilan Handphone seperti pada Gambar 4.2 kemudian aktifkan tombol numerik (*,#,0-9) sehingga dapat tampil pada TextField dibawah ini

(*,#,0-9) sehingga dapat tampil pada TextField dibawah ini Gambar 4.2. HandPhone - Buatlah program konversi suhu

Gambar 4.2. HandPhone

- Buatlah program konversi suhu celcius, Kelvin dan Farenheit dengan tampilan seperti pada Gambar 4.3.

program konversi suhu celcius, Kelvin dan Farenheit dengan tampilan seperti pada Gambar 4.3. Gambar 4.3. Konversi

Gambar 4.3. Konversi Suhu

31

BAB V

MouseMotionListener, MouseListener, KeyListener, dan ActionListener.

Salah satu keunggulan GUI sehingga sering digunakan pada pemrograman, yaitu

karena dapat berinteraksi dengan media Mouse dan tentu saja Keyboard. Fasilitas listener juga ada pada objek java.awt.event.*. Pada pemrograman Java, untuk mengenali pergerakan mouse dikenal sebutan

mouse

disebut

keyboard

MouseMotionListener,

sedangkan

mengenali

penggunaan

tombol

pada

dengan

MouseListener,

sedangkan

penggunaan

tombol

pada

disebut dengan KeyListener.

MouseMotionListener

Mendeteksi pergerakan mouse

Method

void

mouseDragged(MouseEvent e)

Mouse dengan posisi ditekan kemudian digerakkan.

void

mouseMoved(MouseEvent e)

Mouse digerakkan tanpa ada tombol yang ditekan.

MouseListener

Mendeteksi tombol mouse yang digunakan

Method

void

mouseClicked(MouseEvent e)

Mouse di-click atau ditekan tombolnya kemudian langsung dilepaskan.

void

mouseEntered(MouseEvent e)

Ketika mouse memasuki komponen.

void

mouseExited(MouseEvent e)

Ketika mouse keluar dari komponen.

void

mousePressed(MouseEvent e)

Tombol mouse ditekan.

void

mouseReleased(MouseEvent e)

Tombol mouse dilepaskan

KeyListener

Mendeteksi tombol keyboard yang digunakan

Method

32

void

keyPressed(KeyEvent e)

Tombol keyboard ditekan.

void

keyReleased(KeyEvent e)

Tombol keyboard dilepas.

void

keyTyped(KeyEvent e)

Tombol keyboard melakukan pengetikan

ActionListener

Mendeteksi aksi yang diberikan dari komponen

Method

void

actionPerformed(ActionEvent e)

Mengetahui Action yang dilakukan.

Coba perhatikan program ketujuh dan kedelapan perbedaannya dan jalankan.

//program ketujuh import javax.swing.*; import java.awt.*; import java.awt.event.*;

class grap22 extends JFrame implements MouseMotionListener, MouseListener, KeyListener {

private Container konten = new Container(); private JLabel label1 = new JLabel(); private JLabel label2 = new JLabel(); private JTextField txtKey = new JTextField(20); private JLabel label3 = new JLabel();

grap22(){

super("Universitas Budi Luhur"); setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE

);

this.setLocation(10,100);

this.setSize(250,200);

konten=getContentPane(); konten.setLayout( new FlowLayout( FlowLayout.CENTER

);

)

label1.setForeground(Color.YELLOW);

label1.setText("Mouse Event");

33

label2.setFont(

new Font("Tahoma",Font.BOLD,20) );

label2.setForeground(Color.BLUE);

label2.setText("Mouse Move");

konten.add(label1);

konten.add(label2);

konten.add(txtKey);

konten.add(label3);

label2.setForeground(Color.RED);

//contoh event handling konten.addMouseMotionListener(this); konten.addMouseListener(this); txtKey.addKeyListener(this);

}

show();

//Mouse Motion Listener public void mouseDragged(MouseEvent e){

label2.setText(

"Dragged at [" + e.getX()+","+e.getY()+"]"

);

}

public void mouseMoved(MouseEvent e){

label2.setText(

"Moved at [" + e.getX()+","+e.getY()+"]"

}

);

//Mouse Listener public void mouseReleased(MouseEvent e){ label1.setText("Mouse Released");

}

public void mousePressed(MouseEvent e){ label1.setText("Mouse Pressed");

}

public void mouseExited(MouseEvent e){ label1.setText("Mouse Exited");

}

public void mouseEntered(MouseEvent e){ label1.setText("Mouse Entered");

}

public void mouseClicked(MouseEvent e){ label1.setText("Mouse Clicked");

}

//Key Listener public void keyTyped(KeyEvent e){

label3.setText(e.getKeyText(e.getKeyCode()));

}

34

public void keyPressed(KeyEvent e){

label3.setText(e.getKeyText(e.getKeyCode()));

}

public void keyReleased(KeyEvent e){

label3.setText(e.getKeyText(e.getKeyCode()));

}

public static void main(String args[]){ new grap22();

}

}

//program kedelapan import javax.swing.*; import java.awt.*; import java.awt.event.*;

class grap22 extends JFrame{ private Container konten = new Container(); private JLabel label1 = new JLabel(); private JLabel label2 = new JLabel(); private JTextField txtKey = new JTextField(20); private JLabel label3 = new JLabel();

grap22(){

super("Universitas Budi Luhur"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setLocation(10,100);

this.setSize(250,200);

konten=getContentPane(); konten.setLayout( new FlowLayout(FlowLayout.CENTER)

);

label1.setForeground(Color.YELLOW);

label1.setText("Mouse Event");

label2.setFont(new Font("Tahoma",Font.BOLD,20));

label2.setForeground(Color.BLUE);

label2.setText("Mouse Move");

konten.add(label1);

konten.add(label2);

konten.add(txtKey);

konten.add(label3);

//contoh event handling

label2.setForeground(Color.RED);

konten.addMouseMotionListener( new MouseMotionListener(){ public void mouseDragged(MouseEvent e){

label2.setText(

"Dragged at [" + e.getX()+","+e.getY()+"]"

);

35

} public void mouseMoved(MouseEvent e){

label2.setText(

"Moved at [" + e.getX()+","+e.getY()+"]"

}

}

);

);

konten.addMouseListener( new MouseListener(){ public void mouseReleased(MouseEvent e){ label1.setText("Mouse Released");

}

public void mousePressed(MouseEvent e){ label1.setText("Mouse Pressed");

}

public void mouseExited(MouseEvent e){

label1.setText("Mouse Exited");

}

public void mouseEntered(MouseEvent e){

label1.setText("Mouse Entered");

}

public void mouseClicked(MouseEvent e) {label1.setText("Mouse Clicked");

}

}

);

txtKey.addKeyListener( new KeyListener(){ public void keyTyped(KeyEvent e){

label3.setText(

e.getKeyText(e.getKeyCode())

);

} public void keyPressed(KeyEvent e){

label3.setText(

e.getKeyText(e.getKeyCode())

);

} public void keyReleased(KeyEvent e){

label3.setText(

e.getKeyText(e.getKeyCode())

}

);

}

);

show();

}

public static void main(String args[]){ new grap22();

}

}

36

Kedua program tersebut apabila dijalankan mempunyai hasil yang sama (Gambar 5.1) namun model penulisannya berbeda.

yang sama (Gambar 5.1) namun model penulisannya berbeda. Gambar 5.1. MouseMotionListener, MouseListener, dan

Gambar 5.1. MouseMotionListener, MouseListener, dan KeyListener

Pada

program

ke

tujuh

penggunaan

listener,

yaitu

MouseMotionListener,

MouseListener , dan KeyListener kita akan menggunakan perintah implements ,

kemudian pada saat penambahan listener cukup menambahkan kata this atau nama

objek class

seperti pada penggalan program ke enam yang menggunakan listener

ActionListener.

Sedangkan pada program ke delapan listener ditempatkan pada objek yang mempunyai method listener.

//penggalan program ke enam import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*;

class frame31 extends JFrame{

{

 

 

itemHandler itemHandler = new itemHandler();

panel3.add(cmdSave);

cmdSave.addActionListener(itemHandler);

panel3.add(cmdEnd);

cmdEnd.addActionListener(itemHandler);

 

}

private class itemHandler implements ActionListener{

public void actionPerformed(ActionEvent e){ //menangkap nama objek Object obj=e.getSource(); if(obj==cmdSave){

37

} else {System.exit (0);}

}

}

public static void main(String args[]){ new frame31();

}

}

38

Latihan 4

- Buatlah gambar buah pear dengan grafik 2 dibawah ini :

4 - Buatlah gambar buah pear dengan grafik 2 dibawah ini : Gambar 5.2 Buah Pear

Gambar 5.2 Buah Pear

/* *Diambil dan dimodifikasi dari www.sun.com *Menggambar buah pear dengan model *Constructive Area Geometry (CSG) methods, * add, intersect, and subtract. */

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

public class Pear extends JFrame {

Ellipse2D.Double circle, oval, leaf, stem; Area circ, ov, leaf1, leaf2, st1, st2; int w,h; double ew,eh;

public Pear() { setSize(new Dimension(400,300)); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

circle = new Ellipse2D.Double();

39

oval = new Ellipse2D.Double(); leaf = new Ellipse2D.Double(); stem = new Ellipse2D.Double(); circ = new Area(circle); ov = new Area(oval); leaf1 = new Area(leaf); leaf2 = new Area(leaf); st1 = new Area(stem); st2 = new Area(stem);

/*mendapatkan posisi awal JFrame*/ Dimension d = getSize();

w

= d.width;

h

= d.height;

/*Gambar Ditempatkan di Tengah*/ ew = w/2; eh = h/2; setBackground(Color.white);

}

public void paint (Graphics g) {

Graphics2D g2 = (Graphics2D) g;

/*Menggambar daun dengan model intersection *dari 2 object elipse */

g2.setColor(Color.green);

leaf.setFrame(ew-16, eh-29, 15.0, 15.0); leaf1 = new Area(leaf); leaf.setFrame(ew-14, eh-47, 30.0, 30.0); leaf2 = new Area(leaf);

leaf1.intersect(leaf2);

g2.fill(leaf1);

/*

*Menggambar Daun ke 2

*/

leaf.setFrame(ew+1, eh-29, 15.0, 15.0); leaf1 = new Area(leaf);

leaf2.intersect(leaf1);

g2.fill(leaf2);

g2.setColor(Color.black);

/*

*Menggambar dengan model substract *dari 2 objek elipse

*/

stem.setFrame(ew, eh-42, 40.0, 40.0); st1 = new Area(stem); stem.setFrame(ew+3, eh-47, 50.0, 50.0); st2 = new Area(stem);

st1.subtract(st2);

40

g2.fill(st1);

g2.setColor(Color.yellow);

/*penggambaran buah Pear *dengan sistem penggabaungan 2 objek *elipse yang berbeda

*/ circle.setFrame(ew-25, eh, 50.0, 50.0); oval.setFrame(ew-19, eh-20, 40.0, 70.0); circ = new Area(circle); ov = new Area(oval); circ.add(ov);

g2.fill(circ);

}

public static void main(String s[]) { Pear p = new Pear(); p.setVisible(true);

}

}

- Kemudian gambar ulang buah pear tersebut sesuai dengan koordinat X dan Y dari posisi mouse click

sesuai dengan koordinat X dan Y dari posisi mouse click Gambar 5.3 Buah Pear Dengan Penggambaran

Gambar 5.3 Buah Pear Dengan Penggambaran Ulang Sesuai Posisi X & Y Mouse

41

BAB VI

JSlider

Pada bab ini penulis membuat contoh program konversi suhu menggunakan komponen Jslider. Dengan rumus :

- Fahrenheit = (Celcius * 1.8) + 32

- Kelvin = Celcius + 273.15;

JSlider

JSlider digunakan untuk menandakan nilai dengan model slide. Nilai tersebut berupa nilai minimum, nilai maksimum dan nilai-nilai antara serta bertipe data integer.

Constructor

 

JSlider()

Membuat horizontal slider dengan nilai minimum 0 sampai dengan maximum

100

dan dengan nilai aktif 50.

JSlider(BoundedRangeModel brm)

 

Membuat horizontal slider menggunakan model BoundedRangeModel.

JSlider(int orientation)

Membuat slider dengan model oreintasi sesuai dengan parameter input (0=horizontal||1=vertical) dengan nilai minimum 0 sampai dengan nilai maximum

100

dan nilai aktif 50.

JSlider(int min, int max)

Membuat horizontal slider menggunakan nilai minimum dan maximum yang disesuaikan dengan parameter input.

JSlider(int min, int max, int value)

Membuat horizontal slider dengan menggunakan nilai minmum, maximum, dan nilai aktif sesuai dengan parameter input.

JSlider(int orientation, int min, int max, int value)

Membuat slider dengan model orientasi, minimum, maximum, dan nilai aktif sesuai dengan parameter input.

Beberapa Method yang harus diketahui

Int

getMaximum()

Mendapatkan nilai maximum.

Int

getMinimum()

Mendapatkan nilai minimum.

Int

getOrientation()

Mendapatkan model model oreintasi slider apakah

42

 

berbentuk vertical atau horizontal.

int

getValue()

Mendapatkan nilai aktif.

void

setMaximum(int maximum)

Merubah nilai maximum.

void

setMinimum(int minimum)

Merubah nilai minimum.

void

setOrientation(int orientation)

Merubah model oreintasi (1=VERTICAL atau

0=HORIZONTAL).

void

setValue(int n)

Merubah nilai aktif.

Contoh Penggunaan :

http://java.sun.com/docs/books/tutorial/uiswing/components/slider.html

Gambar 6.1. Jslider Gambar 4.1 merupakan bentuk program lain

Gambar 6.1. Jslider

Gambar 4.1 merupakan bentuk program lain dari program konversi suhu yang

terdapat pada latihan 2. Gambar 6.1 menggunakan Jslider sebagai aktif.

petunjuk nilai

43

panel2 gridLayout(2,1)

panel1(1,2) BorderLayout.NORTH

lblCelcius

lblCelciusCapt

sldCelcius, BorderLayout.SOUTH

panel3 gridLayout(2,2)

lblFahrenheit

lblCalvin

lblFahrenheitCapt

lblKelvinCapt

panel4

BorderLayout.West

BorderLayout.East

s

l

d

s

F

l

a

d

h

K

r

e

e

l

n

v

h

i

e

n

i

t

Terdapat 6 (enam) panel, yaitu :

- pane11, dengan model FlowLayout.CENTER, untuk penempatan lblCelcius dan lblCelciusCapt

- panel2, dengan model BorderLayout, dimana BorderLayout.NORTH untuk penempatan panel1 dan BorderLayout.SOUTH untuk penempatan sldCelcius

- panel3, dengan model GridLayout(2,2), untuk penempatan lblFahrenheit, lblKelvin, lblFahreinheitCapt, dan lblKelvinCapt

- panel4, dengan model layout BorderLayout, dimana BorderLayout.WEST untuk penempatan sldFahrenheit dan BorderLayout.EAST untuk penempatan sldKelvin

- panel5, dengan model layout BorderLayout, dimana BorderLayout.NORTH untuk penempatan panel3 dan BorderLayout.SOUTH untuk penempatan panel4

- panel6, dengan model layout BorderLayout, dimana BorderLayout.NORTH untuk penempatan panel2 dan BorderLayout.SOUTH untuk penempatan panel5

44

//program ke sembilan import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*;

class frame1 extends JFrame

{

//penggunaan slider //JSlider (

//

posisi<0-horisontal|1-vertical>,min,max,0

//

)

private Container konten = new Container(); private JPanel panel1 = new JPanel(); private JPanel panel2 = new JPanel(); private JLabel lblCelcius = new JLabel(); private JLabel lblCelciusCapt = new JLabel(); private JSlider sldCelcius = new JSlider();

private JPanel panel3 = new JPanel(); private JLabel lblFahrenheit = new JLabel(); private JLabel lblFahrenheitCapt = new JLabel(); private JLabel lblKelvin = new JLabel(); private JLabel lblKelvinCapt = new JLabel();

private JPanel panel4 = new JPanel(); private JSlider sldFahrenheit = new JSlider(1,0,200,0); private JSlider sldKelvin = new JSlider(1,0,200,0);

private JPanel panel5 = new JPanel(); private JPanel panel6 = new JPanel();

frame1()

{

super("Universitas Budi Luhur"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setSize(200,325);

setLocation(10,100);

konten = getContentPane();

lblCelcius.setText("Celcius"); lblCelciusCapt.setText("0 Derajat");

panel1.setLayout(

new FlowLayout( FlowLayout.CENTER

)

);

panel1.add(lblCelcius);

panel1.add(lblCelciusCapt);

panel2.setLayout(new BorderLayout()); panel2.add(panel1, BorderLayout.NORTH);

sldCelcius.setValue(0);

panel2.add(sldCelcius, BorderLayout.SOUTH);

45

lblFahrenheit.setText("Fahrenheit "); lblFahrenheitCapt.setText("0 Derajat"); lblKelvin.setText("Kelvin "); lblKelvinCapt.setText("273.15 Derajat");

panel3.setLayout(new GridLayout (2, 2));

panel3.add(lblFahrenheit);

panel3.add(lblKelvin);

panel3.add(lblFahrenheitCapt);

panel3.add(lblKelvinCapt);

panel4.setLayout(new BorderLayout()); panel4.add(sldFahrenheit, BorderLayout.WEST);

//JSlider Hanya Menerima Nilai Integer

sldKelvin.setMaximum(1000);

sldKelvin.setMinimum((int) 273.15); sldKelvin.setValue((int) 273.15); panel4.add(sldKelvin, BorderLayout.EAST);

panel5.setLayout(new BorderLayout()); panel5.add(panel3, BorderLayout.NORTH); panel5.add(panel4, BorderLayout.SOUTH);

panel6.setLayout(new BorderLayout()); panel6.add(panel2, BorderLayout.NORTH); panel6.add(panel5, BorderLayout.SOUTH);

sldCelcius.addChangeListener

(

//jika nilai slider Berubah new Ch angeListener()

{public void stateChanged(ChangeEvent e)

{

lblCelciusCapt.setText( sldCelcius.getValue() + " Derajat"

}

);

);

}

sldCelcius.addMouseListener

(

//jika mouse selesai melakukan perge rakan new java.awt.event.MouseAdapter()

{

public void mouseReleased(MouseEvent e)

{

double dFahrenheit,dKelvin; dFahrenheit = ( sldCelcius.getValue() * 1.8 ) + 32; dKelvin = sldCelcius.getValue() + 273.15; sldFahrenheit.setValue((int) dFahrenheit); lblFahrenheitCapt.setText(

46

dFahrenheit + " Derajat"

);

lblKelvinCapt.setText(dKelvin + " Derajat"); sldKelvin.setValue((int) dKelvin);

);

}

}

sldFahrenheit.addChangeListener

(

new ChangeListener()

{public void stateChanged(ChangeEvent e)

{

lblFahrenheitCapt.setText( sldFahrenheit.getValue() + " Derajat"

}

);

);

}

sldFahrenheit.addMouseListener

(new java.awt.event.MouseAdapter()

{

public void mouseReleased(MouseEvent e)

{

double dCelcius,dKelvin; dCelcius=(

sldFahrenheit.getValue()-32

)* 0.5555; dKelvin = dCelcius + 273.15; sldCelcius.setValue((int) dCelcius); lblCelciusCapt.setText( dCelcius + " Derajat"

);

sldKelvin.setValue((int) dKelvin); lblKelvinCapt.setText(dKelvin + " Derajat");

}

}

);

sldKelvin.addChangeListener

(

new ChangeListener()

{public void stateChanged(ChangeEvent e)

{

lblKelvinCapt.setText( sldKelvin.getValue() + " Derajat"

}

);

);

}

sldKelvin.addMouseListener

(new java.awt.event.MouseAdapter()

{

47

public void mouseReleased(MouseEvent e)

{

 

double dCelcius,dFahrenheit; dCelcius = sldKelvin.getValue()-273.15; dFahrenheit = (dCelcius * 1.8) + 32; sldCelcius.setValue((int) dCelcius); lblCelciusCapt.setText( dCelcius + " Derajat"

);

 

sldFahrenheit.setValue((int) dFahrenheit); lblFahrenheitCapt.setText( dFahrenheit + " Derajat"

);

}

}

);

konten.add(panel6);

}

show();

}

public class praktek51

{

public static void main(String args[])

{

new frame1();

}

}

48

Latihan 5

- Buatlah Konversi dari Centimeter, Inch dan Feet

Latihan 5 - Buatlah Konversi dari Centimeter, Inch dan Feet Gambar 6.2 . JSlider Cm, Inch,

Gambar 6.2 . JSlider Cm, Inch, Dan Feet

49

BAB VII

JMenuBar, JMenu, JPopupMenu, JMenuItem, JTextArea, dan Box

Kali ini contoh program menggunakan JMenuBar, JPopupMenu, JMenuItem, JTextArea dan layout Box komponen untuk membuat program editor teks berita.

JMenuBar

Untuk

JMenuBar

mengimplementasikan

menu

pada

form

dapat

menggunakan

komponen

Constructor

JMenuBar()

Membuat Bar Menu.

Beberapa Method yang harus diketahui

JMenu

add(JMenu c)

Menambah objek JMenu ke JMenuBar

JMenu

getMenu(int index)

Mendapat posisi menu yang disesuaikan dengan parameter

index.

int

getMenuCount()

Mendapatkan jumlah menu.

boolean

isSelected()

Melakukan pengecekan apakah menu yang dimaksud dalam posisi terpilih.

void

setSelected(Component sel)

Mengaktifkan menu yang diinginkan.

Contoh Penggunaan :

http://java.sun.com/docs/books/tutorial/uiswing/components/menu.html

JMenu

Untuk menambahkan item pada JMenuBar kita harus menggunakan JMenu, dimana JMenu juga dapat ditambahkan JmenuItem dan juga Jseparators.

Constructor

JMenu()

Membuat JMenu tanpa teks.

JMenu(Action a)

Membuat menu dengan penambahan Action.

50

JMenu(String s)

Membuat JMenu dengan teks.

JMenu(String s, boolean b)

Membuat JMenu dengan teks dan penandaan tear-off menu atau tidak.

Beberapa Method yang harus diketahui

JMenuItem

add(Action a)

Membuat menu item dengan penambahan Action objek dan menambahkannya pada akhir menu.

Component

add(Component c)

Menambahkan komponen pada akhir menu.

Component

add(Component c, int index)

Menambah komponen pada posisi (index) tertentu.

JMenuItem

add(JMenuItem menuItem)

Menambah JMenuItem pada akhir menu.

JMenuItem

add(String s)

Menambah JMenuItem dengan teks dan menambahnya pada akhir menu.

void

addMenuListener(MenuListener l)

Menambahkan listener pada menu.

void

addSeparator()

Menambahkan garis separator pada akhir menu.

Int

getDelay()

Mendapatkan nilai delay menu

JMenuItem

getItem(int pos)

Mendapat JMenuItem pada posisi tertentu.

int

getItemCount()

Mendapatkan jumlah JMenuItem pada menu termasuk dengan garis separator.

JMenuItem

insert(Action a, int pos)

Menyisipkan Action pada posisi tertentu.

JMenuItem

insert(JMenuItem mi, int pos)

Menyisipkan JMenuitem pada posisi tertentu.

Void

insert(String s, int pos)

Menyisipkan menu tertentu dengan teks pada posisi tertentu.

Void

insertSeparator(int index)

Menyisipkan garis separator pada posisi tertentu.

boolean

isPopupMenuVisible()

Mendapatkan nilai true atau false mengenai

51

 

kemungkinan popup.

boolean

isSelected()

Mendapatkan nilai true apabila menu tersebut dalam posisi terpilih (highlighted).

void

remove(Component c)

Menghapus komponen c dari menu.

Void

remove(int pos)

Menghapus JMenuItem pada posisi tertentu pada

menu.

void

remove(JMenuItem item)

Menghapus JMenuItem dari menu.

void

removeAll()

Mengapus semua menu item dari menu.

Void

setDelay(int d)

Memberikan waktu delay Sets the suggested delay before the menu's PopupMenu is popped up or down.

void

setMenuLocation(int x, int y)

Menempatkan lokasi X dan Y dari pop menu.

void

setPopupMenuVisible(boolean b)

Memberikan status true (tampil) atau false (tidak) pada menu popup.

JPopupMenu

Mengimplementasikan menu dengan model popup, sebuah tampilan kecil yang tampil dengan beberapa pilihan. JPopupMenu digunakan pada menu yang tampil pada saat pengguna memilih komponen pada bar menu. Dan juga digunakan pada saat mouse ditekan ”klik kanan”. Popup menu dapat tampil diposisi manapun yang diinginkan.

Constructor

JPopupMenu() Membuat JPopupMenu.

JPopupMenu(String label)

Membuat JPopupMenu dengan title.

Beberapa Method yang harus diketahui

JMenuItem

add(Action a)

Menambahkan Action object.

JMenuItem

add(JMenuItem menuItem)

Menambahkan JMenuItem dan ditempatkan pada

52

 

posisi terakhir menu.

JMenuItem

add(String s)

Menambahkan menu teks dan ditempatkan pada posisi akhir menu.

void

addSeparator()

Menambahakan garis separator pada akhir menu.

String

getLabel()

Mendapatkan label popup menu

void

insert(Action a, int index)

Menyisipkan Action pada posisi tertentu.

void

insert(Component component, int index)

Inserts the specified component into the menu at a given position.

boolean

isVisible()

Mendaptkan nilai true jika pada posisi tampil.

void

remove(int pos)

Menghapus komponen pada posisi tertentu.

void

setLabel(String label)

Memberikan label pada popup menu.

void

setLocation(int x, int y)

Menempatkan lokasi popup menu di koordinat X

dan Y

void

setPopupSize(Dimension d)

Memberikan ukuran berdasarkan dimensi.

void

setPopupSize(int width, int height)

Memberikan ukuran berdasarkan lebar dan tinggi.

void

setSelected(Component sel)

Menempatkan sel aktif pada komponen tertentu.

void

setVisible(boolean b)

Menampilkan popup menu jika parameter input adalah true.

void

show(Component invoker, int x, int y)

Menampilkan popup menu berdasarkan koordinat X dan Y.

JMenuItem

Memberikan komponen pada Jmenu dan JPopupMenu

Constructor

JMenuItem()

Membuat JMenuItem tanpa teks dan gambar ikon.

53

JMenuItem(Action a) Membuat JMenuItem dengan Action.

JMenuItem(Icon icon)

Membuat JMenuItem dengan gambar ikon.

JMenuItem(String text)

Membuat JMenuItem dengan teks.

JMenuItem(String text, Icon icon)

Membuat JMenuItem dengan teks dan gambar ikon.

JMenuItem(String text, int mnemonic)

Membuat JMenuItem dengan teks dan shortcut keyboard mnemonic.

Beberapa Method yang harus diketahui

void

setEnabled(boolean b)

Enables or disables the menu item.

Contoh Penggunaan :

http://java.sun.com/docs/books/tutorial/uiswing/components/menu.html

JTextArea

JTextArea berfungsi sebagai teks editor dalam bentuk multiline, sedangkan dalam penggunaannya, untuk mengaktifkan scroll pada JTextArea menggunakan bantuan JScrollPane.

Constructor

JTextArea()

Membuat TextArea.

JTextArea(Document doc)

Membuat JTextArea dengan model dokumen.

JTextArea(Document doc, String text, int rows, int columns)

Membuat JTextArea dengan model dokumen, teks, baris dan kolom sesuai dengan parameter yang diberikan.

JTextArea(int rows, int columns)

Membuat JTextArea dengan baris dan kolom yang sesuai dengan parameter input.

JTextArea(String text)

Membuat JTextArea dengan teks didalamnya.

JTextArea(String text, int rows, int columns)

Membuat JTextArea dengan teks didalamnya beserta baris dan kolom.

54

Menu Bar JMenuBar() JMenu(“File”) JMenuItem(“Buka File”) JMenuItem(“Simpan File”) JMenuItem(“Keluar”)

Menu Bar

JMenuBar() JMenu(“File”) JMenuItem(“Buka File”) JMenuItem(“Simpan File”) JMenuItem(“Keluar”) JMenu(“Edit”) JMenuItem(“Copy”) JMenuItem(“Cut”) JMenuItem(“Paste”) Jmenu(“Tentang”)

JMenuItem("Copy");

JMenuItem("Cut");

JMenuItem("Paste");

JPopupMenu

JPopupMenu();

JTextArea

private JTextArea txtArea; txtArea = new JTextArea(20,15); txtArea.setLineWrap(true);

Gambar 7.1. Program Editor Berita

Gambar 7.1, merupakan program yang menerapkan sistem menu, popmenu, textarea dan box layout.

Menu yang akan tampil pada program tersebut adalah sebagai berikut :

- File (JMenumniFile)

o

Buka File (JMenuItemmniFileBuka)

o

Simpan File (JMenuItem mniFileSimpan)

o

Keluar (JMenuItem mniKeluar)

- Edit (JMenumniEdit)

o

Copy (JMenuItem mniCopy)

o

Cut (JMenuItem mniCut)

o

Paste (JMenuItem mniPaste)

- Tentang (JMenu mniTentang)

Menu popup akan tampil apabila JtextArea di – click kanan dengan tampilan :

- Copy (JMenuItem mniCopy)

- Cut (JMenuItem mniCut)

- Paste (JMenuItem mniPaste) Rancangan tampilan menggunakan 2 (dua) panel dan box dengan model VerticalBox. Yang dimaksud dengan Vertical Box adalah setiap komponen objek yang ditambahkan pada box berada pada posisi bawah (vertikal).

Komponen 1

Komponen 1 Komponen 2 Komponen 3

Komponen 2

Komponen 1 Komponen 2 Komponen 3

Komponen 3

Gambar 7.2. VerticalBox

55

Untuk lebih jelasnya adalah sebagai berikut :

Box1

panel1 gridLayout(2,2)

lblKategori

cmbKategori

lblDaerah

cmbDaerah

panel2 gridLayout (3,1)

lblJudul

txtJudul

lblIsi

jscrollPane1

txtArea

txtArea

- panel1, dengan model layout GridLayout(2,2), untuk penempatan lblKategori, cmbKategori, lblDaerah dan cmbDaerah

- panel2, dengan model layout GridLayout(3,1), untuk penempatan lblJudul, txtJudul, dan lblIsi.

- Box, dengan komponen pertama

adalah panel1 dan komponen kedua adalah

panel2

//program ke sepuluh import javax.swing.*; import java.awt.*; import java.awt.event.*;

class frame52 extends JFrame

{

private Container konten = new Container();

private JMenuBar bar = new JMenuBar(); private JMenu mnFile = new JMenu("File"); private JMenuItem mniFileBuka = new JMenuItem( "Buka File" ); private JMenuItem mniFileSimpan = new JMenuItem( "Simpan File"

56

); private JMenuItem mniFileKeluar = new JMenuItem( "Keluar" );

private JMenu mnEdit = new JMenu("Edit"); private JMenuItem mniCopy = new JMenuItem("Copy"); private JMenuItem mniCut = new JMenuItem("Cut"); private JMenuItem mniPaste = new JMenuItem("Paste"); private JMenu mnTentang = new JMenu("Tentang");

private JLabel lblKategori = new JLabel("Kategori"); String pilKategori[]={ "Nasional","Daerah","Internasional" }; private JComboBox cmbKategori = new JComboBox( pilKategori

);

private JLabel lblDaerah = new JLabel("Daerah"); String pilDaerah[]={

"Indonesia Bagian Barat", "Indonesia Bagian Timur"

}; private JComboBox cmbDaerah = new JComboBox(pilDaerah);

private JLabel lblJudul = new JLabel("Judul"); private JTextField txtJudul = new JTextField();

private JLabel lblIsi = new JLabel("Isi"); private JTextArea txtArea; private JScrollPane jScrollPane1 = new JScrollPane();

private JPanel panel1 = new JPanel(); private JPanel panel2 = new JPanel(); private Box box1 = Box.createVerticalBox();

private JPopupMenu popmenu = new JPopupMenu();

frame52()

{

super("Universitas Budi Luhur");

setSize(500,500);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

ItemHandler itemHandler = new ItemHandler(); mniFileBuka.addActionListener(itemHandler); mniFileSimpan.addActionListener(itemHandler); mniFileKeluar.addActionListener(itemHandler); mniCopy.addActionListener(itemHandler); mniCut.addActionListener(itemHandler); mniPaste.addActionListener(itemHandler);

mnFile.add(mniFileBuka);

mnFile.add(mniFileSimpan);

mnFile.add(mniFileKeluar);

57

mnEdit.add(mniCopy);

mnEdit.add(mniCut);

mnEdit.add(mniPaste);

bar.add(mnFile);

bar.add(mnEdit);

bar.add(mnTentang);

//jangan lupa gunakan setJMenuBar setJMenuBar(bar);

popmenu.add(mniCopy);

popmenu.add(mniCut);

popmenu.add(mniPaste);

panel1.setLayout(new GridLayout(2,2));

panel1.add(lblKategori);

panel1.add(cmbKategori);

panel1.add(lblDaerah);

panel1.add(cmbDaerah);

box1.add(panel1);

panel2.setLayout(new GridLayout(3,1));

panel2.add(lblJudul);

panel2.add(txtJudul);

panel2.add(lblIsi);

box1.add(panel2);

txtArea = new JTextArea(20,15); txtArea.setLineWrap(true);

txtArea.addMouseListener ( new MouseListener()

{ public void mousePressed(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseClicked(MouseEvent e) { } public void mouseReleased(MouseEvent e)

{

//jika Click kanan maka tampilkan popup if (e.getButton() == 3) popmenu.show(

}

}

e.getComponent(), e.getX(), e.getY() );

);

jScrollPane1.getViewport().add(txtArea,null);

box1.add(jScrollPane1);

konten = getContentPane();

58

konten.setLayout(new BorderLayout()); konten.add(box1, BorderLayout.NORTH);

setVisible(true); //sama dengan show()

}

private class ItemHandler implements ActionListener {public void actionPerformed(ActionEvent e)

{

Object objek = e.getSource(); if (objek == mniFileBuka) JOptionPane.showMessageDialog (frame52.this,"Buka File","Buka", JOptionPane.PLAIN_MESSAGE);

else if (objek == mniFileSimpan) JOptionPane.showMessageDialog (frame52.this,"Simpan","Simpan File", JOptionPane.PLAIN_MESSAGE); else if (objek == mniCopy) JOptionPane.showMessageDialog (frame52.this,"Copy "

+ txtArea.getSelectedText()

+ " Di Text Area "

, "Copy",JOptionPane.PLAIN_MESSAGE); else if (objek == mniCut) JOptionPane.showMessageDialog (frame52.this,"Cut Teks di Teks Area", "Cut",JOptionPane.PLAIN_MESSAGE); else if (objek == mniPaste) JOptionPane.showMessageDialog

(frame52.this,

"Paste Teks di Text Area","Paste", JOptionPane.PLAIN_MESSAGE); else if (objek == mniFileKeluar)

}

}

}

System.exit(0);

public class praktek52{ public static void main(String args[]){ new frame52();

}

}

59

Latihan 6

- Tampilkan gambar ikon dimasing-masing menu

Latihan 6 - Tampilkan gambar ikon dimasing-masing menu Gambar 7.3 Menu File Dengan Icon Gambar 7.4

Gambar 7.3 Menu File Dengan Icon

ikon dimasing-masing menu Gambar 7.3 Menu File Dengan Icon Gambar 7.4 Menu Edit Dengan Icon Gambar

Gambar 7.4 Menu Edit Dengan Icon

7.3 Menu File Dengan Icon Gambar 7.4 Menu Edit Dengan Icon Gambar 7.5 Menu Popo Up

Gambar 7.5 Menu Popo Up Dengan Icon

- Buatlah Shorcut di tiap menu File F, Buka File B, Simpan File S, Keluar K, Edit E, Copy C, Cut U, Paste P

60

BAB VIII

JInternalFrame

Pada pemrograman Java GUI, kita mengenal frame dan internal frame. Frame yang telah dibahas pada bab sebelumnya merupakan model single frame. Tetapi dapat pula kita berikan frame didalamnya, yaitu internal frame. Contoh pada Gambar 8.1 merupakan gabungan dari penggunaan JSlider dan JinternalFrame sebai konversi warna dari nilai-nilai yang sedang aktif pada slider.

JInternalFrame

Berfungsi sebagai frame yang berada pada internal

Constructor

JInternalFrame()

Membuat JInternalFrame yang ukurannya tidak dapat berubah, tidak dapat ditutup, tidak dapat menjadi ukuran maksimum dan tanpa title.

JInternalFrame(String title)

Membuat JInternalFrame yang ukurannya tidak dapat berubah, tidak dapat ditutup, dan tidak dapat menjadi ukuran maksimum. Tetapi mempunyai titel

JInternalFrame(String title, boolean resizable)

Membuat JInternalFrame yang tidak dapat ditutup, dan tidak dapat menjadi ukuran maksimum. Tetapi mempunyai titel dan dapat dirubah ukurannya.

JInternalFrame(String title, boolean resizable, boolean closable)

Membuat JInternalFrame yang tidak dapat menjadi ukuran maksimum dan tanpa gamba ikon. Tetapi mempunyai title, dapat dirubah ukurannya dan dapat ditutup.

JInternalFrame(String title, boolean resizable, boolean closable, boolean maximizable)

Membuat JInternalFrame dengan title,dapat ditutup, dapat dirubah ukurannya dan dapat dirubah menjadi ukuran maximal. Tetapi tidak mempunyai gambar ikon.

JInternalFrame(String title, boolean resizable, boolean closable, boolean maximizable, boolean iconifiable)

Membuat JInternalFrame dengan title,dapat ditutup,