bahasa pemrograman 3 rev ke dua

269
BAHASA PEMROGRAMAN JAVA GUI, ERROR EXCEPTION, THREAD, I/O (INPUT/OUTPUT), DATABASE & PEMBUATAN LAPORAN 1

Upload: windu-gata

Post on 28-Nov-2015

79 views

Category:

Documents


5 download

TRANSCRIPT

BAHASA PEMROGRAMAN JAVA GUI, ERROR EXCEPTION, THREAD, I/O (INPUT/OUTPUT), DATABASE & PEMBUATAN LAPORANWINDU GATA, SKOM

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 bahasa pemrograman bebas atau tanpa biaya, sehingga memudahkan para pengembang untuk mengembangkan aplikasi, maupun dari sisi pengguna aplikasi, dapat mengefesienkan biaya yang harus dikeluarkan.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 [email protected] atau [email protected].

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

DAFTAR ISI

PENDAHULUANTeknologi 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.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 IIIContoh program input mahasiswa menggunakan objek JLabel, JTextField, JCheckBox, JRadioButton, JComboBox, JButton, Action Listener dan Layout (FlowLayout dan Border Layout).BAB IVMerubah 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 LayoutBAB VBab 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 JSliderBAB VIIMembuat program editor berita menggunakan objek JMenuBar, JMenu, JPopupMenu, JMenuItem, JTextArea, dan BoxBAB VIII

Mengenal penggunaan JInternalFrame

BAB IX

Mengenal penggunaan tampilan group berupa tab dengan objek JTabbedPane

BAB XMengenal model desain tampilan pada standar Java BAB XI

Bagaimana cara mengatasi kesalahan program atau yang kita kenal dengan Error Excption.BAB XII

Mengenal Penggunaan ThreadBAB XIIIMengenal cara mengakses file dan mengembangkan program pada bab VII menggunakan fasilitas akses file.BAB XIV

Cara menggunakan database mysql dan interface koneksi database JDBCBAB XV

Membuat laporan dengan menggunakan jFreeReport BAB XVI Jawaban Soal Latihan

BAB XVI

Penutup

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();

}

}

Atau

//program kedua menggunakan konstruktor

import javax.swing.*;

class frame21 extends JFrame{

frame21(){ //construktor show();

}

}

class frame22{

public static void main(String args[]){

new frame21();

}

}

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

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 :

Gambar 1.2. JFrame Dan Property

//program ketiga

import javax.swing.*;

class frame61 extends JFrame{

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();

}

}

BAB II

GRAFIK DUA DIMENSI (2D) PADA JFRAMEGrafik 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 :

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);//set warna

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

}

}

//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=getContentPane();

konten.add(duaD);

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.

Adapun struktur dasar dari canvas bersifat abstrak dengan bentuk dasar pemrogramannya adalah sebagai berikut :

[public|private] class extends Canvas{

public void paint(Graphics ){

..

}}

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)

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("",

, ))

String

drawstring(,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()

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

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

Gambar 2.2. Grafik 2D Bendera Merah Putih

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 )

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(Iconimage) Membuat JLabel dengan gambar.

JLabel(Iconimage, inthorizontalAlignment) Membuat JLabel dengan Gambar dan model horizontal alignment (LEFT, CENTER, RIGHT, LEADING atau TRAILING)

JLabel(Stringtext) Membuat JLabel dengan isi teks di dalamnya.

JLabel(Stringtext, Iconicon, inthorizontalAlignment) Membuat JLabel dengan isi text di dalamnya, gambar dan horizontal alignment (LEFT, CENTER, RIGHT, LEADING atau TRAILING).

JLabel(Stringtext, inthorizontalAlignment) Membuat JLabel dengan isi text di dalamnya dan horizontal alignment (LEFT, CENTER, RIGHT, LEADING atau TRAILING).

Beberapa Method yang harus diketahui

StringgetText() Mendapatkan nilai string pada JLabel

voidsetText(Stringtext) Memberikan nilai string pada JLabel

Contoh Penggunaan :

http://java.sun.com/docs/books/tutorial/uiswing/components/label.htmlJTextFieldBerfungsi sebagai media edit single teks Constructor

JTextField() Membuat JTextField.

JTextField(Documentdoc, Stringtext, intcolumns) Membuat JTextField yang menggunakan model text, isi dari JTextField dan kolom.

JTextField(intcolumns) Membuat JTextField dengan model kolom.

JTextField(Stringtext) Membuat JTextField dengan isi teks di dalamnya.

JTextField(Stringtext, intcolumns) Membuat JTextField dengan isi teks di dalamnya dan kolom.

Beberapa Method yang harus diketahui

voidaddActionListener(ActionListenerl) Memberikan action listener pada JTextField

StringgetText() Mendapatkan nilai string dari JTextField.

voidsetFont(Fontf) Merubah Font pada JTextField

voidsetText(String Text) Memberikan nilai string pada JTextField

Contoh Penggunaan :

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

Digunakan untuk pilihan yang dapat lebih dari satu pilihan

Constructor

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

JCheckBox(Actiona) Creates a check box where properties are taken from the Action supplied.

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

JCheckBox(Iconicon, booleanselected) Membuat JCheckBox dengan tampilan gambar ikon dan posisi tercentang/terpilih tergantung dengan parameter Boolean yang diberikan.

JCheckBox(Stringtext) Membuat JCheckBox dengan posisi tidak tercentang/terpilih dengan teks.

JCheckBox(Stringtext, booleanselected) Membuat JCheckBox dengan isian berupa teks dan posisi tercentang/terpilih disesuaikan dengan parameter Boolean yang diberikan.

JCheckBox(Stringtext, Iconicon) Membuat JCheckBox dengan posisi tidak tercentang dengan teks dan tampilan gambar ikon.

JCheckBox(Stringtext, Iconicon, booleanselected) Membuat JCheckBox dengan teks dengan tampilan gambar ikon dan posisi tercentang/terpilih disesuaikan dengan parameter Boolean yang diberikan.

Beberapa Method yang harus diketahui

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

voidsetSelected() Memberikan nilai true atau false pada objek JCheckBox.

Contoh Penggunaan :

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

Digunakan untuk memilih satu dari beberapa pilihan.

Constructor

JRadioButton() Membuat JRadioButton dengan posisi tidak tercentang/terpilih dan tanpa isian teks.

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

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

JRadioButton(Stringtext) Membuat JRadioButton dengan posisi tidak tercentang/terpilih dengan teks.

JRadioButton(Stringtext, booleanselected) Membuat JRadioButton dengan teks dan posisi tercentang/terpilih sesuai dengan parameter boolean yang diberikan.

JRadioButton(Stringtext, Iconicon) Membuat JRadioButton dengan teks dan gambar ikon dengan posisi tidak tercentang/terpilih.

JRadioButton(Stringtext, Iconicon, booleanselected) Membuat JRadioButton dengan teks, gambar ikon dan posisi tercentang/terpilih disesuaikan dengan parameter Boolean yang diberikan.

Beberapa Method yang harus diketahui

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

voidsetSelected() Memberikan nilai true atau false pada objek JRadioButton.

Contoh Penggunaan :

http://java.sun.com/docs/books/tutorial/uiswing/components/button.htmlSaat penggunaan JRadioButton harus menggunakan ButtonGroup untuk menggabungkan JRadioButton.

ButtonGrop

Berfungsi sebagai penggabungan komponen pada Java

Constructor

ButtonGroup() Membuat ButtonGroup

Beberapa Method yang harus diketaui

voidadd(AbstractButtonb) Menambah button pada group.

voidremove(AbstractButtonb) 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(ComboBoxModelaModel) Membuat JComboBox dengan ComboBoxModel yang diinginkan (DefaultComboBoxModel, MetalFileChooserUI.DirectoryComboBoxModel, MetalFileChooserUI.FilterComboBoxModel).

JComboBox(Object[]items) Membuat JComboBox dengan isian berupa array.

JComboBox(Vectoritems) Membuat JComboBox dengan element Vector.

Beberapa Method yang harus diketahui

VoidaddItem(ObjectanObject) Menambah Item pada JComboBox.

IntgetItemCount() Mendapat nilai jumlah item pada JComboBox.

ObjectgetItemAt(intindex) Mendapatkan nilai dari item dengan Index yang ditentukan.

intgetMaximumRowCount() Mendapatkan jumlah nilai maksimum list pada JComboBox

intgetSelectedIndex() Mendapatkan nilai item ke berapa (index) pada JComboBox.

ObjectgetSelectedItem() Mendapatkan isi dari JComboBox.

booleanisEditable() Mendapatkan nilai true atau false dari status editable JComboBox.

voidremoveAllItems() Menghapus semua item pada JComboBox.

voidremoveItem(ObjectanObject) Menghapus salah satu item pada JComboBox.

voidsetEditable(booleanaFlag) Merubah status editable pada JComboBox.

voidsetEnabled(booleanb) Mengaktifkan atau menon aktifkan JComboBox .

voidsetMaximumRowCount(intcount) Menampilkan maximum item yang dapat ditampilkan JComboBox.

voidsetSelectedIndex(intanIndex) merubah pointer Index.

voidsetSelectedItem(ObjectanObject) Merubah posisi item berdasarkan object.

Contoh Penggunaan :

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

Mengimplementasikan penggunaan push button

Constructor

JButton() Membuat tombol tanpa teks dan gambar ikon.

JButton(Iconicon) Membuat tombol dengan gambar ikon.

JButton(Stringtext) Membuat tombol dengan tampilan teks.

JButton(Stringtext, Iconicon) 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

voidactionPerformed(ActionEvente) 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

LEFTCENTERRIGHT

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 :

containerpanel1 gridlayout (6,2)

lblNim

txtNim

lblNama

txtNama

lblSertifikat

panel2 gridlayout (3,1)

chSD

chSMP

chSMA

lblJurusan

panel3 gridlayout (4,1)

rdTI

rdMI

rdAK

rdTK

lblKampus

cmbKampus

cmdSave

cmdExit

Terdapat satu Container dengan layout FlowLayout.CENTER, yang 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

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");

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 data dalam combo hanya 3 baris

cmbKampus.setMaximumRowCount(3);

panel1.add(lblKampus);

panel1.add(cmbKampus);

itemHandler itemHandler = new itemHandler();

panel1.add(cmdSave);

cmdSave.addActionListener(itemHandler);

panel1.add(cmdEnd);

cmdEnd.addActionListener(itemHandler);

konten.add(panel1);

show();

}

private class itemHandler implements ActionListener{ public void actionPerformed(ActionEvent e){ //mendapatkan 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();

}

}

Latihan 2Pada 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

Gambar 3.2 Latihan Menambah Icon

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.

Gambar 4.1. Form Input Mahasiswa (JLIST)

JLIST

Membuat tampilan data listConstructor

JList() Membuat JList standar

JList(ListModeldataModel) Membuat JList yang menampilkan elemen dengan non-null model.

JList(Object[]listData) Membuat JList yang menampilkan elemen array.

JList(VectorlistData) Membuat JList yang menampilkan elemen dengan model Vector.

Beberapa Method yang harus diketahui

intgetSelectedIndex() Mendapatkan nilai Index jika tidak ada yang terpilih maka Jlist akan memberikan nilai -1.

ObjectgetSelectedValue() Mendapatkan nilai terpilih jika tidak ada yang terpilih maka Jlist akan memberikan nilai null.

Object[]getSelectedValues() Mendapatkan nilai dalam bentuk Array dari sel terpilih.

booleanisSelectedIndex(intindex) Mendapatkan nilai true apabila index terpilih dan akan mengembalikan nilai false jika tidak terpilih.

booleanisSelectionEmpty() Mendapatkan nilai true apabila tidak ada sel yang terpilih.

voidsetSelectedIndex(intindex) Mengaktifkan sebuah sel .

voidsetSelectedValue(ObjectanObject, booleanshouldScroll) Mengaktifkan objek pada list.

voidsetSelectionBackground(ColorselectionBackground) Memberikan warna background.

voidsetSelectionForeground(ColorselectionForeground) Memberikan warna foreground.

voidsetSelectionMode(intselectionMode) Merubah model Jlist menjadi single selection

.setSelectionMode(ListSelectionModel.SINGLE_SELECTION)

atau multiple selection.

.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)

Contoh Penggunaan :

http://java.sun.com/docs/books/tutorial/uiswing/components/list.htmldalam 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

WESTCENTEREAST

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

txtNim

lblNama

txtNama

panel2 (2,2) BorderLayout.CENTERlblSertifikat

lstSertifikat

lblJurusan

lstJurusan

panel3(2,2) BorderLayout.SOUTHlblKampus

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

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( "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);

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();

}

}

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

Gambar 4.2. HandPhone

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

Gambar 4.3. Konversi SuhuBAB 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 MouseMotionListener, sedangkan mengenali penggunaan tombol pada mouse disebut dengan MouseListener, sedangkan penggunaan tombol pada keyboard disebut dengan KeyListener.MouseMotionListenerMendeteksi pergerakan mouseMethod

voidmouseDragged(MouseEvente) Mouse dengan posisi ditekan kemudian digerakkan.

voidmouseMoved(MouseEvente) Mouse digerakkan tanpa ada tombol yang ditekan.

MouseListenerMendeteksi tombol mouse yang digunakan

Method

voidmouseClicked(MouseEvente) Mouse di-click atau ditekan tombolnya kemudian langsung dilepaskan.

voidmouseEntered(MouseEvente) Ketika mouse memasuki komponen.

voidmouseExited(MouseEvente) Ketika mouse keluar dari komponen.

voidmousePressed(MouseEvente) Tombol mouse ditekan.

voidmouseReleased(MouseEvente) Tombol mouse dilepaskan

KeyListenerMendeteksi tombol keyboard yang digunakanMethod

voidkeyPressed(KeyEvente) Tombol keyboard ditekan.

voidkeyReleased(KeyEvente) Tombol keyboard dilepas.

voidkeyTyped(KeyEvente) Tombol keyboard melakukan pengetikan

ActionListenerMendeteksi aksi yang diberikan dari komponen..

Method

voidactionPerformed(ActionEvente) 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");

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())); }

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()+"]" ); }

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();

}

}

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

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

}

else {System.exit (0);}

}

}

public static void main(String args[]){

new frame31();

}

}

Latihan 4 Buatlah gambar buah pear dengan grafik 2 dibawah ini :

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();

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

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

Gambar 5.3 Buah Pear Dengan Penggambaran Ulang

Sesuai Posisi X & Y MouseBAB VIJSlider

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(BoundedRangeModelbrm) Membuat horizontal slider menggunakan model BoundedRangeModel.

JSlider(intorientation) 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(intmin, intmax) Membuat horizontal slider menggunakan nilai minimum dan maximum yang disesuaikan dengan parameter input.

JSlider(intmin, intmax, intvalue) Membuat horizontal slider dengan menggunakan nilai minmum, maximum, dan nilai aktif sesuai dengan parameter input.

JSlider(intorientation, intmin, intmax, intvalue) Membuat slider dengan model orientasi, minimum, maximum, dan nilai aktif sesuai dengan parameter input.

Beberapa Method yang harus diketahui

IntgetMaximum() Mendapatkan nilai maximum.

IntgetMinimum() Mendapatkan nilai minimum.

IntgetOrientation() Mendapatkan model model oreintasi slider, apakah berbentuk vertical atau horizontal.

intgetValue() Mendapatkan nilai aktif.

voidsetMaximum(intmaximum) Merubah nilai maximum.

voidsetMinimum(intminimum) Merubah nilai minimum.

voidsetOrientation(intorientation) Merubah model oreintasi (1=VERTICAL atau 0=HORIZONTAL).

voidsetValue(intn) 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 dari program konversi suhu yang terdapat pada latihan 2. Gambar 6.1 menggunakan Jslider sebagai petunjuk nilai aktif.

panel2 gridLayout(2,1)

panel1(1,2) BorderLayout.NORTHlblCelcius

lblCelciusCapt

sldCelcius, BorderLayout.SOUTH

panel3 gridLayout(2,2)

lblFahrenheit

lblCalvin

lblFahrenheitCapt

lblKelvinCapt

panel4

BorderLayout.West

s

l

d

F

a

h

r

e

n

h

e

i

t

BorderLayout.East

s

l

d

K

e

l

v

i

n

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

//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,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);

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 ChangeListener()

{public void stateChanged(ChangeEvent e)

{

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

}

}

);

sldCelcius.addMouseListener

(

//jika mouse selesai melakukan pergerakan

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

{

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();

}

}

Latihan 5

Buatlah Konversi dari Centimeter, Inch dan Feet

Gambar 6.2 . JSlider Cm, Inch, Dan FeetBAB 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. JMenuBarUntuk mengimplementasikan menu pada form dapat menggunakan komponen JMenuBarConstructor

JMenuBar() Membuat Bar Menu.

Beberapa Method yang harus diketahui

JMenuadd(JMenuc) Menambah objek JMenu ke JMenuBar

JMenugetMenu(intindex) Mendapat posisi menu yang disesuaikan dengan parameter index.

intgetMenuCount() Mendapatkan jumlah menu.

booleanisSelected() Melakukan pengecekan apakah menu yang dimaksud dalam posisi terpilih.

voidsetSelected(Componentsel) Mengaktifkan menu yang diinginkan.

Contoh Penggunaan :http://java.sun.com/docs/books/tutorial/uiswing/components/menu.htmlJMenu

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(Actiona) Membuat menu dengan penambahan Action.

JMenu(Strings) Membuat JMenu dengan teks.

JMenu(Strings, booleanb) Membuat JMenu dengan teks dan penandaan tear-off menu atau tidak.

Beberapa Method yang harus diketahui

JMenuItemadd(Actiona) Membuat menu item dengan penambahan Action objek dan menambahkannya pada akhir menu.

Componentadd(Componentc) Menambahkan komponen pada akhir menu.

Componentadd(Componentc, intindex) Menambah komponen pada posisi (index) tertentu.

JMenuItemadd(JMenuItemmenuItem) Menambah JMenuItem pada akhir menu.

JMenuItemadd(Strings) Menambah JMenuItem dengan teks dan menambahnya pada akhir menu.

voidaddMenuListener(MenuListenerl) Menambahkan listener pada menu.

voidaddSeparator() Menambahkan garis separator pada akhir menu.

IntgetDelay() Mendapatkan nilai delay menu

JMenuItemgetItem(intpos) Mendapat JMenuItem pada posisi tertentu.

intgetItemCount() Mendapatkan jumlah JMenuItem pada menu termasuk dengan garis separator.

JMenuIteminsert(Actiona, intpos) Menyisipkan Action pada posisi tertentu.

JMenuIteminsert(JMenuItemmi, intpos) Menyisipkan JMenuitem pada posisi tertentu.

Voidinsert(Strings, intpos) Menyisipkan menu tertentu dengan teks pada posisi tertentu.

VoidinsertSeparator(intindex) Menyisipkan garis separator pada posisi tertentu.

booleanisPopupMenuVisible() Mendapatkan nilai true atau false mengenai kemungkinan popup.

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

voidremove(Componentc) Menghapus komponen c dari menu.

Voidremove(intpos) Menghapus JMenuItem pada posisi tertentu pada menu.

voidremove(JMenuItemitem) Menghapus JMenuItem dari menu.

voidremoveAll() Mengapus semua menu item dari menu.

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

voidsetMenuLocation(intx, inty) Menempatkan lokasi X dan Y dari pop menu.

voidsetPopupMenuVisible(booleanb) 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(Stringlabel) Membuat JPopupMenu dengan title.

Beberapa Method yang harus diketahui

JMenuItemadd(Actiona) Menambahkan Action object.

JMenuItemadd(JMenuItemmenuItem) Menambahkan JMenuItem dan ditempatkan pada posisi terakhir menu.

JMenuItemadd(Strings) Menambahkan menu teks dan ditempatkan pada posisi akhir menu.

voidaddSeparator() Menambahakan garis separator pada akhir menu.

StringgetLabel() Mendapatkan label popup menu

voidinsert(Actiona, intindex) Menyisipkan Action pada posisi tertentu.

voidinsert(Componentcomponent, intindex) Inserts the specified component into the menu at a given position.

booleanisVisible() Mendaptkan nilai true jika pada posisi tampil.

voidremove(intpos) Menghapus komponen pada posisi tertentu.

voidsetLabel(Stringlabel) Memberikan label pada popup menu.

voidsetLocation(intx, inty) Menempatkan lokasi popup menu di koordinat X dan Y

voidsetPopupSize(Dimensiond) Memberikan ukuran berdasarkan dimensi.

voidsetPopupSize(intwidth, intheight) Memberikan ukuran berdasarkan lebar dan tinggi.

voidsetSelected(Componentsel) Menempatkan sel aktif pada komponen tertentu.

voidsetVisible(booleanb) Menampilkan popup menu jika parameter input adalah true.

voidshow(Componentinvoker, intx, inty) Menampilkan popup menu berdasarkan koordinat X dan Y.

JMenuItem

Memberikan komponen pada Jmenu dan JPopupMenuConstructor

JMenuItem() Membuat JMenuItem tanpa teks dan gambar ikon.

JMenuItem(Actiona) Membuat JMenuItem dengan Action.

JMenuItem(Iconicon) Membuat JMenuItem dengan gambar ikon.

JMenuItem(Stringtext) Membuat JMenuItem dengan teks.

JMenuItem(Stringtext, Iconicon) Membuat JMenuItem dengan teks dan gambar ikon.

JMenuItem(Stringtext, intmnemonic) Membuat JMenuItem dengan teks dan shortcut keyboard mnemonic.

Beberapa Method yang harus diketahui

voidsetEnabled(booleanb) Enables or disables the menu item.

Contoh Penggunaan :http://java.sun.com/docs/books/tutorial/uiswing/components/menu.htmlJTextArea

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

Constructor

JTextArea() Membuat TextArea.

JTextArea(Documentdoc) Membuat JTextArea dengan model dokumen.

JTextArea(Documentdoc, Stringtext, introws, intcolumns) Membuat JTextArea dengan model dokumen, teks, baris dan kolom sesuai dengan parameter yang diberikan.

JTextArea(introws, intcolumns) Membuat JTextArea dengan baris dan kolom yang sesuai dengan parameter input.

JTextArea(Stringtext) Membuat JTextArea dengan teks didalamnya.

JTextArea(Stringtext, introws, intcolumns) Membuat JTextArea dengan teks didalamnya beserta baris dan kolom.

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 (JMenu( mniFile)

Buka File (JMenuItem( mniFileBuka)

Simpan File (JMenuItem ( mniFileSimpan)

Keluar (JMenuItem ( mniKeluar)

Edit (JMenu( mniEdit)

Copy (JMenuItem ( mniCopy)

Cut (JMenuItem ( mniCut)

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

Gambar 7.2. VerticalBox

Untuk lebih jelasnya adalah sebagai berikut :

Box1

panel1 gridLayout(2,2)lblKategoricmbKategorilblDaerahcmbDaerahpanel2 gridLayout (3,1)

lblJudultxtJudullblIsijscrollPane1

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" );

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

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();

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();

}

}

Latihan 6 Tampilkan gambar ikon dimasing-masing menu

Gambar 7.3 Menu File Dengan Icon

Gambar 7.4 Menu Edit Dengan Icon

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 ( PBAB 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.JInternalFrameBerfungsi 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(Stringtitle) Membuat JInternalFrame yang ukurannya tidak dapat berubah, tidak dapat ditutup, dan tidak dapat menjadi ukuran maksimum. Tetapi mempunyai titel

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

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

JInternalFrame(Stringtitle, booleanresizable, booleanclosable, booleanmaximizable) Membuat JInternalFrame dengan title,dapat ditutup, dapat dirubah ukurannya dan dapat dirubah menjadi ukuran maximal. Tetapi tidak mempunyai gambar ikon.

JInternalFrame(Stringtitle, booleanresizable, booleanclosable, booleanmaximizable, booleaniconifiable) Membuat JInternalFrame dengan title,dapat ditutup, dapat dirubah ukurannya, dapat dirubah menjadi ukuran maximal dan mempunyai gambar ikon.

Contoh Penggunaan :

http://java.sun.com/docs/books/tutorial/uiswing/components/internalframe.htmlGambar 8.1 merupakan contoh penggunaan JInternalFrame dan Jslider. Dengan rancangan tampilan adalah sebagai berikut :

Container dengan model layout GridLayout (1,1) untuk penempatan panel left

left, merupakan panel dengan model layout GridLayout(2,1) untuk penempatan Colors

Colors, merupakan InternalFrame untuk penempatan sliders

Sliders, merupakan panel dengan model layout(5,1) untuk penempatan panel r, panel g, panel b, color canvas, dan .

left gridLayout(2,1)Colors (jInterframe)sliders gridLayout(5,1)

R

G

B

colorCanvas

Gambar 8.1. InternalFrame

Contoh Program ://program ke sebelas

//diambil dan edit dari www.sun.com

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import javax.swing.event.*;

public class AppSide extends Canvas implements ChangeListener, ItemListener

{

JFrame frame = new JFrame( "Internal Frame-Universitas Budi Luhur" );

JInternalFrame Colors = new JInternalFrame( "Colors", true,

true, true );

JPanel left = new JPanel(true);

Canvas colorCanvas = new Canvas();

//JSliders

JSlider r = new JSlider(0, 255);

JSlider g = new JSlider(0, 255);

JSlider b = new JSlider(0, 255);

Color rgb;

int rInt, gInt, bInt;

///Main Constructor ///

AppSide()

{

frame.pack();

frame.setSize(700, 500);

frame.setVisible(true);

frame.getContentPane().setLayout( new GridLayout(1,1) );

frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

frame.getContentPane().add(left);

}

//Left JPanel

private void fillLeft(){

left.setLayout(new GridLayout(2, 1));

left.add(Colors);

Colors.show();

}

//Color Jif

private void fillColors(){

JPanel sliders = new JPanel(true);

sliders.setLayout(new GridLayout(5, 1));

Colors.getContentPane().add(sliders);

sliders.add(r);

sliders.add(g);

sliders.add(b);

sliders.add(colorCanvas);

colorCanvas.setBackground(Color.black);

r.addChangeListener(this);

g.addChangeListener(this);

b.addChangeListener(this);

}

//Sliders Change

public void stateChanged(ChangeEvent e){

if(e.getSource() == r){

JSlider rS = (JSlider)e.getSource();

rInt = (int)rS.getValue();

}

if(e.getSource() == g){

JSlider rS = (JSlider)e.getSource();

gInt = (int)rS.getValue();

}

if(e.getSource() == b){

JSlider rS = (JSlider)e.getSource();

bInt = (int)rS.getValue();

}

rgb = new Color(rInt, gInt, bInt);

colorCanvas.setBackground(rgb);

}

public void itemStateChanged(ItemEvent e){}

public void actionPerformed(ActionEvent e) {}

//Main

public static void main(String[] args){

AppSide as = new AppSide();

as.fillColors();

as.fillLeft();

}

}

Latihan 7 Buatlah Satu Frame Dengan Beberapa Internal Frame Seperti Gambar Dibawah Ini

Gambar 8.2 JFrame dengan berapa JInternalFrameBAB IX

JTabbedPane

Contoh program pada Gambar 9.1 diambil dari http://java.sun.com mengenai penggunaan Tab.JTabbedPane

Komponen yang dapat digunakan oleh pengguna, dengan tampilan berdasarkan group komponen dalam bentuk tab. Tab tersebut dapat diberikan tampilan teks maupun gambara ikon.Constructor

JTabbedPane() Membuat TabbedPane kosong dengan posisi atas/TOP.

JTabbedPane(inttabPlacement) Membuat TabbedPane kosong dengan posisi sesuai dengan parameter input JTabbedPane.TOP, JTabbedPane.BOTTOM, JTabbedPane.LEFT, atau JTabbedPane.RIGHT.

JTabbedPane(inttabPlacement, inttabLayoutPolicy) Membuat TabbedPane kosong dengan posisi sesuai dengan parameter input JTabbedPane.TOP, JTabbedPane.BOTTOM, JTabbedPane.LEFT, atau JTabbedPane.RIGHT beserta model policy

Beberapa Method yang harus diketahui

voidaddTab(Stringtitle, Componentcomponent) Menambah tab dengan judul, dan tanpa gambar ikon.

voidaddTab(Stringtitle, Iconicon,Componentcomponent) Menambah tab dengan judul dan gambar Ikon beserta komponennya.

voidaddTab(Stringtitle, Iconicon, Componentcomponent, Stringtip) Menambah tab dengan judul dan gambar Ikon beserta komponennya dan teks tip.

intgetSelectedIndex() Mendapatkan index aktif dari tabbpane

intgetTabCount() Mendapatkan jumlah tab dari tabbedpane.

StringgetTitleAt(intindex) Mendapatkan teks judul sesuai index

voidinsertTab(Stringtitle, Iconicon, Componentcomponent, Stringtip, intindex) Menyisipkan komponen pada index tertentu dengan judul teks, gambar Ikon, komponen, teks tip.

booleanisEnabledAt(intindex) Memberikan nilai true apabila tab pada index tertentu dalam posisi aktif.

voidremove(Componentcomponent) Menghapus komponen JTabbedPane.

voidremove(intindex) Menghapus tab dan komponen didalamnya pada index tertentu.

voidremoveAll() Menghapus semua tab pada tabbedpane.

voidremoveTabAt(intindex) Menghapus tab dan komponen didalamnya pada index tertentu.

voidsetEnabledAt(intindex, booleanenabled) Mengaktifkan atau menonaktifkan tab pada index tertentu.

voidsetSelectedIndex(intindex) Memberikan status terpilih pada tab tertentu.

voidsetTitleAt(intindex, Stringtitle) Memberikan judul teks pada index tertentu.

voidsetToolTipTextAt(intindex, StringtoolTipText) Memberikan tek tooltip pada tab index tertentu.

Contoh Penggunaan :http://java.sun.com/docs/books/tutorial/uiswing/components/tabbedpane.html

Gambar 9.1 TabbedPane

Gambar 9.1 mempunyai rancangan desain sebagai berikut :

tabbedPane

Tab1Tab 2

Tab1

Card1

Button1

Button 2

Button3

Tab 2

jTextField

tabbedpane, dengan model TabbedPane yang mempunyai dua tab, yaitu tab 0 untuk penempatan card1 dan tab 1 untuk penempatan card2

card1, merupakan panel untuk penempatan Button1, Button2, dan Button3

card2, merupakan panel untuk penempatan TextField.

//program ke duabelas

/*

* ===diambil dari sun.java.documen.book.sample ====

*/

import java.awt.*;

import javax.swing.*;

public class TabDemo {

final static String BUTTONPANEL = "JPanel with JButtons";

final static String TEXTPANEL = "JPanel with JTextField";

public void addComponentToPane(Container pane) {

JTabbedPane tabbedPane = new JTabbedPane();

JPanel card1 = new JPanel()

{

//besarnya panel disesuakan dengan besar frame

public Dimension getPreferredSize() {

Dimension size =super.getPreferredSize();

size.width += 100;

return size;

}

};

card1.add(new JButton("Button 1"));

card1.add(new JButton("Button 2"));

card1.add(new JButton("Button 3"));

JPanel card2 = new JPanel();

card2.add(new JTextField("TextField", 20));

tabbedPane.addTab(BUTTONPANEL, card1);

tabbedPane.addTab(TEXTPANEL, card2);

pane.add(tabbedPane, BorderLayout.CENTER);

}

private static void createAndShowGUI() {

//look and feel

JFrame.setDefaultLookAndFeelDecorated(true);

JFrame frame = new JFrame( "TabDemo - Universitas Budi Luhur" );

frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

TabDemo demo = new TabDemo();

demo.addComponentToPane(frame.getContentPane());

frame.pack();

frame.setVisible(true);

}

public static void main(String[] args) {

createAndShowGUI();

}

}

Latihan 8 Buatlah posisi tab pada posisi bawah

Gambar 9.2 Posisi Tab di Bawah

Buatlah posisi tab pada posisi kiri

Gambar 9.3 Posisi Tab di Kiri

Buatlah posisi tab pada posisi kanan

Gambar 9.4 Posisi Pada Posisi KananBAB X

MODEL DESAIN TAMPILAN

Pada meteri sebelumnya, kita sebenarnya sudah menyinggung sedikit mengenai penggunaan layout. Pada pembahasan dibawah selanjutnya, akan dibahas seluruh model layout pada Java standar, Null layout, XY layout pada JBuilder borland.

Layout-layout tersebut adalah sebagai berikut :

BorderLayout

Membuat layout tampilan berdasarkan arah mata angin yaitu NORTH, EAST, SOUTH, dan WEST.

NORTH

WESTCENTEREAST

SOUTH

FlowLayout

Layout FlowLayout mempunyai beberapa tampilan yaitu LEFT, CENTER, dan RIGHT.

LEFTCENTERRIGHT

GridLayout

Penggunaan layout GridLayout dengan metode yang sama seperti saat kita menggunakan table, yaitu terkait jumlah baris dan jumlah kolom.

Contoh :

jumlah baris 2 dengan kolom 4, menggunakan perintah GridLayout(2,4), yang berarti terdapat 8 (delapan) komponen yang dapat ditempatkan ;

Komponen 1, berada pada posisi baris pertama dan kolom pertama

Komponen 2, berada pada posisi baris pertama dan kolom kedua

Komponen 3, berada pada posisi baris pertama dan kolom ketiga

Komponen 4, berada pada posisi baris pertama dan kolom keempat.

Komponen 5, berada pada posisi baris kedua dan kolom pertama.

Komponen 6, berada pada posisi baris kedua dan kolom kedua.

Komponen 7, berada pada posisi baris kedua dan kolom ketiga.

Komponen 8, berada pada posisi baris kedua dan kolom keempat.

1234

5678

BoxLayout

BoxLayout digunakan untuk membuat tampilan berdasarkan AXIS, yaitu :

X_AXIS

Setiap komponen yang ditambahkan pada layout, akan diposisikan pada kanan sesudah komponen sebelumnya.

Gambar 10.1. BoxLayout X_AXIS

Y_AXIS

Setiap komponen yang ditambahkan pada layout, akan diposisikan pada komponen sebelumnya

Gambar 10.2. BoxLayout Y_AXIS

Box

Penggunaan Box sama dengan BoxLayout, hanya penamaannya saja yang berbeda, yaitu :

Horizontal Box

Setiap komponen yang ditambahkan pada layout, akan diposisikan pada kanan sesudah komponen sebelumnya.

Gambar 10.3. Box Horizontal

Vertical Box

Setiap komponen yang ditambahkan pada layout, akan diposisikan pada komponen sebelumnya

Gambar 10.4 .Box Horizontal

GridBagLayout

Penggunaan layout GridBagLayout secara logika menyerupai GridLayout, hanya saja benar memposisikan kolom dengan intial gridy dan baris dengan intial gridy.

Kelebihan dari layout ini adalah dapat membuat menyatukan kolom dan baris untuk satu komponen, lihat Gambar 10.5 pada button 6.

Gambar 10.5.Box Horizontal

Contoh aplikasi pada Gambar 10.6 dapat dideskripsikan sebagai berikut :

btn1 (0,0)(0,1)

btn6 (2, 0 & 1)

greatHeigh = 2, GridBagConstraints.BOTH

btn2 (0,1)btn4 (1,1)

btn3 (0,2)btn5 (1,2)

(2,2)

Button1, berada pada posisi x = 0 dan y =1

Button2, berada pada posisi x = 0 dan y =1

Button3, berada pada posisi x= 0 dan y=2

Button4, berada pada posisi x =1 dan y= 1

Button5, berada pada posisi x =1 dan y =2

Button6, berada pada posisi x=2 dan y = 0 &1

Contoh program :

//program ke tiga belas

//diambil dari www.sun.comimport java.awt.*;

public class Direction extends Frame {

Button btn1, btn2, btn3, btn4, btn5, btn6;

GridBagLayout gridbag;

GridBagConstraints c;

public static void main(String argv[])

{

new Direction().show();

}

void makeButtons() {

btn1 = new Button("Button 1"); add(btn1);

btn2 = new Button("Button 2"); add(btn2);

btn3 = new Button("Button 3"); add(btn3);

btn4 = new Button("Button 4"); add(btn4);

btn5 = new Button("Button 5"); add(btn5);

btn6 = new Button("Button 6"); add(btn6);

}

public Direction()

{

gridbag = new GridBagLayout();

setLayout(gridbag);

c = new GridBagConstraints();

makeButtons();

// btn1 Ditempatkan pada posisi (0,0)

gridbag.setConstraints(btn1, c);

// btn2 berada di bawah btn1 (0,1)

// gridy dengan posisi RELATIVE (0+1)

c.gridx = 0;

gridbag.setConstraints(btn2, c);

// btn3 gridx = 0

//gridy dengan posisi RELATIVE (1 + 1) // btn3 gridy = 2

gridbag.setConstraints(btn3, c);

// btn4 gridx dengan posisi Relative (0 + 1) // btn4 gridy = 1

// btn4 (1,1)

c.gridx = GridBagConstraints.RELATIVE;

c.gridy = 1;

gridbag.setConstraints(btn4,