bahasa pemrograman 3 rev ke dua
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,