bahasa pemrograman3 - java gui & database.pdf

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

Upload: windu-gata

Post on 31-Dec-2015

581 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

1

BAHASA PEMROGRAMAN JAVA

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

WINDU GATA, SKOM

Page 2: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

2

KATA PENGANTAR

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

Java juga merupakan bahasa pemrograman bebas atau tanpa biaya, sehinggamemudahkan para pengembang untuk mengembangkan aplikasi, maupun dari sisipengguna aplikasi, dapat mengefesienkan biaya yang harus dikeluarkan.

Untuk mempelajari bahasa pemrograman Java, khususnya tampilan layarClient/Server tidaklah mudah, banyak kendala yang dihadapi, oleh karena itu penulismerasa 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 (ErrorException), penggunaan program dengan proses parallel (thread), penanganan file inputdan output, bagaimana cara menyimpan data pada database, membuat laporanmenggunakan JFreeReport dan Pentaho, dan menyinggung sedikit mengenai penggunaaneditor bahasa pemrograman Java, yaitu NetBeans dan JBuilder.

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

Penulis telah semaksimal mungkin untuk menulis buku Bahasa Pemrograman Javaini, sebagai pengabdian penulis terhadap Negara untuk turut serta mencerdaskanmasyarakat luas.

Walaupun sudah semaksimal mungkin penulis tetap membutuhkan kritis dan sarandari teman-teman yang telah membaca tulisan ini dengan mengirimkan email [email protected] atau [email protected].

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

Jakarta, Desember 2005

Penulis

Page 3: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

3

DAFTAR ISI

Page 4: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

4

PENDAHULUAN

Teknologi Java dibuat sebagai bahasa pemrograman kecil pada tahun 1991 olehSun 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 diSand Hill Road di Menlo Park. Secara teknis terputus dari perusahaan SUN dandikerjakan sekitar 18 (delapan belas) bulan lamanya.

Mereka berusaha untuk mengantisipasi dengan merancang aplikasi atau perangkatlunak lanjutan pada komputer. Hasilnya sangat berbeda dengan sistem komputeryang telah ada. Nama bahasa pemrograman dikenal dengan nama “Oak”.

Pengenalan bahasa pemrograman baru tersebut dikenalkan pada industri televisikabel digital, tetapi ide mereka terlalu jauh dan tidak dapat diterapkan pada waktudekat, sehingga industri televisi belum siap menerima teknologi yang merekatawarkan.

Saat teknologi internet sudah dikenal luas, bahasa pemrograman “Oak” berubahmenjadi bahasa pemrograman Java dan dipublikasi tahun 1995. Aplikasi pertamayang menggunakan teknologi Java adalah Netscape Navigator, yang merupakanSelancar Internet.

Saat ini, dalam waktu 10 tahun, penggunaan Java sudah dilakukan oleh 4 (empat)juta pengembang sistem aplikasi komputer secara keseluruhan di dunia, dan telahmemasuki segmen industri besar serta penggunaannya serta kertekaitannya denganperalatan, komputer dan jaringan.

Terbukti dengan keunggulan, efesiensi, penggunaan banyak platform, dankeamanan 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 sepertimobil, aplikasi pembayaran parkir dan banyak lagi.

Pada saat ini, kita dapat menemukan Teknologi Java pada jaringan komputer danperalatan yang berhubungan dengan Internet dan komputer supercepat para ahlihingga 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 programJava telah berulang-ulang dikaji ulang, pengembangan, pengujian langsung dandibuktikan dengan komunitas lebih dari 4 (empat) juta pengembang perangkat lunakdan aplikasi.

Alasan lain adalah bahasa pemrograman Java dapat dikembangkan pada 1 (satu)platform atau jenis sistem operasi dan dapat dijalankan pada platform lainnya, dantidak tergantung pada aplikasi web, server client, penyimpanan data HTML dan lain-lain.

Dengan kombinasi teknologi yang dimiliki oleh Java menjadikan aplikasi yangdapat dan mudah diubah suatu saat serta meringankan sisi pengguna produk aplikasi.

Page 5: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

5

Buku Bahasa Pemrograman JAVA-GUI, yang ada dihadapan anda sekarang,menggunakan bahasa pemrograman Java standard J2SDK yang dikembangkan olehSun Microsystem (www.sun.com).

Selain itu, buku ini disusun menggunakan konsep praktik langsung (learning bydoing) yang dilengkapi pembahasan contoh program dengan menggunakan beberapaobjek Java , lengkap dengan pembahasannya.

Harapannya, buku ini bisa mengantarkan pembaca mampu mengembangkanprogram GUI (Grafik User Interface) layaknya form dan objek lainnya. Sekaligusdapat digunakan dalam form, grafik 2 (dua) dimensi, event handling, error handling,file akses, multithread, dan database (mysql) serta penggunaan JBuilder, Netbeansdan 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 IPengenalan GUI dan cara menggunakan Jframe.

BAB IIPenggunaan 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 boxdengan JList Multi Selected, dan objek JRadioButton dengan JList SingleSelected. Sedangkan layout yang digunakan adalah Border Layout

BAB VBab ini menerangkan bagaimana menggunakan peralatan mouse dan keyboarddengan fasilitas Java objek MouseMotionListener, MouseListener, KeyListener,dan ActionListener.

BAB VIMembuat program konversi suhu menggunakan objek JSlider

BAB VIIMembuat program editor berita menggunakan objek JMenuBar, JMenu,JPopupMenu, JMenuItem, JTextArea, dan Box

BAB VIIIMengenal penggunaan JInternalFrame

BAB IXMengenal penggunaan tampilan group berupa tab dengan objek JTabbedPane

BAB XMengenal model desain tampilan pada standar Java

BAB XIBagaimana cara mengatasi kesalahan program atau yang kita kenal dengan ErrorExcption.

BAB XII

Page 6: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

6

Mengenal Penggunaan ThreadBAB XIII

Mengenal cara mengakses file dan mengembangkan program pada bab VIImenggunakan fasilitas akses file.

BAB XIVCara menggunakan database mysql dan interface koneksi database JDBC

BAB XVMembuat laporan dengan menggunakan jFreeReport

BAB XVIJawaban Soal Latihan

BAB XVIPenutup

Page 7: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

7

BAB I

GUI (Grafik User Interface)

Pertanyaan mendasar mengenai penggunaan tampilan atau GUI dalam programadalah seberapa penting hal itu dilakukan. Bukankah program sudah berjalan sesuaidengan permintaan?

Pertanyaan itu biasanya menghantui setiap pengembang program (programmer)pada saat membuat program.

Tentu saja kepentingan penggunaan tampilan akan berpulang pada penempatanprogram itu sendiri.

Untuk program yang hanya ditempatkan pada sisi komputer server yang jarangberinteraksi dengan pengguna, maka fungsi dasar program dirasa cukup memadai.

Tetapi apabila program tersebut diperkirakan akan banyak berinteraksi denganpengguna, 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 yangdihasilkan akan lebih diterima oleh pengguna. Bahkan sering karena tampilan yangmenarik, program itu memiliki nilai yang lebih tinggi dibandingkan dengan programlain dengan tampilan yang sederhana.

Saat ini, terdapat beberapa model Frame GUI yang dapat digunakan saatmengembangkan 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 Netbeandalam pembuatan aplikasi GUI.

JFRAME

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

//program pertama//Tidak Menggunakan Construktorimport javax.swing.JFrame;class frame1{

public static void main(String args []){JFrame tampil = new JFrame();tampil.show();

}}

Page 8: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

8

super("Universitas Budi Luhur");

this.setSize(300,200)

setLocation(10,100);

setResizable(false);

Atau

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

frame21(){ //construktorshow();

}}class frame22{

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

}}

Apabila kedua program tersebut dikompilasi dan dijalankan maka akan terdapattampilan 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 dialokasi memori setelah aplikasi di tutup seperti pada gambar 1.2 sebagai berikut :

Gambar 1.2. JFrame Dan Property

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

Page 9: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

9

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

}

Page 10: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

10

BAB II

GRAFIK DUA DIMENSI (2D) PADA JFRAME

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

Cara menggabungkan penggunaan Canvas dan Jframe adalah sebagai berikut :

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

//program ke empatimport javax.swing.*;import java.awt.*;//Class Canvasclass 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,archeightg.drawRoundRect(1,50,30,40,5,100);g.setColor(Color.YELLOW); //set warnag.drawOval(110,50,40,30);g.setFont(new Font("Tahoma",Font.ITALIC,20));g.drawString("9511500134",80,15);g.setColor(Color.BLUE); //set warnag.fillRect(1,110,30,20);g.fillOval(50,110,30,20);

}}

Page 11: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

11

//Class frameclass 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 objekCanvas yang berasal dari java.awt yang digunakan untuk melakukan design grafik2D.

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

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

…..}

}

Perumpamaan membuat gambar 2D menggunakan objek Canvas adalah sepertimenggambar pada sebuah kertas kosong dengan pensil gambar. Hanya sajapenggunaan objek Canvas menggunakan posisi piksel pada frame.

Posisi 0 pada horizontal (X=0) dan posisi 0 pada vertikal (Y=0), menunjukanposisi 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 > 0maka posisi berada ke arah bawah dari frame.

Banyak objek yang dapat digunakan untuk menggambar 2D pada Canvas, yaitubulat, kotak, garis dan lain-lain.Pada Gambar 2.1 terdapat beberapa objek, yaitu :- Kotak

drawRect (x,y,width, height)

Page 12: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

12

- Kotak dengan bundaran di pinggir

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

- Kotak dengan warna di dalamnya

fillRect (x,y,width,height)

- Penggunaan Font

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

- String

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

- Garis

drawLine(x,y,width,height)

- Bundar

drawOval(x,y,width,height)

- Bundar dengan warna didalamnya

fillOval(x,y,width, height)

- Pewarnaan

setColor(<color>)

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

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

perintah :

konten.add(duaD);

Page 13: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

13

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

Gambar 2.2. Grafik 2D Bendera Merah Putih

Page 14: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

14

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 yangmenggunakan beberapa objek javax.swing.*, yaitu : JLabel, JTextField, JCheckBox,JRadioButton, JComboBox dan JButton. Ditambah dengan penggunaan ActionListener dari java.awt.event.* dan model-model tampilan (FlowLayout danGridLayout )

Gambar 3.1. Input Data Mahasiswa

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

JLabel

Berfungsi untuk menampilkan tulisan atau gambar ikon pada frame

ConstructorJLabel()

Membuat JLabel tanpa gambar dan tanpa tulisan di dalamnyaJLabel(Icon image)

Membuat JLabel dengan gambar.JLabel(Icon image, int horizontalAlignment)

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

JLabel(String text)Membuat JLabel dengan isi teks di dalamnya.

JLabel(String text, Icon icon, int horizontalAlignment)

JTextField

JCheckBox

JRadioButton

JLabel

JComboBox

JButton

Page 15: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

15

Membuat JLabel dengan isi text di dalamnya, gambar dan horizontalalignment (LEFT, CENTER, RIGHT, LEADING atau TRAILING).JLabel(String text, int horizontalAlignment)

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

Beberapa Method yang harus diketahuiString getText()

Mendapatkan nilai string pada JLabelvoid setText(String text)

Memberikan nilai string pada JLabel

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

JTextField

Berfungsi sebagai media edit single teks

ConstructorJTextField()

Membuat JTextField.JTextField(Document doc, String text, int columns)

Membuat JTextField yang menggunakan model text, isi dari JTextFielddan kolom.JTextField(int columns)

Membuat JTextField dengan model kolom.JTextField(String text)

Membuat JTextField dengan isi teks di dalamnya.JTextField(String text, int columns)

Membuat JTextField dengan isi teks di dalamnya dan kolom.

Beberapa Method yang harus diketahuivoid addActionListener(ActionListener l)

Memberikan action listener pada JTextFieldString getText()

Mendapatkan nilai string dari JTextField.void setFont(Font f)

Merubah Font pada JTextField

void setText(String Text)

Page 16: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

16

Memberikan nilai string pada JTextField

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

JCheckBox

Digunakan untuk pilihan yang dapat lebih dari satu pilihan

ConstructorJCheckBox()

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

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

Membuat JCheckBox dengan posisi tidak tercentang/terpilih dengan tampilangambar ikon.JCheckBox(Icon icon, boolean selected)

Membuat JCheckBox dengan tampilan gambar ikon dan posisi tercentang/terpilihtergantung dengan parameter Boolean yang diberikan.JCheckBox(String text)

Membuat JCheckBox dengan posisi tidak tercentang/terpilih dengan teks.JCheckBox(String text, boolean selected)

Membuat JCheckBox dengan isian berupa teks dan posisi tercentang/terpilihdisesuaikan dengan parameter Boolean yang diberikan.JCheckBox(String text, Icon icon)

Membuat JCheckBox dengan posisi tidak tercentang dengan teks dan tampilangambar ikon.JCheckBox(String text, Icon icon, boolean selected)

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

Contoh Penggunaan :

Beberapa Method yang harus diketahuiBoolean isSelected()

Mendapatkan nilai dari JCheckBox. Jika tercentang/terpilihmaka nilainya adalah true, apabila tidak tercentang nilainya adalahfalse.

void setSelected()Memberikan nilai true atau false pada objek JCheckBox.

Page 17: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

17

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

JRadioButton

Digunakan untuk memilih satu dari beberapa pilihan.

ConstructorJRadioButton()

Membuat JRadioButton dengan posisi tidak tercentang/terpilih dan tanpa isianteks.JRadioButton(Icon icon)

Membuat JRadioButton dengan posisi tidak tercentang/terpilih dengan tampilangambar dengan tanpa teks.JRadioButton(Icon icon, boolean selected)

Membuat JRadioButton dengan gambar, tanpa teks dan posisi tercentang/terpilihsesuai dengan parameter Boolean yang diberikan.JRadioButton(String text)

Membuat JRadioButton dengan posisi tidak tercentang/terpilih dengan teks.JRadioButton(String text, boolean selected)

Membuat JRadioButton dengan teks dan posisi tercentang/terpilih sesuai denganparameter boolean yang diberikan.JRadioButton(String text, Icon icon)

Membuat JRadioButton dengan teks dan gambar ikon dengan posisi tidaktercentang/terpilih.JRadioButton(String text, Icon icon, boolean selected)

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

Contoh Penggunaan :

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

Beberapa Method yang harus diketahuiBoolean isSelected()

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

void setSelected()Memberikan nilai true atau false pada objek JRadioButton.

Page 18: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

18

Saat penggunaan JRadioButton harus menggunakan ButtonGroup untukmenggabungkan JRadioButton.

ButtonGrop

Berfungsi sebagai penggabungan komponen pada Java

ConstructorButtonGroup()

Membuat ButtonGroup

Beberapa Method yang harus diketauivoid add(AbstractButton b)

Menambah button pada group.void remove(AbstractButton b)

Menghapus button dari the group.

JComboBox

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

ConstructorJComboBox()

Membuat JComboBox.JComboBox(ComboBoxModel aModel)

Membuat JComboBox dengan ComboBoxModel yang diinginkan(DefaultComboBoxModel, MetalFileChooserUI.DirectoryComboBoxModel,MetalFileChooserUI.FilterComboBoxModel).JComboBox(Object[] items)

Membuat JComboBox dengan isian berupa array.JComboBox(Vector items)

Membuat JComboBox dengan element Vector.

Page 19: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

19

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

JButton

Mengimplementasikan penggunaan “push button”

ConstructorJButton()

Beberapa Method yang harus diketahuiVoid addItem(Object anObject)

Menambah Item pada JComboBox.Int getItemCount()

Mendapat nilai jumlah item pada JComboBox.Object getItemAt(int index)

Mendapatkan nilai dari item dengan Index yang ditentukan.int getMaximumRowCount()

Mendapatkan jumlah nilai maksimum list pada JComboBox

int getSelectedIndex()Mendapatkan nilai item ke berapa (index) pada JComboBox.

Object getSelectedItem()Mendapatkan isi dari JComboBox.

boolean isEditable()Mendapatkan nilai true atau false dari status editable

JComboBox.void removeAllItems()

Menghapus semua item pada JComboBox.void removeItem(Object anObject)

Menghapus salah satu item pada JComboBox.void setEditable(boolean aFlag)

Merubah status editable pada JComboBox.void setEnabled(boolean b)

Mengaktifkan atau menon aktifkan JComboBox .void setMaximumRowCount(int count)

Menampilkan maximum item yang dapat ditampilkanJComboBox.

void setSelectedIndex(int anIndex)merubah pointer Index.

void setSelectedItem(Object anObject)Merubah posisi item berdasarkan object.

Page 20: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

20

Membuat tombol tanpa teks dan gambar ikon.JButton(Icon icon)

Membuat tombol dengan gambar ikon.JButton(String text)

Membuat tombol dengan tampilan teks.JButton(String text, Icon icon)

Membuat tombol dengan tampilan teks dan gambar ikon.

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

Dalam tampilan layar pada Gambar 3.1, apabila tombol “Tampilkan” ditekanmaka akan tampil isi data dari form. Pada pemrograman Java, fungsi tersebut dapatmenggunakan method addActionListener dan actionPerformed.

Methodvoid actionPerformed(ActionEvent e)

Mendeteksi Action yang diberikan.

Rancangan tampilan dibuat dengan menggunakan layout FlowLayout danGridLayout. Dalam layout FlowLayout terdapat 3 (tiga) jenis layout, yaituFlowLayout.LEFT untuk posisi kiri, FlowLayout.CENTER untuk posisi tengah danFlowLayout.RIGHT untuk posisi kanan

LEFT CENTER RIGHT

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

container

panel1 gridlayout (6,2)lblNim txtNim

lblNama txtNama

lblSertifikat panel2 gridlayout (1,3)chSD chSMP chSMA

lblJurusan panel3 gridlayout (1,4)rdTI rdMI rdAK rdTK

lblKampus cmbKampuscmdSave cmdExit

Page 21: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

21

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

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

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

//program ke limaimport 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 buttonprivate 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");

Page 22: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

22

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

Page 23: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

23

cmdSave.addActionListener(itemHandler);panel1.add(cmdEnd);cmdEnd.addActionListener(itemHandler);

konten.add(panel1);

show();

}

private class itemHandler implementsActionListener{

public void actionPerformed(ActionEvent e){

//mendapatkan nama objek actionObject 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";

elsesTampil+=", 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();}

}

Page 24: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

24

Latihan 2

Pada program kelima tambahkan beberapa fasilitas yang akan tampil pada saat programdijalankan, 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

Page 25: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

25

BAB IV

JList (Single Selected dan Multi Selected) DANLAYOUT (Border Layout)

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

Gambar 4.1. Form Input Mahasiswa (JLIST)

JLIST

Membuat tampilan data list

ConstructorJList()

Membuat JList standarJList(ListModel dataModel)

Membuat JList yang menampilkan elemen dengan non-null model.JList(Object[] listData)

Membuat JList yang menampilkan elemen array.JList(Vector listData)

Membuat JList yang menampilkan elemen dengan model Vector.

JListMultiple Selection

JListSingle Selection

Page 26: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

26

Beberapa Method yang harus diketahuiint getSelectedIndex()

Mendapatkan nilai Index jika tidak ada yang terpilih makaJlist akan memberikan nilai -1.

Object getSelectedValue()Mendapatkan nilai terpilih jika tidak ada yang terpilih maka

Jlist akan memberikan nilai null.Object[] getSelectedValues()

Mendapatkan nilai dalam bentuk Array dari sel terpilih.boolean isSelectedIndex(int index)

Mendapatkan nilai true apabila index terpilih dan akanmengembalikan nilai false jika tidak terpilih.

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

void setSelectedIndex(int index)Mengaktifkan sebuah sel .

void setSelectedValue(Object anObject,boolean shouldScroll)

Mengaktifkan objek pada list.void setSelectionBackground(Color selectionBackground)

Memberikan warna background.void setSelectionForeground(Color selectionForeground)

Memberikan warna foreground.void setSelectionMode(int selectionMode)

Merubah model Jlist menjadi single selection<object>.setSelectionMode(ListSelectionModel.SINGLE_SELECTION)atau multiple selection.<object>.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)

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

dalam rancangan tampilan pada Gambar 4.1, kita menggunakan layoutFlowLayout, Gridlayout dan BorderLayout.

Perlu diingat bahwa layout FlowLayout dan GridLayout telah diterangkansebelumnya, khususnya dalam contoh pada Gambar 3.1.

Sedangkan ilustrasi dari penggunaan layout BorderLayout dapat dilihat dalambentuk berikut :

NORTHWEST CENTER EAST

Page 27: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

27

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

lblSertifikat lstSertifikat

lblJurusan lstJurusan

panel3(2,2) BorderLayout.SOUTHlblKampus cmbKampuscmdSave cmdExit

Terdapat 1(satu) Container dengan model FlowLayout.CENTER dengan jumlahpanel 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 posisiSOUTH untuk penempatan panel3

Page 28: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

28

Contoh program java untuk Gambar 4.1 :

//program ke enamimport 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(

Page 29: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

29

"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 selectionlstSertifikat = 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 SelectionlstJurusan = 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);

Page 30: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

30

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

}

}

Page 31: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

31

Latihan 3

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

Gambar 4.2. HandPhone

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

Gambar 4.3. Konversi Suhu

Page 32: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

32

BAB V

MouseMotionListener, MouseListener, KeyListener,dan ActionListener.

Salah satu keunggulan GUI sehingga sering digunakan pada pemrograman, yaitukarena dapat berinteraksi dengan media Mouse dan tentu saja Keyboard. Fasilitaslistener juga ada pada objek java.awt.event.*.

Pada pemrograman Java, untuk mengenali pergerakan mouse dikenal sebutanMouseMotionListener, sedangkan mengenali penggunaan tombol pada mousedisebut dengan MouseListener, sedangkan penggunaan tombol pada keyboarddisebut dengan KeyListener.

MouseMotionListener

Mendeteksi pergerakan mouse

Methodvoid mouseDragged(MouseEvent e)

Mouse dengan posisi ditekan kemudian digerakkan.

void mouseMoved(MouseEvent e)Mouse digerakkan tanpa ada tombol yang ditekan.

MouseListener

Mendeteksi tombol mouse yang digunakan

Methodvoid mouseClicked(MouseEvent e)

Mouse di-click atau ditekan tombolnya kemudian langsungdilepaskan.

void mouseEntered(MouseEvent e)Ketika mouse memasuki komponen.

void mouseExited(MouseEvent e)Ketika mouse keluar dari komponen.

void mousePressed(MouseEvent e)Tombol mouse ditekan.

void mouseReleased(MouseEvent e)Tombol mouse dilepaskan

KeyListener

Mendeteksi tombol keyboard yang digunakan

Method

Page 33: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

33

void keyPressed(KeyEvent e)Tombol keyboard ditekan.

void keyReleased(KeyEvent e)Tombol keyboard dilepas.

void keyTyped(KeyEvent e)Tombol keyboard melakukan pengetikan

ActionListener

Mendeteksi aksi yang diberikan dari komponen..

Methodvoid actionPerformed(ActionEvent e)

Mengetahui Action yang dilakukan.

Coba perhatikan program ketujuh dan kedelapan perbedaannya dan jalankan.

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

class grap22 extends JFrame implementsMouseMotionListener, 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");

Page 34: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

34

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 handlingkonten.addMouseMotionListener(this);konten.addMouseListener(this);txtKey.addKeyListener(this);

show();

}

//Mouse Motion Listenerpublic 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 Listenerpublic 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 Listenerpublic void keyTyped(KeyEvent e){

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

Page 35: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

35

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 kedelapanimport 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 handlinglabel2.setForeground(Color.RED);konten.addMouseMotionListener(new MouseMotionListener(){

public void mouseDragged(MouseEvent e){label2.setText(

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

);

Page 36: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

36

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

}

Page 37: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

37

Kedua program tersebut apabila dijalankan mempunyai hasil yang sama (Gambar5.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 namaobjek class seperti pada penggalan program ke enam yang menggunakan listenerActionListener.

Sedangkan pada program ke delapan listener ditempatkan pada objek yangmempunyai method listener.

//penggalan program ke enamimport 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 itemHandlerimplements ActionListener{

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

Page 38: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

38

…}else {System.exit (0);}

}}

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

}}

Page 39: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

39

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

Page 40: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

40

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

Page 41: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

41

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 dariposisi mouse click

Gambar 5.3 Buah Pear Dengan Penggambaran UlangSesuai Posisi X & Y Mouse

Page 42: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

42

BAB VI

JSliderPada 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 tersebutberupa nilai minimum, nilai maksimum dan nilai-nilai antara serta bertipe datainteger.

ConstructorJSlider()

Membuat horizontal slider dengan nilai minimum 0 sampai dengan maximum100 dan dengan nilai aktif 50.JSlider(BoundedRangeModel brm)

Membuat horizontal slider menggunakan model BoundedRangeModel.JSlider(int orientation)

Membuat slider dengan model oreintasi sesuai dengan parameter input(0=horizontal||1=vertical) dengan nilai minimum 0 sampai dengan nilai maximum100 dan nilai aktif 50.JSlider(int min, int max)

Membuat horizontal slider menggunakan nilai minimum dan maximum yangdisesuaikan dengan parameter input.JSlider(int min, int max, int value)

Membuat horizontal slider dengan menggunakan nilai minmum, maximum,dan nilai aktif sesuai dengan parameter input.JSlider(int orientation, int min, int max, int value)

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

Beberapa Method yang harus diketahuiInt getMaximum()

Mendapatkan nilai maximum.Int getMinimum()

Mendapatkan nilai minimum.Int getOrientation()

Mendapatkan model model oreintasi slider, apakah

Page 43: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

43

berbentuk vertical atau horizontal.

int getValue()Mendapatkan nilai aktif.

void setMaximum(int maximum)Merubah nilai maximum.

void setMinimum(int minimum)Merubah nilai minimum.

void setOrientation(int orientation)Merubah model oreintasi (1=VERTICAL atau

0=HORIZONTAL).void setValue(int n)

Merubah nilai aktif.

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

Gambar 6.1. Jslider

Gambar 4.1 merupakan bentuk program lain dari program konversi suhu yangterdapat pada latihan 2. Gambar 6.1 menggunakan Jslider sebagai petunjuk nilaiaktif.

Page 44: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

44

panel2 gridLayout(2,1)panel1(1,2) BorderLayout.NORTH

lblCelcius lblCelciusCaptsldCelcius, BorderLayout.SOUTH

panel3 gridLayout(2,2)lblFahrenheit lblCalvin

lblFahrenheitCapt lblKelvinCapt

panel4BorderLayout.West

sldFahrenheit

BorderLayout.East

sldKelvin

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

Page 45: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

45

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

class frame1 extends JFrame{

//penggunaan slider//JSlider (

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

private Container konten = new Container();private JPanel panel1 = new JPanel();

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

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

private JPanel panel4 = new JPanel();private JSlider sldFahrenheit =

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

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

frame1(){

super("Universitas Budi Luhur");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(200,325);setLocation(10,100);konten = getContentPane();

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

new FlowLayout(FlowLayout.CENTER

));

panel1.add(lblCelcius);panel1.add(lblCelciusCapt);

panel2.setLayout(new BorderLayout());panel2.add(panel1, BorderLayout.NORTH);sldCelcius.setValue(0);panel2.add(sldCelcius, BorderLayout.SOUTH);

Page 46: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

46

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 IntegersldKelvin.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 Berubahnew ChangeListener(){public void stateChanged(ChangeEvent e)

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

);}

});

sldCelcius.addMouseListener(//jika mouse selesai melakukan pergerakannew 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(

Page 47: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

47

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

Page 48: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

48

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

}

Page 49: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

49

Latihan 5

- Buatlah Konversi dari Centimeter, Inch dan Feet

Gambar 6.2 . JSlider Cm, Inch, Dan Feet

Page 50: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

50

BAB VII

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

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

JMenuBar

Untuk mengimplementasikan menu pada form dapat menggunakan komponenJMenuBar

ConstructorJMenuBar()

Membuat Bar Menu.

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

JMenu

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

ConstructorJMenu()

Membuat JMenu tanpa teks.JMenu(Action a)

Membuat menu dengan penambahan Action.

Beberapa Method yang harus diketahuiJMenu add(JMenu c)

Menambah objek JMenu ke JMenuBar

JMenu getMenu(int index)Mendapat posisi menu yang disesuaikan dengan parameter

index.int getMenuCount()

Mendapatkan jumlah menu.boolean isSelected()

Melakukan pengecekan apakah menu yang dimaksuddalam posisi terpilih.

void setSelected(Component sel)Mengaktifkan menu yang diinginkan.

Page 51: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

51

JMenu(String s)Membuat JMenu dengan teks.

JMenu(String s, boolean b)Membuat JMenu dengan teks dan penandaan tear-off menu atau tidak.

Beberapa Method yang harus diketahuiJMenuItem add(Action a)

Membuat menu item dengan penambahan Actionobjek dan menambahkannya pada akhir menu.

Component add(Component c)Menambahkan komponen pada akhir menu.

Component add(Component c, int index)Menambah komponen pada posisi (index) tertentu.

JMenuItem add(JMenuItem menuItem)Menambah JMenuItem pada akhir menu.

JMenuItem add(String s)Menambah JMenuItem dengan teks dan

menambahnya pada akhir menu.

void addMenuListener(MenuListener l)Menambahkan listener pada menu.

void addSeparator()Menambahkan garis separator pada akhir menu.

Int getDelay()Mendapatkan nilai delay menu

JMenuItem getItem(int pos)Mendapat JMenuItem pada posisi tertentu.

int getItemCount()Mendapatkan jumlah JMenuItem pada menu termasuk

dengan garis separator.JMenuItem insert(Action a, int pos)

Menyisipkan Action pada posisi tertentu.JMenuItem insert(JMenuItem mi, int pos)

Menyisipkan JMenuitem pada posisi tertentu.Void insert(String s, int pos)

Menyisipkan menu tertentu dengan teks pada posisitertentu.

Void insertSeparator(int index)Menyisipkan garis separator pada posisi tertentu.

boolean isPopupMenuVisible()Mendapatkan nilai true atau false mengenai

Page 52: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

52

kemungkinan popup.

boolean isSelected()Mendapatkan nilai true apabila menu tersebut dalam

posisi terpilih (highlighted).void remove(Component c)

Menghapus komponen c dari menu.Void remove(int pos)

Menghapus JMenuItem pada posisi tertentu padamenu.

void remove(JMenuItem item)Menghapus JMenuItem dari menu.

void removeAll()Mengapus semua menu item dari menu.

Void setDelay(int d)Memberikan waktu delay Sets the suggested delay

before the menu's PopupMenu is popped up or down.void setMenuLocation(int x, int y)

Menempatkan lokasi X dan Y dari pop menu.void setPopupMenuVisible(boolean b)

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

JPopupMenu

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

ConstructorJPopupMenu()

Membuat JPopupMenu.JPopupMenu(String label)

Membuat JPopupMenu dengan title.

Beberapa Method yang harus diketahuiJMenuItem add(Action a)

Menambahkan Action object.JMenuItem add(JMenuItem menuItem)

Menambahkan JMenuItem dan ditempatkan pada

Page 53: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

53

posisi terakhir menu.

JMenuItem add(String s)Menambahkan menu teks dan ditempatkan pada

posisi akhir menu.void addSeparator()

Menambahakan garis separator pada akhir menu.String getLabel()

Mendapatkan label popup menuvoid insert(Action a, int index)

Menyisipkan Action pada posisi tertentu.void insert(Component component, int index)

Inserts the specified component into the menu at agiven position.

boolean isVisible()Mendaptkan nilai true jika pada posisi tampil.

void remove(int pos)Menghapus komponen pada posisi tertentu.

void setLabel(String label)Memberikan label pada popup menu.

void setLocation(int x, int y)Menempatkan lokasi popup menu di koordinat X

dan Yvoid setPopupSize(Dimension d)

Memberikan ukuran berdasarkan dimensi.void setPopupSize(int width, int height)

Memberikan ukuran berdasarkan lebar dan tinggi.void setSelected(Component sel)

Menempatkan sel aktif pada komponen tertentu.void setVisible(boolean b)

Menampilkan popup menu jika parameter inputadalah true.

void show(Component invoker, int x, int y)Menampilkan popup menu berdasarkan koordinat X

dan Y.

JMenuItem

Memberikan komponen pada Jmenu dan JPopupMenu

ConstructorJMenuItem()

Membuat JMenuItem tanpa teks dan gambar ikon.

Page 54: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

54

JMenuItem(Action a)Membuat JMenuItem dengan Action.

JMenuItem(Icon icon)Membuat JMenuItem dengan gambar ikon.

JMenuItem(String text)Membuat JMenuItem dengan teks.

JMenuItem(String text, Icon icon)Membuat JMenuItem dengan teks dan gambar ikon.

JMenuItem(String text, int mnemonic)Membuat JMenuItem dengan teks dan shortcut keyboard mnemonic.

Beberapa Method yang harus diketahuivoid setEnabled(boolean b)

Enables or disables the menu item.Contoh Penggunaan :http://java.sun.com/docs/books/tutorial/uiswing/components/menu.html

JTextArea

JTextArea berfungsi sebagai teks editor dalam bentuk multiline, sedangkan dalampenggunaannya, untuk mengaktifkan scroll pada JTextArea menggunakan bantuanJScrollPane.

ConstructorJTextArea()

Membuat TextArea.JTextArea(Document doc)

Membuat JTextArea dengan model dokumen.JTextArea(Document doc, String text, int rows, int columns)

Membuat JTextArea dengan model dokumen, teks, baris dan kolom sesuaidengan parameter yang diberikan.JTextArea(int rows, int columns)

Membuat JTextArea dengan baris dan kolom yang sesuai dengan parameter input.JTextArea(String text)

Membuat JTextArea dengan teks didalamnya.JTextArea(String text, int rows, int columns)

Membuat JTextArea dengan teks didalamnya beserta baris dan kolom.

Page 55: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

55

JPopupMenu();JMenuItem("Copy");JMenuItem("Cut");JMenuItem("Paste");

JPopupMenu

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

JMenu(“Edit”)JMenuItem(“Copy”)JMenuItem(“Cut”)JMenuItem(“Paste”)

Jmenu(“Tentang”)

Menu Bar

JTextArea

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

Komponen 1

Komponen 2

Komponen 3

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)

o Buka File (JMenuItemmniFileBuka)o Simpan File (JMenuItemmniFileSimpan)o Keluar (JMenuItem mniKeluar)

- Edit (JMenu mniEdit)o Copy (JMenuItemmniCopy)o Cut (JMenuItem mniCut)o Paste (JMenuItem mniPaste)

- Tentang (JMenu mniTentang)Menu popup akan tampil apabila JtextArea di – click kanan dengan tampilan :- Copy (JMenuItem mniCopy)- Cut (JMenuItem mniCut)- Paste (JMenuItem mniPaste)

Rancangan tampilan menggunakan 2 (dua) panel dan box dengan modelVerticalBox. Yang dimaksud dengan Vertical Box adalah setiap komponen objekyang ditambahkan pada box berada pada posisi bawah (vertikal).

Gambar 7.2. VerticalBox

Page 56: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

56

Untuk lebih jelasnya adalah sebagai berikut :

Box1panel1 gridLayout(2,2)lblKategori cmbKategorilblDaerah cmbDaerah

panel2 gridLayout (3,1)lblJudultxtJudullblIsi

jscrollPane1txtArea

- 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 adalahpanel2

//program ke sepuluhimport 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"

Page 57: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

57

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

Page 58: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

58

mnEdit.add(mniCopy);mnEdit.add(mniCut);mnEdit.add(mniPaste);

bar.add(mnFile);bar.add(mnEdit);bar.add(mnTentang);

//jangan lupa gunakan setJMenuBarsetJMenuBar(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 popupif (e.getButton() == 3)

popmenu.show(e.getComponent(),e.getX(), e.getY()

);}

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

konten = getContentPane();

Page 59: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

59

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

}

Page 60: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

60

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 P

Page 61: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

61

BAB VIII

JInternalFrame

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

JInternalFrame

Berfungsi sebagai frame yang berada pada internal

ConstructorJInternalFrame()

Membuat JInternalFrame yang ukurannya tidak dapat berubah, tidak dapatditutup, tidak dapat menjadi ukuran maksimum dan tanpa title.JInternalFrame(String title)

Membuat JInternalFrame yang ukurannya tidak dapat berubah, tidak dapatditutup, dan tidak dapat menjadi ukuran maksimum. Tetapi mempunyai titelJInternalFrame(String title, boolean resizable)

Membuat JInternalFrame yang tidak dapat ditutup, dan tidak dapat menjadiukuran maksimum. Tetapi mempunyai titel dan dapat dirubah ukurannya.JInternalFrame(String title, boolean resizable, boolean closable)

Membuat JInternalFrame yang tidak dapat menjadi ukuran maksimum dantanpa gamba ikon. Tetapi mempunyai title, dapat dirubah ukurannya dan dapatditutup.JInternalFrame(String title, boolean resizable, boolean closable,boolean maximizable)

Membuat JInternalFrame dengan title,dapat ditutup, dapat dirubah ukurannyadan dapat dirubah menjadi ukuran maximal. Tetapi tidak mempunyai gambar ikon.JInternalFrame(String title, boolean resizable, boolean closable,boolean maximizable, boolean iconifiable)

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

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

Gambar 8.1 merupakan contoh penggunaan JInternalFrame dan Jslider. Denganrancangan 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

Page 62: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

62

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

left gridLayout(2,1)

Colors (jInterframe)sliders gridLayout(5,1)

R

G

B

colorCanvas

<kosong>

Gambar 8.1. InternalFrame

Page 63: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

63

Contoh Program :

//program ke sebelas//diambil dan edit dari www.sun.comimport 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();

//JSlidersJSlider 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 JPanelprivate void fillLeft(){

left.setLayout(new GridLayout(2, 1));left.add(Colors);Colors.show();

}

Page 64: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

64

//Color Jifprivate 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 Changepublic 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) {}

//Mainpublic static void main(String[] args){

AppSide as = new AppSide();as.fillColors();as.fillLeft();

}}

Page 65: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

65

Latihan 7

- Buatlah Satu Frame Dengan Beberapa Internal Frame Seperti Gambar DibawahIni

Gambar 8.2 JFrame dengan berapa JInternalFrame

Page 66: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

66

BAB IX

JTabbedPane

Contoh program pada Gambar 9.1 diambil dari http://java.sun.com mengenaipenggunaan Tab.

JTabbedPane

Komponen yang dapat digunakan oleh pengguna, dengan tampilan berdasarkan groupkomponen dalam bentuk tab. Tab tersebut dapat diberikan tampilan teks maupungambara ikon.

ConstructorJTabbedPane()

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

Membuat TabbedPane kosong dengan posisi sesuai dengan parameter inputJTabbedPane.TOP, JTabbedPane.BOTTOM, JTabbedPane.LEFT, atauJTabbedPane.RIGHT.JTabbedPane(int tabPlacement, int tabLayoutPolicy)

Membuat TabbedPane kosong dengan posisi sesuai dengan parameter inputJTabbedPane.TOP, JTabbedPane.BOTTOM, JTabbedPane.LEFT, atauJTabbedPane.RIGHT beserta model policy

Beberapa Method yang harus diketahuivoid addTab(String title, Component component)

Menambah tab dengan judul, dan tanpa gambar ikon.void addTab(String title, Icon icon,Component component)

Menambah tab dengan judul dan gambar Ikon besertakomponennya.

void addTab(String title, Icon icon,Component component, String tip)

Menambah tab dengan judul dan gambar Ikon besertakomponennya dan teks tip.

int getSelectedIndex()Mendapatkan index aktif dari tabbpane

int getTabCount()Mendapatkan jumlah tab dari tabbedpane.

String getTitleAt(int index)Mendapatkan teks judul sesuai index

void insertTab(String title, Icon icon,Component component, String tip, int index)

Page 67: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

67

Menyisipkan komponen pada index tertentu denganjudul teks, gambar Ikon, komponen, teks tip.

boolean isEnabledAt(int index)Memberikan nilai true apabila tab pada index tertentu

dalam posisi aktif.void remove(Component component)

Menghapus komponen JTabbedPane.void remove(int index)

Menghapus tab dan komponen didalamnya pada indextertentu.

void removeAll()Menghapus semua tab pada tabbedpane.

void removeTabAt(int index)Menghapus tab dan komponen didalamnya pada index

tertentu.void setEnabledAt(int index, boolean enabled)

Mengaktifkan atau menonaktifkan tab pada indextertentu.

void setSelectedIndex(int index)Memberikan status terpilih pada tab tertentu.

void setTitleAt(int index, String title)Memberikan judul teks pada index tertentu.

void setToolTipTextAt(int index, String toolTipText)Memberikan tek tooltip pada tab index tertentu.

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

Gambar 9.1 TabbedPane

Tab 0 Tab 1

Page 68: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

68

Gambar 9.1 mempunyai rancangan desain sebagai berikut :

tabbedPane”Tab1” ”Tab 2”

”Tab1”

Card1”Button1” ”Button 2” ”Button3”

”Tab 2”

”jTextField”

- tabbedpane, dengan model TabbedPane yang mempunyai dua tab, yaitu tab 0untuk 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 framepublic Dimension getPreferredSize() {

Dimension size =super.getPreferredSize();

Page 69: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

69

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

}}

Page 70: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

70

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 Kanan

Page 71: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

71

BAB X

MODEL DESAIN TAMPILAN

Pada meteri sebelumnya, kita sebenarnya sudah menyinggung sedikit mengenaipenggunaan layout. Pada pembahasan dibawah selanjutnya, akan dibahas seluruhmodel 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.

NORTHWEST CENTER EAST

SOUTH

FlowLayout

Layout FlowLayout mempunyai beberapa tampilan yaitu LEFT, CENTER, danRIGHT.

LEFT CENTER RIGHT

GridLayout

Penggunaan layout GridLayout dengan metode yang sama seperti saat kitamenggunakan 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 ;o Komponen 1, berada pada posisi baris pertama dan kolom pertamao Komponen 2, berada pada posisi baris pertama dan kolom keduao Komponen 3, berada pada posisi baris pertama dan kolom ketigao Komponen 4, berada pada posisi baris pertama dan kolom keempat.o Komponen 5, berada pada posisi baris kedua dan kolom pertama.o Komponen 6, berada pada posisi baris kedua dan kolom kedua.o Komponen 7, berada pada posisi baris kedua dan kolom ketiga.o Komponen 8, berada pada posisi baris kedua dan kolom keempat.

1 2 3 45 6 7 8

Page 72: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

72

BoxLayout

BoxLayout digunakan untuk membuat tampilan berdasarkan AXIS, yaitu :- X_AXIS

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

Gambar 10.1. BoxLayout X_AXIS

- Y_AXISSetiap 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 kanansesudah komponen sebelumnya.

Gambar 10.3. Box Horizontal

Page 73: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

73

- Vertical Box

Setiap komponen yang ditambahkan pada layout, akan diposisikan padakomponen sebelumnya

Gambar 10.4 .Box Horizontal

GridBagLayout

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

Kelebihan dari layout ini adalah dapat membuat menyatukan kolom dan baris untuksatu 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)

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

btn6 (2, 0 & 1)greatHeigh = 2,

GridBagConstraints.BOTH

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

Page 74: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

74

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

import 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 = 2gridbag.setConstraints(btn3, c);

Page 75: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

75

// btn4 gridx dengan posisi Relative (0 + 1)// btn4 gridy = 1// btn4 (1,1)c.gridx = GridBagConstraints.RELATIVE;c.gridy = 1;gridbag.setConstraints(btn4, c);

// btn5 (1,2)c.gridx = 1;c.gridy = 2;gridbag.setConstraints(btn5, c);

// btn6 posisi (2,0)c.gridx = 2;c.gridy = 0;c.weightx = 0.0;

// btn6 ketinggian 2 baris// kemudian digabungkan// btn6 (2,0) sampai dengan (2,1)c.gridheight = 2;c.fill = GridBagConstraints.BOTH;gridbag.setConstraints(btn6, c);

resize(400, 200);}

}

com.borland.jbcl.layout.* (XYLayout/jbcl.jar) dan Null Layout

Layout X dan Y, memiliki banyak model dari banyak pengembang dan salahsatunya adalah dari Borland dan Null Layout dari Java Standar.

Model ini menggunakan pixel sebagai posisi X dan Y. Begitu pula denganpanjang dan tinggi dari komponen.Contoh pada Gambar 10.6 dikembangkan dengan menggunakan XYLayout dan NullLayout :

Gambar 10.6. XYLayout

Page 76: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

76

Contoh program :

//program ke empatbelas A//Menggunakan XY Layoutimport javax.swing.*;import java.awt.*;import com.borland.jbcl.layout.*;import java.awt.event.*;

class frame1 extends JFrame{

XYLayout xYLayout1 = new XYLayout();JLabel lblNim = new JLabel();JLabel lblNama = new JLabel();JLabel lblSertifikat = new JLabel();JLabel lblJurusan = new JLabel();JLabel lblKampus = new JLabel();JTextField txtNim = new JTextField();JTextField txtNama = new JTextField();JCheckBox chSD = new JCheckBox();JCheckBox chSMP = new JCheckBox();JCheckBox chSMA = new JCheckBox();ButtonGroup grpJurusan = new ButtonGroup();JRadioButton rdTI = new JRadioButton();JRadioButton rdMI = new JRadioButton();JRadioButton rdAK = new JRadioButton();JRadioButton rdTK = new JRadioButton();String sKampus[] = {

"Cempaka Putih","Cileduk","Roxy","Salemba"};JComboBox cmbKampus = new JComboBox(sKampus);JButton cmdSave = new JButton();JButton cmdEnd = new JButton();

public frame1() {super("Universitas Budi Luhur");setSize(400,250);

setLocation(10,100);try {

jbInit();}catch(Exception ex) {

ex.printStackTrace();}

}

void jbInit() throws Exception {

lblNim.setText("Nim");this.getContentPane().setLayout(xYLayout1);lblNama.setText("Nama");lblSertifikat.setText("Sertifikat");lblJurusan.setText("Jurusan");lblKampus.setText("Kampus");txtNim.setText("");txtNama.setText("");

Page 77: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

77

chSD.setToolTipText("");chSD.setText("SD");chSMP.setText("SMP");chSMA.setText("SMA");rdTI.setText("TI");rdMI.setText("MI");rdAK.setText("AK");rdTK.setText("TK");

cmdSave.setText("Tampil");cmdEnd.setActionCommand("");cmdEnd.setText("Selesai");

grpJurusan.add(rdTI);grpJurusan.add(rdMI);grpJurusan.add(rdAK);grpJurusan.add(rdTK);

xYLayout1.setWidth(400);xYLayout1.setHeight(193);

this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.getContentPane().add(

lblNim, new XYConstraints(37, 26, 77, 18));this.getContentPane().add(

lblNama, new XYConstraints(36, 53, 72, 9));this.getContentPane().add(

lblJurusan, new XYConstraints(33, 98, 55, 13));this.getContentPane().add(

rdTI,new XYConstraints(114, 92, 42, 25));this.getContentPane().add(

rdMI, new XYConstraints(164, 93, 42, 20));this.getContentPane().add(

rdAK, new XYConstraints(222, 96, 42, 21));this.getContentPane().add(

rdTK, new XYConstraints(276, 96, 64, 19));this.getContentPane().add(

cmbKampus,new XYConstraints(118, 120, 145, 22));this.getContentPane().add(

lblKampus, new XYConstraints(32, 123, 67, 11));this.getContentPane().add(

cmdSave, new XYConstraints(29, 153, 114, 27));this.getContentPane().add(

cmdEnd, new XYConstraints(160, 152, 142, 29));this.getContentPane().add(

chSMA, new XYConstraints(221, 77, 56, 16)

Page 78: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

78

);this.getContentPane().add(

lblSertifikat, new XYConstraints(34, 77, 64, 14));this.getContentPane().add(

chSD, new XYConstraints(114, 77, 47, 16));this.getContentPane().add(

chSMP, new XYConstraints(161, 76, 58, 16));this.getContentPane().add(

txtNama, new XYConstraints(116, 50, 195, 23));this.getContentPane().add(

txtNim, new XYConstraints(117, 29, 70, 20));

}

}public class praktek62{

public static void main(String args[]){

new frame1().show();}

}

//program ke empatbelas B//Menggunakan Null Layoutimport javax.swing.*;import java.awt.*;import com.borland.jbcl.layout.*;import java.awt.event.*;

class Frame4 extends JFrame{

JLabel lblNim = new JLabel();JLabel lblNama = new JLabel();JLabel lblSertifikat = new JLabel();JLabel lblJurusan = new JLabel();JLabel lblKampus = new JLabel();JTextField txtNim = new JTextField();JTextField txtNama = new JTextField();JCheckBox chSD = new JCheckBox();JCheckBox chSMP = new JCheckBox();JCheckBox chSMA = new JCheckBox();ButtonGroup grpJurusan = new ButtonGroup();JRadioButton rdTI = new JRadioButton();JRadioButton rdMI = new JRadioButton();JRadioButton rdAK = new JRadioButton();JRadioButton rdTK = new JRadioButton();String sKampus[] = {

"Cempaka Putih","Cileduk","Roxy","Salemba"};JComboBox cmbKampus = new JComboBox(sKampus);

Page 79: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

79

JButton cmdSave = new JButton();JButton cmdEnd = new JButton();

public Frame4() {super("Universitas Budi Luhur");setSize(400,250);

setLocation(10,100);try {

jbInit();}catch(Exception ex) {

ex.printStackTrace();}

}

void jbInit() throws Exception {

lblNim.setText("Nim");lblNim.setBounds(new Rectangle(37, 26, 77, 18));this.getContentPane().setLayout(null);lblNama.setText("Nama");lblNama.setBounds(new Rectangle(36, 53, 27, 15));lblSertifikat.setText("Sertifikat");lblSertifikat.setBounds(

new Rectangle(34, 77, 64, 14));lblJurusan.setText("Jurusan");lblJurusan.setBounds(new Rectangle(33, 98, 55, 13));lblKampus.setText("Kampus");lblKampus.setBounds(new Rectangle(32, 123, 67, 11));txtNim.setText("");txtNim.setBounds(new Rectangle(117, 29, 70, 20));txtNama.setText("");txtNama.setBounds(new Rectangle(116, 50, 195, 23));chSD.setToolTipText("");chSD.setText("SD");chSD.setBounds(new Rectangle(114, 77, 47, 16));chSMP.setText("SMP");chSMP.setBounds(new Rectangle(161, 76, 58, 16));chSMA.setText("SMA");chSMA.setBounds(new Rectangle(221, 77, 56, 16));rdTI.setText("TI");rdTI.setBounds(new Rectangle(114, 92, 42, 25));rdMI.setText("MI");rdMI.setBounds(new Rectangle(164, 93, 42, 20));rdAK.setText("AK");rdAK.setBounds(new Rectangle(222, 96, 42, 21));rdTK.setText("TK");rdTK.setBounds(new Rectangle(276, 96, 64, 19));

cmdSave.setBounds(new Rectangle(29, 153, 114, 27));cmdSave.setText("Tampil");cmdEnd.setBounds(new Rectangle(160, 152, 142, 29));cmdEnd.setActionCommand("");cmdEnd.setText("Selesai");

cmbKampus.setBounds(

Page 80: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

80

new Rectangle(118, 120, 145, 22));grpJurusan.add(rdTI);grpJurusan.add(rdMI);grpJurusan.add(rdAK);grpJurusan.add(rdTK);

this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.getContentPane().add(lblNim, null);this.getContentPane().add(lblNama, null);this.getContentPane().add(lblJurusan, null);this.getContentPane().add(rdTI, null);this.getContentPane().add(rdMI, null);this.getContentPane().add(rdAK, null);this.getContentPane().add(rdTK, null);this.getContentPane().add(cmbKampus, null);this.getContentPane().add(lblKampus, null);this.getContentPane().add(cmdSave, null);this.getContentPane().add(cmdEnd, null);this.getContentPane().add(chSMA, null);this.getContentPane().add(lblSertifikat, null);this.getContentPane().add(chSD, null);this.getContentPane().add(chSMP, null);this.getContentPane().add(txtNama, null);this.getContentPane().add(txtNim, null);

}

}public class praktek62{

public static void main(String args[]){

new frame1().show();}

}

Borland JBuilder

Produk JBuilder merupakan perangkat lunak bantu untuk membuat aplikasi Javadalam bentuk IDE. JBuilder oleh pengembangnya, Borland (http://ww.borland.com),mempunyai 3 (tiga) versi, yaitu :- Enterprise Edition

Produk Enterprise Edition dilengkapi dengan pemrograman J2EE, WebServices dan Aplikasi yang terintegrasi dengan peningkatan performan (tuning).

- Develepor EditionVersi Developer Edition merupakan versi khusus untuk pengembang untukmembuat program, tetapi tidak selengkap versi Enterprise Edition.

- FoundationVersi Foundation dikhususkan untuk pemula dan dapat diunduh (download)gratis pada web site http://www.borland.com, dengan spesifikasi komputer, yaitupentium III dan minimal memori 256 Mb.

Page 81: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

81

Instalasi Borland JBuilder

Untuk menginstalasi aplikasi cukuplah mudah, lakukanlah beberapa langkahdibawah ini :

1. Unduhlah JBuilder versi terakhir pada http://www.borland.com, kemudianlakukan instalasi dengan meng-click pada file setup, yaitu fnd_install.exe danakan tampil layar seperti di bawah ini :

Gambar 10.7 Tahap persiapan instalasi program JBuilder

2. Setelah proses persiapan instalasi telah selesai akan tampil layar seperti padaGambar 10.8, kemudian tekan tombol next

Gambar 10.8 Tampilan Pengenalan JBuilder

Page 82: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

82

3. Pada layar tampilan pada gambar license pilihlah radio button ”I Accept TheTerms of The Licence Agreement”, kemudian tekan tombol next

Gambar 10.9 Tampilan Persetujuan Lisensi JBuilder

4. Pilihlah tempat direktori pada komputer untuk instalasi atau instalasi akanditempatkan pada direktori ”C:\Jbuilder”

Gambar 10.10 Penempatan direktori instalasi JBuilder

Page 83: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

83

5. Lakukan proses instalasi selanjutnya dengan menekan tombol Install

Gambar 10.11 Proses Akhir Persiapan Instalasi JBuilder

Gambar 10.12 Proses Instalasi Sedang Dilakukan

Page 84: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

84

Membuat Program Aplikasi GUI dengan menggunakan JBuilder

1. Aktifkan JBuilder pada start menu All Program Borland JBuilder XFoundationBorland JBuilder X Foundation

2. Untuk pertama kali menggunakan aplikasi JBuilder akan diminta untukmelakukan regristrasi atau pendaftaran atau memasukkan aktivasi file

3. Akan tampil layar seperti gambar dibawah ini :

Gambar 10.13 Tampilan Aplikasi Editor JBuilder

4. Buatlah Aplikasi Java dengan menggunakan menu File New, akan tampil layarseperti pada Gambar 10.14, kemudian pilihlah ikon Application

Gambar 10.14 Membuat Aplikasi GUI dengan Ikon Aplikasi

Page 85: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

85

5. Setelah tombol ikon Application telah terpilih, berilah nama project, contoh :Testing

Gambar 10.15 Langkah Wizard Pertama Dari Ke Tiga

6. Tekan tombol next pada proses Wizard ke dua

Gambar 10.16 Langkah Wizard Ke Dua

Page 86: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

86

7. Masukkan identitas pembuat aplikasi, lalu tekan lah tombol Finish

Gambar 10.17 Pengisian Identifikasi Pembuat Program

8. Masukkan nama aplikasi yang akan kita buat, Contoh : Testing

Gambar 10.18 Langkah Pertama Pemberian nama Class Application

Page 87: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

87

9. Masukkan nama JFrame, contoh : frmTesting

Gambar 10.19 Langkah Kedua Pemberian Nama Frame

10. Tekan tombol finish pada langkah ketiga

Gambar 10.20 Langkah Wizard Ke Tiga

Page 88: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

88

11. Layar Editor akan tampil seperti pada Gambar 10.21

Gambar 10.21 Layar Editor JBuilder Untuk Aplikasi Testing

12. Pilihlah tab atas dengan nama frmTesting kemudian pilih tab bawah dengantulisan Design

Gambar 10.22 Desain JFrame Pada JBuilder

Editor Program

Nama File Java

Desain GUI

ObjectTools

PropertiesDan Event

Layar GUI(Drag & Drop)

Run

Page 89: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

89

NETBEANS

Aplikasi bantu untuk pembuatan program Java ini telah didukung penuhpenggunaannya oleh SUN Microsystem dan gratis. Aplikasi Netbeans versi terbarudapat diunduh (download) pada website http://www.sun.com atau pada URLhttp://www.sun.com/download/index.jsp?cat=Java%20%26%20Technologies&tab=3&subcat=Java untuk versi terbaru.

Spesifikasi komputer yang dibutuhkan adalah komputer setingkat pentium III danminimal memori 256Mb (dianjurkan penulis 512 Mb).

Untuk mengenal lebih lanjut perkembangan Netbean, anda dapat melihat padawebsite http://www.netbeans.org

Instalasi Netbeans

Proses instalasi, sesudah mengunduh dari internet, dengan menjalankan aplikasisetup contoh : jdk-1_5_0_06-nb-4_1-win-ml.exe. Maka lanjutkan tahap berikutnyaseperti dibawah ini :

1. Persiapan Instalasi dan apabila telah tampil layar instalai wizard tekan tombolNext

Gambar 10.23 Persiapan Instalasi NetBeans

Gambar 10.24 Instalasi wizard NetBeans

Page 90: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

90

2. Pada layar lisensi penggunaan pilih radio button ”I accept The Terms In TheLicense Agreement” , kemudian tekan tombol Next.

Gambar 10.25 Kesepakatan Lisensi NetBeans

3. Isilah direktori instalasi, Contoh : C:\Program Files\netbeans-4.1, kemudian tekantombol Next

Gambar 10.26 Direktori Instalasi Netbeans

Page 91: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

91

4. Proses Instalasi sedang berjalan

Gambar 10.27 Instalasi NetBeans Sedang Berjalan

5. Setelah Proses Instalasi Tekan Tombol Finish

Gambar 10.28 Instalasi Netbeans Telah Selesai

Page 92: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

92

Membuat Aplikasi GUI Dengan Menggunakan NetBeans

1. Jalankan Aplikasi NetBeans dengan memilih Ikon pada Start All Program Netbeans Netbeans

Gambar 10.29 Tampilan Editor NetBeans

2. Buatlah aplikasi dengan memilih menu File New Project, kemudian pilihlahgeneral Java Aplication

Gambar 10.30 Aplikasi Java

Page 93: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

93

3. Masukkan nama project, contoh : Testing, kemudian tekan tombol Finish

Gambar 10.31 Nama Project NetBeans

Gambar 10.32 Layar Project Testing Pada NetBeans

Page 94: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

94

4. Pilihlah menu File New File, kemudian pilihlah Java GUI Form JFrameForm

Gambar 10.33 Membuat JFrame Pada NetBeans

5. Masukkan nama form, contoh : frmTesting

Gambar 10.34 Memberi Nama JFrame Pada NetBeans

Page 95: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

95

6. Layar tampilan editor project Testing

Gambar 10.35 Layar Editor frmTesting

7. Tambahkan perintah tambahan pada Main.javapublic class Main {

/** Creates a new instance of Main */public Main() {}

/*** @param args the command line arguments*/

public static void main(String[] args) {// TODO code application logic herefrmTesting frm = new frmTesting();frm.setVisible(true);

}

}

8. Tekan tombol alt+F6

Source Program Dan Desain

Project Explorer

InspectorLayar GUI

(Drag & Drop )Properties, Event

Dan Code

Pallete(Tools)

Page 96: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

96

Latihan 9

- Buatlah layar tampilan seperti pada Gambar 10.26 dengan menggunakan JBuilderdan NetBeans

Gambar 10.36 Latihan Soal 9

Page 97: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

97

BAB XI

Error Exception

Waktu paling ideal untuk mendeteksi adanya kesalahan pada program (error)adalah saat kompilasi program. Namun tidak semua kesalahan program dapatdideteksi pada saat itu, kesalahan justru terlihat program dijalankan atau digunakan.(tjava hal 219).

Sebagai contoh, untuk program yang dibuat pada saat mesin cetak atau printersedang on, program dapat melakukan pencetakan dengan baik saat kondisi itu.Namun apabila mesin cetak sedang dalam posisi off, maka program tidak dapatmelakukan pencetakan, kemudian mengirimkan sinyal kesalahan.

Apabila sinyal kesalahan tersebut tidak ditangkap maka program akan terhenti.Hal tersebut tidak akan terjadi apabila si pengembang program menangkap sinyaltersebut atau melewatinya.Contoh penggunaan lainnya adalah :- perbedaan variable- penggunaan file dan direktori- dan lain-lain.Pada Java standard, beberapa error yang harus diketahui adalah sebagai berikut :

- java.awt.AWTException- java.lang.ClassNotFoundException- java.lang.CloneNotSupportedException- java.io.IOException- java.io.EOFException- java.io.FileNotFoundException- java.io.InterruptedIOException- java.net.MalformedURLException- java.net.ProtocolException- java.net.SocketException- java.io.UTFDataFormatException- java.net.UnknownHostException- java.net.UnknownServiceException- java.lang.IllegalAccessException- java.lang.InstantiationException- java.lang.InterruptedException- java.lang.NoSuchMethodException- java.lang.RuntimeException- java.lang.ArithmeticException- java.lang.ArrayStoreException- java.lang.ClassCastException- java.util.EmptyStackException- java.lang.IllegalArgumentException- java.lang.IllegalThreadStateException

Page 98: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

98

- java.lang.NumberFormatException- java.lang.IllegalMonitorStateException- java.lang.IndexOutOfBoundsException- java.lang.ArrayIndexOutOfBoundsException- java.lang.StringIndexOutOfBoundsException- java.lang.NegativeArraySizeException- java.util.NoSuchElementException- java.lang.NullPointerException- java.lang.SecurityException

Adapun deskripsi dari masing-masing kesalahan atau error adalah

java.awt.AWTExceptionExeception yang berasal dari Java Abstract Window Toolkit (AWT).

java.lang.ClassNotFoundExceptionSaat pertama pembuatan class dan class tersebut tidak ditemukan.

java.lang.CloneNotSupportedExceptionSebagian besar objek dapat diduplikat (clone) dengan menggunakan method clone().Pesan akan timbul apabila objek tidak dapat diduplikasi.

java.io.IOExceptionMendeskripsikan secara umum dari pesan IO (Input/Output).

java.io.EOFExceptionPesan muncul saat pembacaan akhir dari file (end of file)

java.io.FileNotFoundExceptionFile tidak ditemukan saat pembacaan.

java.io.InterruptedIOExceptionPenggunaan interupsi IO tetapi gagal dilakukan

java.net.MalformedURLExceptionUniversal Resource Locator atau URL, yang lebih dikenal dengan Internet Addresstidak dapat dihubungi.

java.net.ProtocolExceptionTerdapat kesalahan pada saat penggunaan protocol di class socket

java.net.SocketExceptionPesan kesalahan saat penggunaan socket

java.io.UTFDataFormatException

Page 99: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

99

UTF-8 adalah model karakter Unicode yang dapat dirubah menjadi karakter ASCII,pesan kesalahan terjadi dikarenakan kegagalan saat melakukan transfer data.

java.net.UnknownHostExceptionThe host name didn’t match with any known hosts.

java.net.UnknownServiceExceptionServis pada koneksi jaringan tidak ada

java.lang.IllegalAccessExceptionGagal mengakses

java.lang.InstantiationExceptionPesan kesalahan saat membuat objek abstrak atau interface.

java.lang.InterruptedExceptionInterupsi terjadi saat melukan proses Thread

java.lang.NoSuchMethodExceptionPesan kesalahan ini jarang sekali terjadi, pesan ini akan tampil apabila terjadipenghapusan method dari class.

java.lang.RuntimeExceptionPada saat program dijalankan terdapat kesalahan dalam pemrograman (bug)

java.lang.ArithmeticExceptionPesan kesalahan dalam penggunaan angka kosong (zero)

java.lang.ArrayStoreExceptionGagal dalam penggunaan array.

java.lang.ClassCastExceptionTerdapat kesalahan dalam pengecekan class awal

java.util.EmptyStackExceptionSebuah objek pada class tersusun dalam posisi kosong

java.lang.IllegalArgumentExceptionKemungkinan disebabkan penggunaan yang salah dari library.

java.lang.IllegalThreadStateExceptionGagal menjalankan thread, dikarenakan thread yang sudah ada telah aktif.

java.lang.NumberFormatExceptionMengindikasikan perbedaan format angka.

Page 100: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

100

java.lang.IllegalMonitorStateExceptionGagal melakukan monitoring pada thread.

java.lang.IndexOutOfBoundsExceptionIndex melebihi dari yang seharusnya

java.lang.ArrayIndexOutOfBoundsExceptionPenggunaan array index yang lebih dari seharusnya.

java.lang.StringIndexOutOfBoundsExceptionPada String, tidak disarankan penggunaan kosong atau lebih dari panjang karakterstring.

java.lang.NegativeArraySizeExceptionTidak dapat mengalokasikan nilai array negative.

java.util.NoSuchElementExceptionEnumeration kosong.

java.lang.NullPointerExceptionPenggunaan null pada objek

penulisan Error Exception, diawali dengan try{} dengan minimal satu catch{}atau finnaly{} untuk menangkap kesalahan program.

try{// Kode Program Yang Akan//Diperkirakan Terjadi Error Exception

} catch(type1 id1) {// Penanganan Error Exception dari type1

} catch(type2 id2) {// Penanganan Error Exception dari type2} catch(type3 id3) {// Penanganan Error Exception dari type3}// dst

Contoh program :

//program kelima belaspublic class ExceptionMethods {

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

//sengaja dikasih errorthrow new Exception("Here's my Exception");

} catch(Exception e) {System.out.println("Caught Exception");System.out.println(

Page 101: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

101

"e.getMessage(): " + e.getMessage());System.out.println(

"e.toString(): " + e.toString());System.out.println("e.printStackTrace():");e.printStackTrace();

}}

}

Dengan hasil program :

Caught Exceptione.getMessage(): Here's my Exceptione.toString(): java.lang.Exception: Here's my Exceptione.printStackTrace(): java.lang.Exception: Here's my Exception atExceptionMethods.main

Penanganan kesalahan program pada modul dapat juga dilewati atau tidakdiindahkan dengan menggunakan perintah throw sehingga kesalahan programtersebut dapat ditangkap oleh modul pemanggil.

Apabila throw ditempatkan pada posisi main, hal itu mempunyai arti ”biarkanlahkesalahan tersebut ditangani oleh sistem”.Contoh program keenambelas menggunakan logika sebagai berikut :

Gambar X1.1 Throw Error

//program ke enambelaspublic class Rethrowing {public static void f() throws Exception {System.out.println(

"originating the exception in f()");throw new Exception("thrown from f()");

}public static void g() throws Throwable {try {

f();} catch(Exception e) {

System.out.println("Inside g(), e.printStackTrace()"

);e.printStackTrace();throw e;

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

throws Throwable {

main g() f()

Throw error dari fThrow error dari g

Page 102: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

102

try {g();

} catch(Exception e) {System.out.println(

"Caught in main, e.printStackTrace()");e.printStackTrace();

}}

}

Dengan hasil program :

originating the exception in f()Inside g(), e.printStackTrace()java.lang.Exception: thrown from f()at Rethrowing.f(Rethrowing.java:8)at Rethrowing.g(Rethrowing.java:12)at Rethrowing.main(Rethrowing.java:24)Caught in main, e.printStackTrace()java.lang.Exception: thrown from f()at Rethrowing.f(Rethrowing.java:8)at Rethrowing.g(Rethrowing.java:12)at Rethrowing.main(Rethrowing.java:24)

Untuk mengurangi beban memori pada saat pengecekan kesalahan programmenggunakan perintah finally.

Sebelum membahas penggunaan finally terlebih dahulu perhatikan program ke-tujuhbelas.

//program ke tujuhbelas//Tidak Menggunakan Finallyclass Switch {

boolean state = false;boolean read() { return state; }void on() { state = true; }void off() { state = false; }

}public class OnOffSwitch {static Switch sw = new Switch();public static void main(String args[]) {

try {sw.on();// code that may throw exceptions...

} catch(NullPointerException e) {System.out.println("NullPointerException");sw.off();

} catch(IllegalArgumentException e) {System.out.println("IOException");sw.off();

}}

}

Page 103: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

103

Bandingkan dengan program ke-delapan belas :

//program ke delapanbelas//mrnggunakan Finallyclass Switch2 {

boolean state = false;boolean read() { return state; }void on() { state = true; }void off() { state = false; }

}public class WithFinally {static Switch2 sw = new Switch2();public static void main(String args[]) {

try {sw.on();// code that may throw exceptions...

} catch(NullPointerException e) {System.out.println("NullPointerException");

} catch(IllegalArgumentException e) {System.out.println("IOException");

} finally {sw.off();

}}

}

Pada program ke-tujuhbelas pengecekan error dilakukan. Setiap pengecekanmemangil objek sw.off(). Sedangkan pada program k-e delapanbelas setelahpengecekan pemanggilan objek sw.off(), maka cukup sekali panggilan pada posisifinally.

Page 104: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

104

Latihan 10

1. Apakah penulisan program di bawah ini diperbolehkan ?try {

} finally {

}

2. Apakah penulisan program di bawah ini diperbolehkan dan tetap mendapatkanpesan kesalahan?

catch (Exception e) {

}

3. Apakah akan terjadi kesalahan pada program di bawah ini? Akankah programdapat terkompilasi dengan baik?

try {

} catch (Exception e) {

} catch (ArithmeticException a) {

}

Page 105: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

105

BAB XII

Thread

Pada pemrograman yang terstruktur, pengembang program melakukanpemanggilan modul secara berurutan. Maksudnya adalah jika ada ada tiga modul,yaitu modul A, modul B, dan modul C maka modul utama akan memanggil sesuaiurutannya.

Gambar 12.1 Single Thread

Modul utama memanggil modul A kemudian memanggil modul B, lalumemanggil modul C, yang berarti setelah modul A selesai diproses, maka modul Bakan diproses kemudian baru modul C.

Dengan kata lain modul B tidak akan diproses apabila modul A belum habisdiproses. Begitu pula modul C, modul tersebut tidak akan diproses apabila modul Adan B belum diproses.

Program ke-sembilanbelas adalah merupakan contoh program yang berjalansecara terstruktur atau single thread. Dimana setelah horse1 telah selesai di prosesmaka horse2 diproses, kemudian horse3 diproses.

//program ke sembilanbelas//single thread

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

raceTest horse1 = new raceTest();raceTest horse2 = new raceTest();raceTest horse3 = new raceTest();System.out.println("\nRace Starting ....\n");

System.out.println("Race started!\n\n");horse1.run("horse1");horse2.run("horse2");horse3.run("horse3");

}}class raceTest{

private int pause;private int stage=0;

Page 106: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

106

public void run(String name){try{

System.out.println(name + " started!");do{

System.out.println(" - stage: " + (stage+1)

);pause = (int) (Math.random() * 1000);stage++;

} while (stage<5);}catch(Exception exception){

System.out.println(exception.toString());}

System.out.println(name + " finished!");}

}

Hasil program :

Race Starting ....Race started!horse1 started!- stage: 1- stage: 2- stage: 3- stage: 4- stage: 5

horse1 finished!horse2 started!- stage: 1- stage: 2- stage: 3- stage: 4- stage: 5

horse2 finished!horse3 started!- stage: 1- stage: 2- stage: 3- stage: 4- stage: 5

horse3 finished!Finished executing

Page 107: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

107

Berbeda dengan dengan multithread, setiap modul dapat dijalankan pada waktuyang bersamaan. Sebagai ilustrasinya terlihat pada Gambar 12.2 di bawah ini.

Gambar 12.2 Multi Thread

Jika ada modul A, modul B dan modul C yang dipanggil oleh main, maka prosesyang terjadi adalah modul A akan diproses, kemudian tanpa menunggu proses modulA selesai, modul B dapat diproses, begitu pula dengan modul C, tanpa menungguproses modul A dan B selesai, modul C sudah dapat diproses.Dengan kata lain, multithread adalah :- Satu atau beberapa modul yang dijalankan secara bersamaan (multiproses),

dimana masing-masing modul tersebut dijalankan pada jalur masing-masing- Masing modul menjalankan kode atau script program secara berurutan- Multithread sering pula disebut dengan multiproses atau multitasking pada sistem

operasi.

Cara penulisan multithread ada dua macam, yaitu- extends Thread

o Multithread diimplementasikan sebagai objek dimana objek tersebutmempunyai Method run()

class MyThread extends Thread{public void run(){

// thread body of execution}

}

o Membuat thread:MyThread thr1 = new MyThread();

o Menjalankan thread:thr1.start();

o Atau Membuat Thread Kemudian Dijalankannew MyThread().start();

Page 108: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

108

- implements runnableo struktur

class MyThread implements Runnable{.....

public void run(){// thread body of execution

}}

o Membuat Objek

MyThread myObject = new MyThread();

o Membuat Thread Object:

Thread thr1 = new Thread( myObject );

o Cara menjalankan

thr1.start();

Program ke-duapuluh adalah program yang telah dimodifikasi dari program ke-sembilanbelas, dari yang menggunakan single thread menjadi program yangmenggunakan multithread

//program keduapuluh//multithreadpublic class race{

public static void main(String args[]){raceThread horse1 = new raceThread("horse1");raceThread horse2 = new raceThread("horse2");raceThread horse3 = new raceThread("horse3");System.out.println("\nRace Starting ....\n");

// Mulai Threadhorse1.start();horse2.start();horse3.start();System.out.println("Race started!\n\n");

}}class raceThread extends Thread{

private int pause;private int stage=0;public raceThread(String name){

super(name);}public void run(){

try{do {

System.out.println(

Page 109: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

109

this.getName()+ " - stage: " + (stage+1)

);pause = (int) (Math.random() * 1000);Thread.sleep(pause);stage++;

} while (stage<5);}catch(InterruptedException exception){

System.out.println(exception.toString());}System.out.println(getName() + " finished!");

}}

Program di atas menggunakan multithread yang berarti modul horse1 diproses,kemudian tanpa harus menunggu horse1 selesai diproses, maka horse2 dapat diproses,begitu pula horse3, sudah dapat diproses tanpa harus menunggu horse1 dan horse2selesai.Hasil program :

Race Starting ....horse1 - stage: 1horse2 - stage: 1Race started!horse3 - stage: 1horse1 - stage: 2horse1 - stage: 3horse3 - stage: 2horse2 - stage: 2horse3 - stage: 3horse1 - stage: 4horse2 - stage: 3horse1 - stage: 5horse3 - stage: 4horse3 - stage: 5horse1 finished!horse3 finished!horse2 - stage: 4horse2 - stage: 5horse2 finished!

Pada penggunaan multithread modul, objek dapat juga diberikan prioritas,sehingga objek yang diberikan prioritas akan diproses sesuai dengan prioritas yangdiberikan.Cara memberikan prioritas adalah sebagai berikut :

ThreadName.setPriority(intNumber)

Parameter intNumber pada setPriority(intNumber) dapat diberikan nilai dari 1 sampaidengan 10. Atau menggunakan variable system sebagai berikut :

MIN_PRIORITY = 1

Page 110: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

110

NORM_PRIORITY=5MAX_PRIORITY=10

Contoh program :

//program ke duapuluhsatu//programpriorityclass A extends Thread{

public void run(){System.out.println("Thread A started" );for(int i=1;i<=4;i++){

System.out.println("\t From ThreadA: i= "+i);}System.out.println("Exit from A");

}}

class B extends Thread{public void run(){

System.out.println("Thread B started");for(int j=1;j<=4;j++){

System.out.println("\t From ThreadB: j= "+j);}System.out.println("Exit from B");

}}

class C extends Thread{public void run(){System.out.println("Thread C started");for(int k=1;k<=4;k++){

System.out.println("\t From ThreadC: k= "+k);}System.out.println("Exit from C");

}}

class ThreadPriority{public static void main(String args[]){A threadA=new A();B threadB=new B();C threadC=new C();

threadA.setPriority(Thread.NORM_PRIORITY);threadB.setPriority(Thread.MIN_PRIORITY);threadC.setPriority(Thread.MAX_PRIORITY);

threadA.start();threadB.start();threadC.start();System.out.println("End of main thread");

}}

Page 111: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

111

account(shared object)

MyThread

HerThread

YourThread

Program ke-duapuluhsatu adalah program yang memberikan nilai prioritasnormal,yaitu 5, pada threadA, kemudian pada threadB diberikan nilai prioritasminimum, yaitu 1, dan pada threadC, diberikan nilai prioritas tertinggi, yaitu 10.

Sehingga pada saat threadA, threadB, dan threadC dijalankan, maka program Javaakan mendahulukan threadC untuk diproses, kemudian threadA dan threadB.

Penggunaan multithread dapat mengakibatkan bentrokan yang dikenal denganistilah Inconsistent State, yaitu apabila terdapat lebih dari satu thread yang melakukanproses pada data yang sama.

Untuk menghindari bentrokan tersebut, maka pada pemrograman Java disediakanfasilitas Synchronized (Locking The Object).

Contohnya adalah ketika ada objek yang bernama account digunakan olehbeberapa objek, yaitu MyThread, YourThread, dan HerThread, lihat Gambar 12.3.

Didalam objek account tersebut ada nilai yang diubah oleh ketiga objek yangmengakses objek account.

MyThread menambah nilai 1 sebanyak 10 kali dengan pemanggilan objeksebanyak 5 kali pada variabel balance di dalam objek account.

YourThread mengurangi nilai 1 sebanyak 10 kali pada variable balance di dalamobjek account dengan pemanggilan objek sebanyak 5 kali

Dan HerThread hanya menampilkan nilai variable balance sebanyak 10 kalididalam objek.

Dengan kata lain balance = 0 + (1 X 10 X 5) – (1 X 10 X 5), hasilnya adalah 0.Apabila objek tersebut tidak menggunakan synchronized, maka akan terjadiinconsistent state sehingga nilai tersebut belum tentu menghasilkan nilai 0.

Gambar 12.3 Shared Object

Page 112: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

112

Contoh program :

//program ke duapuluh duaclass InternetBankingSystem {

public static void main(String [] args ) {Account accountObject = new Account ();Thread t1 = new Thread(new MyThread(accountObject));Thread t2 = new Thread(

new YourThread(accountObject));

Thread t3 = new Thread(new HerThread(accountObject));t1.start();t2.start();t3.start();}

}class MyThread implements Runnable {

Account account;private int pause;private int i = 0;public MyThread (Account s) { account = s;}public void run() {try {

do {account.deposit();pause = (int) (Math.random() * 10);Thread.sleep(pause);i++;

} while (i<5);}catch(InterruptedException exception){

System.out.println(exception.toString());}}

}class YourThread implements Runnable {

Account account;private int pause;private int i = 0;public YourThread (Account s) { account = s;}public void run() {try {

do {account.withdraw();pause = (int) (Math.random() * 10);Thread.sleep(pause);i++;

} while (i<5);}catch(InterruptedException exception){

System.out.println(exception.toString());}}

}class HerThread implements Runnable {

Account account;private int pause;private int i = 0;

Page 113: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

113

public HerThread (Account s) { account = s; }public void run() {

try {do {

account.enquire();pause = (int) (Math.random() * 10);Thread.sleep(pause);i++;

} while(i<5);

}catch(InterruptedException exception){System.out.println(exception.toString());

}}

}

//shared objectclass Account {

int balance = 0;int i=0;public void deposit( ) {i=0;do {

balance += 1;i++;System.out.println(balance + " deposit " + i);

}while (i<10);}

public void withdraw( ) {i=0;do {

balance -= 1;i++;System.out.println(balance + " withdraw " + i );

}while (i<10);}

public void enquire( ) {i=0;do {

i++;System.out.println(balance + " Enquire " + i);

}while (i<10);}

}

Hasil program

1 deposit 12 deposit 23 deposit 34 deposit 45 deposit 5…

Page 114: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

114

7 Enquire 67 Enquire 77 Enquire 87 Enquire 97 Enquire 10Finished executing

Kemudian rubahlah program ke-duapuluhdua dengan tambahan synchronizedpada semua method di objek class account.

class Account {int balance = 0;int i=0;public synchronized void deposit( ) {i=0;do {

balance += 1;i++;System.out.println(balance + " deposit " + i);

}while (i<10);

}public synchronized void withdraw( ) {i=0;do {

balance -= 1;i++;System.out.println(balance + " withdraw " + i );

}while (i<10);}public synchronized void enquire( ) {i=0;do {

i++;System.out.println(balance + " Enquire " + i);

}while (i<10);}

}

Jalankan program dan lihat hasilnya :

1 deposit 12 deposit 23 deposit 34 deposit 45 deposit 5…-5 deposit 5-4 deposit 6-3 deposit 7-2 deposit 8-1 deposit 90 deposit 100 Enquire 10 Enquire 2

Page 115: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

115

0 Enquire 30 Enquire 40 Enquire 50 Enquire 60 Enquire 70 Enquire 80 Enquire 90 Enquire 10Finished executing

Page 116: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

116

Latihan 11

Buatlah Jam yang bergerak setiap detik seperti layar tampilan dibawah ini :

Gambar 12.4 Jam

Page 117: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

117

BAB XIII

AKSES FILE

Pada pemrograman Java standar, fasilitas untuk mengakses file menggunakanjava.io.*.

Untuk mengakses file pada sistem operasi Unix, pemisah antara direktori dan filemenggunakan tanda slash (”/”), contohnya /home/windu/test.txt. Yang harusdiperhatikan adalah Unix merupakan sistem operasi yang case sensitive, sehinggapenulisan perintah atau nama dibedakan antara huruf besar dan huruf kecil.

Pada sistem operasi Ms. Windows, pemisah antara direktori dan filemenggunakan tanda backslash (”\”), contohnya :c:\windu\test.txt, dimana penggunaanhuruf besar dan huruf kecil sama saja. Hanya saja pada pemrograman Java untukmembaca backslash menggunakan dua backslash (”\\”), contohnya c:\\windu\\test.txt.

Untuk membaca file terdapat 2 (dua) cara, yaitu sequential access dan randomaccess.

Sequential Access

Yang dimaksud dengan sequential access adalah pembacaan data secaraberurutan. Lebih jelasnya, untuk mendapatkan data/informasi, maka programmembuat koneksi stream dari source (file, memori, socket, dll), kemudian programakan membaca data/informasi tersebut secara berurutan/sequential.

Gambar 13.1 Sequential Access – Membaca Source

Begitu juga sebaliknya, program dapat mengirimkan data/informasi kepada target(file, memori, socket, dll) dengan membuat koneksi stream dan mengirimkannyasecara berurutan/sequential.

Gambar 13.2 Sequential Access – Menyimpan ke Target

Page 118: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

118

Cara pembacaan maupun penulisan terdapat dua cara, yaitu char stream dan bytestream.

Character stream adalah penggunaan 16 bit karakter untuk melakukanpembacaan dan penyimpanan data teks. Untuk membaca file secara character streammenggunakan objek FileReader dan untuk melakukan penulisannya menggunakanobjek FileWriter.

FileReader

ConstructorFileReader(File file)

Membuat objek FileReader baru, dengan parameter objek File untukpembacaan.FileReader(FileDescriptor fd)

Membuat objek FileReader baru dengan parameter FileDescriptor

FileReader(String fileName)Membuat objek FileReader baru dengan parameter string

Methods bawaan dari class java.io.InputStreamReaderclose, getEncoding, read, read, ready

Methods bawaan dari class java.io.Reader

mark, markSupported, read, reset, skip

FileWriter

ConstructorFileWriter(File file)

Membuat objek FileWriter dengan parameter objek File.FileWriter(File file, boolean append)

Membuat objek FileWriter dengan parameter File dan boolean append.FileWriter(FileDescriptor fd)

Membuat objek FileWriter dengan parameter objek filedescriptor.FileWriter(String fileName)

Membuat objek FileWriter dengan nama file.FileWriter(String fileName, boolean append)

Membuat objek FileWriter dengan parameter nama file dan boolean append.

Methods bawaan dari class java.io.OutputStreamWriterclose, flush, getEncoding, write, write, write

Methods bawaan dari class java.io.Writerwrite, write

Methods bawaan dari class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll,

Page 119: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

119

toString, wait, wait, wait

Sedangkan byte stream menggunakan 8 bit binari untuk melakukan pembacaandan penyimpanan data. Byte stream digunakan untuk mengirimkan data berupa file(teks, foto, audio dan bentuk file lainnya).

Di bawah ini terdapat beberapa program sequential access dengan rancanganseperti pada Gambar 13.3. Di sana terdapat file yang bernama farrago.txt yang akandibaca oleh program, kemudian progam akan menyimpannya dengan nama fileoutagain.txt pada direktori yang sama.

Gambar 13.3 Membaca File Farrago.txt dan Disimpan Ke outagain.txt

Contoh program character stream :

//program ke dua puluh tiga//character streamimport java.io.*;public class dofile {public static void main(String[] args)

throws IOException {

String txtmsg="";

try {FileReader in = new FileReader("farrago.txt");FileWriter out = new FileWriter("outagain.txt");int c;

while ((c = in.read()) != -1){out.write(c);txtmsg=txtmsg + (char) c;

}

in.close();out.close();} catch (FileNotFoundException e) {

System.err.println("CheckedIOTest: " + e);System.exit(-1);

} catch (IOException e) {System.err.println("CheckedIOTest: " + e);System.exit(-1);

}System.out.println(txtmsg );

}}

Farrago.txt program outagain.txt

Page 120: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

120

Contoh program byte stream :

//program kedua puluh empat//byte streamimport java.io.*;

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

throws IOException {

try {FileInputStream in = new FileInputStream(

"farrago.txt");

FileOutputStream out = new FileOutputStream("outagain.txt"

);

int bytelength=in.available();for (

int bytecount=0;bytecount<bytelength;bytecount++

){out.write(in.read());}in.close();out.close();

} catch (FileNotFoundException e) {System.err.println("CheckedIOTest: " + e);System.exit(-1);

} catch (IOException e) {System.err.println("CheckedIOTest: " + e);System.exit(-1);

}}

}

Page 121: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

121

Random Access

Random Access melakukan pembacaan atau penyimpanan dengan acak/nonsequential dengan penandaan berupa pointer.

Gambar 13.4 Perbedaan Random Access dan Sequential Access

Untuk melakukan pembacaan atau penyimpanan data menggunakan objekRandomAccessFile.

ConstructorRandomAccessFile(File file, String mode)

Membuat objek RandomAccessFile stream dengan parameter objek File danparameter mode “r” untuk membaca, “w” untuk menyimpan atau “rw” untukmembaca dan menulis.RandomAccessFile(String name, String mode)

Membuat objek RandomAccessFile stream dengan parameter “r” untukmembaca, “w” untuk menyimpan atau “rw” untuk membaca dan menulis.

Beberapa Method Yang perlu diketahuiVoid close()

Menutup aktivitas RandomAccessFile.long getFilePointer()

Mendapat nilai pointer.long length()

Mendapat nilai ukuran panjang.int read()

Membaca data byte.

int read(byte[] b)Membaca data byte kemudian dimasukkan kedalam array.

int read(byte[] b, int off, int len)Membaca panjang byte yang ditentukan parameter

kemudian disimpan ke dalam array.

Page 122: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

122

boolean readBoolean()Membaca tipe Boolean.

byte readByte()Membaca dengan model eight-bit.

char readChar()Membaca karakter Unicode.

double readDouble()Membaca tipe data double .

float readFloat()Membaca tipe data float.

int readInt()Membaca tipe data 32-bit integer.

String readLine()Membaca baris berikutnya.

long readLong()Membaca tipe data 64-bit integer.

short readShort()Membaca tipe data 16-bit angka.

String readUTF()Membaca tipe data string.

void seek(long pos)Mencari posisi pointer offset dari posisi awal dari file

sampai akhir.void write(byte[] b)

Menyimpan tipe data byte array.void write(byte[] b, int off, int len)

Menyimpan tipe data byte array dengan panjang tertentudengan posisi pointer.

void write(int b)Menyimpan tipe data byte dan integer.

void writeBoolean(boolean v)Mnyimpan tipe data boolean.

void writeByte(int v)Menyimpan dengan model one-byte value.

void writeBytes(String s)Menyimpan tipe data string.

void writeChar(int v)Menyimpan tipe data char.

void writeChars(String s)Menyimpan tipe data string.

void writeDouble(double v)

Page 123: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

123

Menyimpan tipe data double.

void writeFloat(float v)Menyimpan tipe data float.

void writeInt(int v)Menyimpan tipe data integer.

void writeLong(long v)Menyimpan tipe data long.

void writeShort(int v)Menyimpan tipe data short.

void writeUTF(String str)Menyimpan tipe data string dalam bentuk atau model

UTF-8

Contoh program :

//program ke duapuluh lima//random accessimport java.io.*;public class dorandomaccess {

public static void main(String[] args)throws IOException {

String txtmsg="";try {

RandomAccessFile in = new RandomAccessFile("farrago.txt", "r"

);RandomAccessFile out = new RandomAccessFile(

"outagain.txt", "rw");

long bytelength=in.length();for (

long bytecount=0;bytecount<bytelength;bytecount++)

{char fch=(char)in.read();out.write((byte) fch);txtmsg=txtmsg+fch;

}in.close();out.close();

} catch (FileNotFoundException e) {System.err.println("CheckedIOTest: " + e);System.exit(-1);

} catch (IOException e) {System.err.println("CheckedIOTest: " + e);

Page 124: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

124

System.exit(-1);}System.out.println(txtmsg );

}}

Selain penggunaan Sequential dan Random Access, melakukan akses file bisadengan menggunakan filter stream, yaitu dengan cara membuat olahan dari datastream kemudian dibentuk menjadi model yang lain.

Contoh filter stream, salah satunya adalah BufferedReader, yang salah satumethod, readline, merubah data stream menjadi perbaris.

ConstructorBufferedReader(Reader in)

Membuat buffer dari model karakter kebentuk standar buffer.BufferedReader(Reader in, int sz)

Membuat buffer dari model karakter kebentuk standar buffer dengan panjangtertentu.

Beberapa Method yang perlu diketahuiint read()

Membaca single karakterInt read(char[] cbuf, int off, int len)

Membaca berdasarkan panjang dan pointer yang ditentukan.

String readLine()Membaca perbaris dari teks.

Contoh program :

//program ke duapuluh enam//buffred readerimport java.io.*;public class dobuffer {

public static void main(String[] args)throws IOException {

String txtmsg="";try {

FileReader in = new FileReader("farrago.txt");FileWriter out = new FileWriter(

"outagain.txt");

BufferedReader br = new BufferedReader(in);String str;while((str=br.readLine())!=null) {

txtmsg=txtmsg+str+"\n";}

Page 125: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

125

out.write(txtmsg);in.close();out.close();} catch (FileNotFoundException e) {

System.err.println("CheckedIOTest: " + e);System.exit(-1);

} catch (IOException e) {System.err.println("CheckedIOTest: " + e);System.exit(-1);

}System.out.println(txtmsg);

}}

Page 126: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

126

Latihan 12

Rubahlah program sepuluh dengan akses file !!

Gambar 13.5 Gui dan akses file

Page 127: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

127

BAB XIV

Database (jdbc & mysql)

Pengertian dari database adalah sekumpulan informasi yang terorganisir sehinggamudah diakses dan kelola. Dimana database tersebut dapat menyimpan informasidengan tipe data String, Numerik, Date, dan tipe data lainnya. Untuk melakukanperintah manipulasi data, user dapat menggunakan bahasa Structure Query Language(SQL).

Berbagai macam database yang telah ada dalam dunia aplikasi adalah sepertiOracle, DB2, MySql, dan lain-lain. Pada buku ini, yang dibahas adalah bagaimanabahasa pemrograman Java dapat berinteraksi dengan database MySql denganmenggunakan database connector (jdbc).

Sebelum lebih jauh membahas mengenai program Java dan konektor, lebih dulukita mengenal sedikit mengenai database. Untuk lebih lengkapnya kita dapat merujukpada mata kuliah sistem database.Tipe data yang umum pada database adalah :String

Contoh : Char, VarcharNumeric

Contoh : Byte, Integer, Single, Double, FloatDate

Contoh : Date, TimeCLOB (Character Large Object)/TEXTBLOB (Binary Large Object)

FILE : Suara, Gambar, Video, Dan Lain

Terdapat penggunaan relasi sebagai penghubung antara satu tabel degan tabellainnya beserta model-model key pada tabel di database. Model-model key tersebutadalah :Primary Key

Juga Disebut Primary Keyword berfungsi sebagai Field Kunci dari Tabel danBersifat Unique (Tidak Ada Duplikasi), Contoh : NIM pada Mahasiswa AtauNomor Rekening Pada Aplikasi Perbank-an

Secondary KeyField Kunci Dari Tabel Setelah Primary Key. Contoh : Nomor ATM padaPerbank-an Dapat Digunakan Sebagai Secondary Key Setelah Nomor Rekening

Candidat KeyKemungkinan Pemakaian Field Sebagai Kunci Dari Sebuah Tabel

Foreign KeyMerupakan Field Dari Tabel, Tapi Field Tersebut Merupakan Primary Key PadaTabel Lainnya

Page 128: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

128

Gambar 14.1 Relasi Tabel

Pada Gambar 14.2 terdapat 2 (dua) table yang berhubungan, yaitu tabel nasabahdan tabel transaksi. Pada tabel Nasabah yang menjadi Primary Key adalah Norek dansebagai Secondary Key adalah NoATM. Sedangkan pada table Transaksi terdapatPrimary Key yaitu NoTrans dan Foreign Key hasil dari relasi dengan table nasabah,yaitu NoRek.

Penggunaan query sebagai sarana untuk berinteraksi dengan database, secarastandar, dapat melakukan manipulasi data seperti membuat tabel (create), mengubahtabel (alter), menambah data (Insert), merubah data (update/edit), menghapus data(delete), membaca data (select) dan fasilitas lainnya.Membuat table mahasiswa

Create Table <Nama Tabel> (<Nama Field> <Tipe Data>(<Panjang>), [<Model Key> <Nama Field>], …)Contoh :CREATE TABLE mahasiswa (

Nim varchar(10) NOT NULL default '',Nama varchar(50) default NULL,Alamat varchar(200) default NULL,Umur int(2) default 0,Lulus int(2) default 0,PRIMARY KEY (`Nim`) )

Page 129: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

129

Gambar 14.2 Tabel mahasiswa

Menghapus tabel mahasiswaDrop Table <Nama Tabel>

Contoh :drop table mahasiswa

Merubah tabel mahasiswaAlter Table <Nama Tabel> <Add|Modify|Change|Drop><Nama Field> [<Tipe Data> (<panjang>)]

Contoh :Merubah nama field lulus menjadi kelulusan

alter table mahasiswaChange Lulus Kelulusan int(1)

Menghapus field kelulusan

alter table mahasiswa Drop Kelulusan

Menambah field lulus dengan tipe data integer dengan ukuran panjang 2

alter table mahasiswa Add Lulus int(2)

Merubah ukuran panjang dari field lulus dengan ukuran panjang 1

alter table mahasiswa Modify Lulus int(1)

Menambah data pada tabel mahasiswaInsert Into <Nama Tabel> [(Nama Field)] Values(<Ekspresi>)

Contoh :Menambah data pada tabel mahasiswa, dengan nilai masing-masing field

adalah Nim = 9511500134, Nama = Windu Gata, Alamat = Jl.Perdagangan V/21, Umur = 28, dan Lulus = 1

Page 130: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

130

Insert Into mahasiswa values (“9511500134”,“Windu Gata”, “Jl. Perdagangan V/21”, 28,1)

Menambah data pada tabel mahasiswa, dengan nilai Nim = 9511500134dan Nama = Windu Gata

Insert Into mahasiswa (nim, nama) values(“9511500134”, “Windu Gata”)

Mengubah data pada tabel mahasiswaUpdate <Nama Tabel> Set <Nama Field=Ekspresi> [Where<Definisi>]

Contoh :Mengubah seluruh data pada tabel mahasiswa dengan nilai lulus = 0

Update mahasiswa Set lulus=0

Mengubah tabel mahasiswa dengan nilai nama=Windu Gata, SKOM danalamat=Jl. Perdagangan V/21, Bintaro. Dimana Nim yang di filteradalah 9511500134

Update mahasiswa Set nama=“Windu Gata, SKOM”,alamat=“Jl. Perdagangan V/21, Bintaro” Wherenim=“9511500134”

Menghapus data pada tabel mahasiswaDelete From <Nama Tabel> [where <Ekspresi>]

Contoh :Menghapus seluruh data pada tabel mahasiswa

Delete From mahasiswa

Menghapus data pada tabel mahasiswa dimana Nim yang difilter adalah9511500134

Delete From mahasiswa Where Nim=“9511500134”

Page 131: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

131

Membaca data pada tabel mahasiswaSelect <*/Nama Field> From <Nama Tabel> [Where<Definisi>]Contoh :

Membaca data pada field Nim, Nama dari tabel mahasiswa

Select Nim, Nama From mahasiswa

Membaca data pada field Nim, Nama dari tabel mahasiswa dimana Nim-nya adalah 9511500134

Select Nim, Nama From mahasiswa Where Nim = ‘9511500134’

Membaca data pada keseluruhan field dari tabel mahasiswa

Select * from mahasiswa

Setelah mengenal sedikit mengenai database, kemudian kita akan mengenalidatabase yang akan digunakan, yaitu MySql.

Penulis memilih database MySql yang dijadikan contoh penggunaan,dikarenakan :Opensource Database, untuk penelitian dan pengembangan bukan untuk

bisnis perusahaan, gratis, tetapi handal.Mendukung perintah SQL, koneksi Java atau JDBC, dan koneksi ODBCMulti OS/Platform (Unix, Windows & Mac), menyediakan instalasi di sistem

operasi apapun.Multi Thread Database24 H X 7 D, dapat diaktifkan 24 jam dan 7 hari tanpa mati.2Gb – 8Tr, dapat menyimpan data dalam hitungan TeraByte tergantung

hardware dan system operasi.W2K Compliance, tidak ada bug tahun 2000Mendukung Relasi Database, Procedure & Function (MySql 4.0 atau Mysql

Terbaru)SubQuery dan View (MySql 5.0 atau MySql Terbaru)User Privileges, setiap pengguna mempunyai hak akses masing-masing.Banyak aplikasi Bantu yang disediakan oleh pengembang lepas maupun dari

mysql.com itu sendiri

Page 132: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

132

Model Model variabel dari database mysql :Numeric

String

Date

Page 133: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

133

Koneksi dari bahasa pemrograman Java ke database menggunakan konektorbernama JDBC. JDBC ini bukanlah singkatan, melainkan trade mark atau hakpaten yang dikenalkan pada tahun 1997 oleh perusahaan Sun Microsystem.

JDBC ini dapat digunakan dengan koneksi two tier atau three tier. Yangdimaksud dengan two tier, yaitu program langsung mengakses ke database tanpaperantara lainnya (lihat Gambar 14.3).

Gambar 14.3 JDBC-Two Tier

sedangkan three tier adalah program dapat mengakses data melalui perantara ataumidle party atau third party (lihat Gambar 14.4).

Gambar 14.4 JDBC-Three Tier

Cara mendapatkan driver JDBC, dapat men-download pada masing-masingwebsite perusahaan yang membangun database yang kita gunakan atau buka websitehttp://servlet.java.sun.com/products/jdbc/drivers

Gambar 14.5 JDBC Driver

Page 134: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

134

Untuk database MySql, download file mysql-connector-java-<versi>-ga.zip dariwebsite www.mysql.com.

Ekstrak zip tersebut, kemudian terdapat file mysql-connector-java-<jar>-ga-bin.jar, pada file zip, kemudian copy file mysql-connector-java-<jar>-ga-bin.jar padadirektori yang sama denga program Java yang dibuat atau buatlah PATH yangdiarahkan ke direktori mysql-connector-java-<jar>-ga-bin.jar berada.

Tambahkan pada atas program import java.sql.*. Pada java.sql.*, banyak objekyang disediakan oleh bahasa pemrograman Java sebagai fasilitas untuk manipulasidata.

Cara melakukan koneksi tidak boleh menggunakan import <nama driver>,melainkan seperti contoh program di bawah ini :

try{Class.forName("com.mysql.jdbc.Driver");Connection Conn =DriverManager.getConnection("jdbc:mysql://<nama_komputer>/<nama_database>?user=<nama_user>&password=<kode>"

);Statement Stmt = Conn.createStatement();ResultSet RS = Stmt.executeQuery(

"SELECT * from <Nama_Table>”);

System.out.println(”Koneksi Berhasil Anda Lakukan”

);} catch (Exception ieo) {

System.out.println(”Error” + ieo.toString());}

java.sql.StatementObjek yang digunakan untuk mengeksekusi perintah SQL. Dan menerima hasil

dari eksekusi tersebut.

Beberapa Method yang harus diketahuivoid addBatch(String sql)

Menambahkan perintah SQL kedalam list of commands.void cancel()

Membatalkan perintah SQL jika DBMS dan drivermengagalkan perintah.

void clearBatch()Menghapus perintah Statement object's pada current

list of SQL commands.

Page 135: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

135

void clearWarnings()Menghapus semua laporan peringatan dari Statement

object.void close()

Menutup Statement object and JDBC.boolean execute(String sql)

Mengeksekusi perintah SQL, yang dapat terdiri daribeberapa perintah.

int[] executeBatch()Mengeksekusi seluruh perintah pada list batch dan jika

semua perintah berhasil dijalankan akan memberikan nilaiberupa integer dalam bentuk array.

ResultSet executeQuery(String sql)Mengeksekusi perintah SQL dalam bentuk tunggal atau

single ResultSet object.Connection getConnection()

Menndapatkan Connection object dari Statementobject.

int getFetchDirection()Menarik data dari table yang dapat digunakan oleh

resultsets.int getFetchSize()

Mendapatkan jumlah baris dari table database untukpenggunaan ResultSet.

Int getQueryTimeout()Mendapatkan nilai timeout dari query Statement object

ResultSet getResultSet()Mendapatkan hasil proses untuk penggunaan objek

ResultSet.SQLWarning getWarnings()

Mendapatkan laporan peringatan Statement object.void setCursorName(String name)

Mendapatkan nama kursor.void setQueryTimeout(int seconds)

Mengatur waktu dalam hitungan detik untukpengaksesan.

java.sql.ResultSet

Berbentuk table dari hasil perintah yang dilakukan oleh java.sql.Statement kepadadatabase. ResultSet ini mengatur cursor pointer pada baris data. Dapat menempatkankursor sebelum baris, baris, dan akhir baris. Objek memungkin pemuktahiran data,penambahan data dan penghapusan data pada tabel di database.

Page 136: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

136

Beberapa Method yang harus diketahuiboolean absolute(int row)

Menempatkan kursor pada baris yang disesuaikanparameter

void afterLast()Menempatkan kursor setelah akhir baris table.

void beforeFirst()Menempatkan kursor sebelum awal baris table.

void cancelRowUpdates()Membatalkan perubahan baris.

void clearWarnings()Menghapus laporan peringatan.

void close()Menutup koneksi ResultSet dan JDBC

void deleteRow()Menghapus baris pada kursor aktif.

int findColumn(String columnName)Mencari kolom tertentu.

boolean first()Menempatkan kursor pada posisi awal baris table.

InputStream getAsciiStream(int columnIndex)Mendapatkan tipe data ascii dengan parameter index

kolom.

InputStream getAsciiStream(String columnName)Mendapatkan tipe data ascii dengan parameter nama

kolom.BigDecimal getBigDecimal(int columnIndex)

Mendapatkan tipe data java.math.BigDecimal denganparameter indeks kolom.

BigDecimal getBigDecimal(String columnName)Mendapatkan tipe data java.math.BigDecimal dengan

parameter nama kolom.

InputStream getBinaryStream(int columnIndex)Mendapatkan tipe data BinaryStream dengan parameter

indeks kolom.InputStream getBinaryStream(String columnName)

Mendapatkan tipe data BinaryStream dengan parameternama kolom.

Blob getBlob(int i)Mendapatkan tipe data BLOB dengan parameter indeks

kolom.

Page 137: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

137

Blob getBlob(String colName)Mendapatkan tipe data BLOB dengan parameter nama

kolom.boolean getBoolean(int columnIndex)

Mendapatkan tipe data boolen dengan parameter indekskolom.

boolean getBoolean(String columnName)Mendapatkan tipe data Boolean dengan parameter nama

kolom.byte getByte(int columnIndex)

Mendapatkan tipe data byte dengan parameter indekskolom.

byte getByte(String columnName)Mendapatkan tipe data byte dengan parameter nama

kolom.byte[] getBytes(int columnIndex)

Mendapatkan tipe data byte dengan bentuk array denganparameter indeks kolom.

byte[] getBytes(String columnName)Mendapatkan tipe data byte dalam bentuk array dengan

parameter nama kolom.Reader getCharacterStream(int columnIndex)

Mendapatkan data berupa karakter dalam bentuk streamdengan parameter indeks kolom.

Reader getCharacterStream(String columnName)Mendapatkan data berupa karaktater dalam bentuk

stream dengan parameter nama kolom.Clob getClob(int i)

Mendapatkan tipe data CLOB pada baris aktif.Clob getClob(String colName)

Mendapatkan tipe data CLOB dengan parameter namakolom.

Date getDate(int columnIndex)Mendapatkan tipe data date dengan parameter indeks

kolom.Date getDate(String columnName)

Mendapatkan tipe data date dengan parameter namakolom.

double getDouble(int columnIndex)Mendapatkan tipe data double dengan parameter indeks

kolom.double getDouble(String columnName)

Mendapatkan tipe data double dengan parameter nama

Page 138: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

138

kolom.

float getFloat(int columnIndex)Mendapatkan tipe data float dengan parameter indeks

kolom.float getFloat(String columnName)

Mendapatkan tipe data float dengan parameter namakolom.

int getInt(int columnIndex)Mendapatkan tipe data integer dengan parameter indeks

kolom.int getInt(String columnName)

Mendapatkan tipe data integer dengan parameter namakolom.

long getLong(int columnIndex)Mendapatkan tipe data long degan parameter indeks

kolom.long getLong(String columnName)

Mendapatkan tipe data kolom dengan parameter namakolom..

int getRow()Mendapatkan nilai baris aktif.

short getShort(int columnIndex)Mendapatkan tipe data short dengan parameter indeks

kolom.short getShort(String columnName)

Mendapatkan tipe data short dengan parameter namakolom.

String getString(int columnIndex)Mendapatkan tipe data string dengan parameter indeks

kolom.String getString(String columnName)

Mendapatkan tipe data string dengan parameter namakolom.

Time getTime(int columnIndex)Mendapatkan tipe data time dengan parameter indeks

kolom.Time getTime(String columnName)

Mendapatkan tipe data time dengan parameter namakolom.

SQLWarning getWarnings()Mendapatkan laporan peringatan.

void insertRow()

Page 139: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

139

Menambah baris kolom.

boolean isAfterLast()Mendapatkan nilai true jika posisi kursor sesudah akhir

baris tableboolean isBeforeFirst()

Mendapatkan nilai true jika posisi kursor sebelum awalbaris table.

boolean isFirst()Mendapat nilai true jika posisi kursor pada awal baris

table.boolean isLast()

Mendapatkan nilai true jika posisi kursor pada akhirbaris.

boolean last()Menempatkan posisi kursor pada akhir baris table.

boolean next()Menempatkan kursor pada baris berikutnya.

boolean previous()Menempatkan kursor sebelum kursor aktif.

void refreshRow()Memanggil ulang data pada baris table.

Boolean rowDeleted()Mendapatkan nilai true apabila baris data telah terhapus.

Boolean rowInserted()Mendapatkan nilai true apabila baris data telah terisi.

boolean rowUpdated()Mendapatkan nilai true apabila baris data telah berupah.

Void updateAsciiStream(int columnIndex, InputStream x,int length)

Mengubah Ascii stream dengan parameter indekskolom, Inputstream dan panjangnya.

void updateAsciiStream(String columnName,InputStream x, int length)

Mengubah Ascii stream dengan parameter nama kolom,Input Stream dan panjan stream.

void updateBigDecimal(int columnIndex, BigDecimal x)Mengubah data dengan parameter indeks kolom dan

nilai java.math.BigDecimal value.void updateBigDecimal(String columnName, BigDecimal x)

Mengubah BigDecimal dengan parameter nama kolomdan nilai java.sql.BigDecimal value.

void updateBinaryStream(int columnIndex, InputStream x,

Page 140: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

140

int length)Mengubah binary stream dengan parameter indeks

kolom, InputStream dan panjang stream.void updateBinaryStream(String columnName,

InputStream x, int length)Mengubah binary stream dengan nama kolom,

InputStream, dan panjang stream.void updateBlob(int columnIndex, Blob x)

Mengubah BLOB dengan parameter indeks kolom dannilai BLOB.

void updateBlob(String columnName, Blob x)Mengubah BLOB dengan parameter nama kolom dan

nilai java.sql.Blob value.void updateBoolean(int columnIndex, boolean x)

Mengubah boolen dengan parameter indeks kolom dannilai Boolean.

void updateBoolean(String columnName, boolean x)Mengubah Boolean dengan parameter nama kolom dan

nilai Boolean.void updateByte(int columnIndex, byte x)

Mengubah byte dengan parameter indeks kolom dannilai byte.

void updateByte(String columnName, byte x)Mengubah byte dengan parameter nama kolom dan nilai

byte.

void updateCharacterStream(int columnIndex, Reader x,int length)

Mengubah character stream dengan parameter indekskolom, Reader, dan panjang stream.

void updateCharacterStream(String columnName,Reader reader, int length)

Mengubah character stream dengan parameter namakolom, reader dan panjang stream.

void updateClob(int columnIndex, Clob x)mengubah CLOB dengan parameter indeks kolom dan

nilai a java.sql.Clob.void updateClob(String columnName, Clob x)

Mengubah CLOB dengan parameter nama kolom dannilai java.sql.Clob.

void updateDate(int columnIndex, Date x)Mengubah date dengan parameter indeks kolom dan

nilai java.sql.Date.void updateDate(String columnName, Date x)

Page 141: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

141

Merubah date dengan parameter nama kolom dan nilaijava.sql.Date.

void updateDouble(int columnIndex, double x)Mengubah Double dengan parameter indeks kolom dan

nilai double.void updateDouble(String columnName, double x)

Mengubah double dengan parameter nama kolom dannilai double.

void updateFloat(int columnIndex, float x)Mengubah Float dengan parameter indeks kolom dan

nilai float.void updateFloat(String columnName, float x)

Mengubah nilai float dengan parameter nama kolom dannilai float.

void updateInt(int columnIndex, int x)Mengubah nilai integer dengan parameter indeks kolom

dan nilai integer.void updateInt(String columnName, int x)

Mengubah integer dengan parameter nama kolom dannilai integer.

void updateLong(int columnIndex, long x)Mengubah long dengan parameter indeks kolom dan

nilai long.

void updateLong(String columnName, long x)Mengubah Long dengan parameter nama kolom dan

nilai long.void updateNull(int columnIndex)

Memberikan nilai null dengan parameter indeks kolom.

void updateNull(String columnName)Memberikan nilai null dengan parameter nama kolom

dengan parameter nama kolom.void updateRow()

Menyimpan perubahan pada baris data table.

void updateShort(int columnIndex, short x)Merubah short dengan parameter indeks kolom dan nilai

short.void updateShort(String columnName, short x)

Merubah short dengan parameter nama kolom dan nilaishort.

void updateString(int columnIndex, String x)Mengubah String dengan parameter indeks kolom dan

nilai string.

Page 142: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

142

void updateString(String columnName, String x)Merubah string dengan parameter nama kolom dan nilai

string.void updateTime(int columnIndex, Time x)

Merubah time dengan parameter indeks kolom dan nilaijava.sql.Time.

void updateTime(String columnName, Time x)Merubah time dengan parameter indeks kolom dan nilai

java.sql.Time.boolean wasNull()

Memberikan nilai true jika hasil query adalah null.

Cara penggunaan method untuk memanipulasi data java.sql.ResultSet, adalahsebagai berikut :- Pindah ke Record berikutnya

RS.next();

- Pindah ke Record sebelumnya

RS.previous();

- Pindah ke Record pertama

RS.first();

- Pindah ke Record terakhir

RS.last();

- Menambah data

RS.moveToInsertRow();RS.updateString ("NIM", "9511500134");RS.updateString ("NAMA", “Windu Gata");RS.updateInt("UMUR", 27);RS.updateInt("LULUS", 0);RS.insertRow();RS.moveToCurrentRow();

- Mengubah data

RS.updateString ("NAMA", "Windu Gata");RS.updateString ("ALAMAT", "Jl.Perdagangan V/21 Bintaro");RS.updateInt("UMUR", 28);RS.updateInt("LULUS", 1);RS.updateRow();

Page 143: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

143

- Menghapus data

RS.deleteRow();

- Melihat data

System.out.println(RS.getString("NIM") + " " + RS.getString("NAMA")+ " " + RS.getInt("UMUR")+ " " + RS.getInt("LULUS")

);

Apabila terdapat struktur tabel pada database mysql dengan nama tabelmahasiswa seperti pada Gambar 14.6 dan dengan tampilan program pada Gambar14.7.

Gambar 14.6. Struktur tabel mahasiswa

Gambar 14.7 Tampilan Gui dengan menggunakan database

Page 144: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

144

Contoh Program :

//program ke duapuluh delapan//penggunaan databaseimport javax.swing.*;import javax.swing.event.*;import java.awt.*;import java.awt.event.*;import java.sql.*;

class frame23 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();private JLabel lblAlamat = new JLabel();private JTextField txtAlamat = new JTextField();

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();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 JPanel panel4 = new JPanel();private JButton btnFirst = new JButton("|<<");private JButton btnPrev = new JButton("<<");private JButton btnNext = new JButton(">>");private JButton btnLast = new JButton(">>|");

private JPanel panel5 = new JPanel();private JButton btnAdd = new JButton("Tambah");private JButton btnSave = new JButton("Simpan");private JButton btnFilter = new JButton("Filter");private JButton btnDelete = new JButton("Hapus");private JButton btnExit = new JButton("Keluar");

Page 145: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

145

String dbUrl ="jdbc:mysql://localhost/mahasiswa?user=root&password=";

private Statement st;ResultSet RS;

frame23(){super("Universitas Budi Luhur");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setLocation(10,100);this.setSize(450,300);

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

FlowLayout.CENTER)

);

lblNim.setText("NIM");lblNama.setText("NAMA");lblAlamat.setText("ALAMAT");lblSertifikat.setText("Sertifikat");lblJurusan.setText("Jurusan");lblKampus.setText("Kampus");

panel1.setLayout(new GridLayout(7,2));panel1.add(lblNim);panel1.add(txtNim);panel1.add(lblNama);panel1.add(txtNama);panel1.add(lblAlamat);panel1.add(txtAlamat);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);

cmbKampus.setSelectedIndex(1);cmbKampus.setMaximumRowCount(3);panel1.add(lblKampus);

Page 146: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

146

panel1.add(cmbKampus);

panel4.setLayout(new GridLayout(1,4));panel4.add(btnFirst);panel4.add(btnPrev);panel4.add(btnNext);panel4.add(btnLast);

panel5.setLayout(new GridLayout(1,5));panel5.add(btnAdd);panel5.add(btnSave);panel5.add(btnFilter);panel5.add(btnDelete);panel5.add(btnExit);

itemHandler itemHandler = new itemHandler();btnFirst.addActionListener(itemHandler);btnPrev.addActionListener(itemHandler);btnNext.addActionListener(itemHandler);btnLast.addActionListener(itemHandler);btnAdd.addActionListener(itemHandler);btnSave.addActionListener(itemHandler);btnFilter.addActionListener(itemHandler);btnDelete.addActionListener(itemHandler);btnExit.addActionListener(itemHandler);

konten.add(panel1);konten.add(panel4);konten.add(panel5);

ConnectToDatabase();ConnectToTable("");setVisible(true);

}

private class itemHandler implements ActionListener{public void actionPerformed(ActionEvent e){Object obj=e.getSource();if (obj == btnFirst) recFirst();if (obj == btnPrev) recPrev();if (obj == btnNext) recNext();if (obj == btnLast) recLast();if (obj == btnAdd) recAdd();if (obj == btnSave) recSave();if (obj == btnFilter) recFilter();if (obj == btnDelete) recDelete();if (obj == btnExit) System.exit(0);

}}

private void recFilter(){if (btnFilter.getText() == "Filter"){

String inputValue = JOptionPane.showInputDialog("Masukkan NIM : "

);if (inputValue != ""){boolean bConnect = ConnectToTable(inputValue);

Page 147: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

147

if (bConnect == true){btnFilter.setText("UnFilter");

}else{ConnectToTable("");

}}

} else {ConnectToTable("");btnFilter.setText("Filter");

}}private void recRefresh(){

try{

} catch (Exception e){System.out.println(e.toString());

}}private void recDelete(){

int iQuest = JOptionPane.showConfirmDialog(null,"Anda Ingin Menghapus "+ txtNim.getText() + " ?","Delete",JOptionPane.YES_NO_OPTION

);

if (iQuest == 0){try {

RS.deleteRow();if (btnFilter.getText() == "UnFilter"){

recFilter();}recFirst();

} catch (Exception e){System.out.println(e.toString());

}}

}

private void recSave(){try {

if (btnAdd.getText() == "Tambah"){recUpdate();RS.updateRow();

} else {RS.moveToInsertRow();

recUpdate();RS.insertRow();btnAdd.setText("Tambah");btnFilter.setEnabled(true);btnDelete.setEnabled(true);

recLast();}

} catch (Exception e){System.out.println(e.toString());

}

Page 148: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

148

}

private void recUpdate(){try {

RS.updateString("NIM", txtNim.getText());RS.updateString("NAMA", txtNama.getText());RS.updateString("ALAMAT",

txtAlamat.getText());

if (chSD.isSelected()) {RS.updateInt("SD",1);

} else {RS.updateInt("SD",0);

}if (chSMP.isSelected()){

RS.updateInt("SMP",1);} else {

RS.updateInt("SMP",0);}if (chSMA.isSelected()) {

RS.updateInt("SMA",1);} else {

RS.updateInt("SMA",0);}if (rdTI.isSelected()) {

RS.updateInt("JURUSAN",0);} else if (rdMI.isSelected()){

RS.updateInt("JURUSAN",1);} else if (rdAK.isSelected()){

RS.updateInt("JURUSAN",2);} else if (rdTK.isSelected()){

RS.updateInt("JURUSAN",3);}

RS.updateInt("KAMPUS",cmbKampus.getSelectedIndex()

);

} catch (Exception e){System.out.println(e.toString());

}}

private void recAdd(){if (btnAdd.getText() == "Tambah") {

btnAdd.setText("Batal");btnFilter.setEnabled(false);btnDelete.setEnabled(false);kosong();

}else {btnAdd.setText("Tambah");btnFilter.setEnabled(true);btnDelete.setEnabled(true);preview();

}}

Page 149: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

149

private void recFirst(){try {

RS.first();preview();

} catch(Exception e){System.out.println(e.toString());

}}

private void recPrev(){try {if (RS.isFirst() == false){

RS.previous();preview();

}}catch (Exception e){System.out.println(e.toString());

}}

private void recNext(){try {if (RS.isLast() == false){

RS.next();preview();

}}catch (Exception e){System.out.println(e.toString());

}}

private void recLast() {try {

RS.last();preview();

}catch (Exception e) {System.out.println(e.toString());

}}

private void preview(){try {

kosong();

txtNim.setText(RS.getString("NIM"));txtNama.setText(RS.getString("NAMA"));txtAlamat.setText(RS.getString("ALAMAT"));

if (RS.getInt("SD") == 1){chSD.setSelected(true);

} else {chSD.setSelected(false);

}if (RS.getInt("SMP") == 1){

chSMP.setSelected(true);

Page 150: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

150

} else {chSMP.setSelected(false);

}if (RS.getInt("SMA") == 1) {

chSMA.setSelected(true);} else {

chSMA.setSelected(false);}

switch(RS.getInt("JURUSAN")){case (0) :

rdTI.setSelected(true);break;

case (1) :rdMI.setSelected(true);break;

case (2) :rdAK.setSelected(true);break;

case (3) :rdTK.setSelected(true);break;

}

cmbKampus.setSelectedIndex(RS.getInt("KAMPUS")

);} catch (Exception e) {System.out.println(e.toString());

}}

private void kosong(){txtNim.setText("");txtNama.setText("");txtAlamat.setText("");chSD.setSelected(false);chSMP.setSelected(false);chSMA.setSelected(false);rdTI.setSelected(false);rdMI.setSelected(false);rdAK.setSelected(false);rdTK.setSelected(false);cmbKampus.setSelectedIndex(0);

}

private void ConnectToDatabase(){try {

Class.forName("com.mysql.jdbc.Driver");Connection Conn = DriverManager.getConnection(

dbUrl);

st = Conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE

);} catch (Exception e) {

Page 151: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

151

JOptionPane.showMessageDialog(null,

"Tidak Dapat Deteksi MYSQL.JDBC","JDBC",JOptionPane.PLAIN_MESSAGE

);System.exit(0);

}}

private boolean ConnectToTable(String sFilter){boolean bConnect = false;

try {String sQuery;

sQuery = "SELECT * from mahasiswa";if (sFilter !=""){

sQuery = sQuery +" Where Nim='" + sFilter + "' ";

}

try {RS.close();

} catch (Exception ei) {}

RS = st.executeQuery(sQuery);if (RS.next()) {

recFirst();bConnect = true;

}else {JOptionPane.showMessageDialog

(null,"Data Di Dalam Tabel Kosong ","Table " + sFilter,JOptionPane.PLAIN_MESSAGE

);}

} catch (Exception e) {JOptionPane.showMessageDialog

(null,"Koneksi Tabel Bermasalah","Koneksi Tabel",JOptionPane.PLAIN_MESSAGE

);System.exit(0);

}return bConnect;

}

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

}}

Page 152: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

152

BAB XVMEMBUAT LAPORAN DENGAN JFREEREPORT

JFreeReport merupakan Java library dari http://www.jfree.org yang dipimpin olehThomas Morgner. Cara kerja JFreeReport adalah membaca data dari TableModel danmenampilkannya dalam bentuk laporan (report).

Fasilitas yang disediakan adalah penggunaan judul (header), nomor halaman,penjumlahan secara grup (grup total), rata-rata, gambar dan lain-lain.

Laporan dapat terlihat pada layer ataupun disimpan dengan format Acrobat PDF,Excel, HTML, XML ataupun text format.

JFreeReport berkejasama dengan Pentaho-Project pada tanggal 17 Januari 2006.Thomas Morgner juga menjabat sebagai “Chief Architect of Reporting Solutions”.

Librari JFreeReport dapat diunduh pada http://www.jfree.org, sedangkan pentahodapat diunduh pada http://www.pentaho.org. Mulailah dengan membuat laporanaplikasi dengan mengikuti langkah-langkah di bawah ini :

1. Extract jfreereport-0.8.6-6.zip pada direktori yang ditentukan, contoh : “c:\”2. Ketiklah dan simpan program koneksiDatabase.java

//koneksiDatabase.java

package testing;

import java.sql.*;import javax.swing.*;

public class koneksiDatabase{String sdriver, sdburl,

susername,spassword,squerydata;Connection conn = null;Statement st=null;ResultSet rs=null;

public koneksiDatabase(String driver, String dburl,String username, String password,String querydata){

sdriver = driver;sdburl = dburl;susername = username;spassword = password;squerydata= querydata;

}

public Connection openKoneksi()throws SQLException{System.out.println(sdriver);try{

Class.forName(sdriver);conn = DriverManager.getConnection(sdburl);

return conn;

Page 153: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

153

}catch(Exception e){

JOptionPane.showMessageDialog(null,"Koneksi ke database gagal !","Pesan",JOptionPane.ERROR_MESSAGE

);

return null;}

}

public ResultSet getResult() throws SQLException {

try{openKoneksi();st=conn.createStatement(

ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

rs=st.executeQuery(squerydata);}catch(Exception ee){

ee.printStackTrace();return null;

}

return rs;}

}

3. Identifikasikan semua library JFreeReport (“c:\ jfreereport-0.8.6-6”) padaprogram java

4. Extract pentaho-report-design-wizard-0.9.2.zip pada direktori yang diinginkan,contoh : “c:\”

5. Copy mysql-connector-java-3.0.15-ga-bin.jar ke direktori c:\pentaho-report-design-wizard-0.9.2\lib\jdbc\

6. Jalankan c:\ pentaho-report-design-wizard-0.9.2\reportwizard.bat hingga keluarlayar seperti dibawah ini

Gambar 15.1 Layar Pentaho Report Wizard

Page 154: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

154

7. Tambahkan JNDI Connection Type dengan menekan tombol Add, kemudian isilahsemua parameter yang ada. Kemudian tekan tombol Test untuk melakukanpengetesan dan tekan OK apabila sudah bisa koneksi.

Gambar 15.2 JNDI Connection

8. Pilihlah JNDI contoh : testing, kemudian isilah teks Query dengan teks sebagaiberikut :select nim,nama,alamat,

trim(concat((case when sd=1 then 'SD ' else ' ' end)

,(case when smp=1 then 'SMP ' else ' ' end),(case when sma=1 then 'SMA ' else ' ' end))) sertifikat,

(case when jurusan = 0 then 'TI'when jurusan = 1 then 'MI'when jurusan = 2 then 'AK'when jurusan = 3 then 'TK'

end) jurusan,(case when kampus = 0 then 'Cempaka Mas'

when kampus = 1 then 'Cileduk'when kampus = 2 then 'Roxy'when kampus = 3 then 'Salemba'

end) kampusfrom mahasiswa

Page 155: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

155

9. Tahap ke dua tekan tombol Next hingga muncul layar tampilan seperti dibawahini

Gambar 15.3 Langkah ke dua pembuatan laporan dengan Pentaho

10. Tahap ke tiga tekan tombol next hingga muncul layar seperti dibawah ini

Gambar 15.4 Tahap Ke Tiga Pembuatan Laporan Menggunakan Pentaho

Page 156: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

156

11. Tahap ke empat tekan tombol Next, hingga muncul layar tampilan sebagai berikut

Gambar 15.5 Tahap Ke Empat Pembuatan Laporan Menggunakan Pentaho

12. Tekan tombol Finish, hingga muncul hasil akhir dari laporan

Gambar 15.6 Contoh Laporan Acrobat Reader Dari Pentaho

13. Tutup layar Acrobat Reader, kemudian pilihlah menu File Export ToLocation, simpanlah ditempat yang sama dengan program utama.

Page 157: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

157

14. Ketiklah program dibawah ini untuk mencetak data

//package testing;//printReport.javaimport java.awt.Color;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.awt.geom.Point2D;import java.net.*;

import java.sql.Connection;import java.sql.ResultSet;import java.sql.Statement;import java.sql.DriverManager;import java.sql.ResultSetMetaData;

import javax.swing.table.DefaultTableModel;import javax.swing.table.TableModel;

import org.jfree.report.ElementAlignment;import org.jfree.report.JFreeReport;import org.jfree.report.JFreeReportBoot;import org.jfree.report.modules.parser.base.ReportGenerator;import org.jfree.report.elementfactory.TextFieldElementFactory;import org.jfree.report.modules.gui.base.PreviewDialog;import org.jfree.ui.FloatDimension;import org.jfree.report.modules.misc.tablemodel.ResultSetTableModelFactory;

public class printReport{private static ResultSetMetaData rsd = null;public static ResultSet rs = null;private DefaultTableModel rsult;koneksiDatabase kDb;

private Object[] columnNames;private int count=0;

private TableModel datars;private URL urlXML;

public String dburl = "jdbc:mysql://localhost/mhs?";public String username = "root";public String password = "";public String fileXML = "mahasiswa.xml";public String jdbcDriver = "com.mysql.jdbc.Driver";public String querydata = "select * from mahasiswa";

protected static class CloseHandler extends WindowAdapter{public void windowClosing(final WindowEvent event){

}}

Page 158: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

158

public printReport() {}

public void executereport() {

JFreeReportBoot.getInstance().start();kDb = new koneksiDatabase(

jdbcDriver, dburl, username, password, querydata);

if (rs == null) {try {

rs = kDb.getResult();} catch (Exception e) {

}}

final TableModel data = createData();final JFreeReport report = createReportDefinition();try{

report.setData(data);}catch(Exception ex){

ex.printStackTrace();}try{

final PreviewDialog preview=new PreviewDialog(report);preview.addWindowListener(new CloseHandler());preview.pack();preview.setVisible(true);rs.close();rs=null;

}catch(Exception eex){

eex.printStackTrace();}

}

private TableModel createData(){rsult = null;

try{

rsd = rs.getMetaData();count = rsd.getColumnCount();columnNames = new Object[count+1];for(int i = 1;i <= count; i++){

columnNames[i-1] = rsd.getColumnName(i);

Page 159: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

159

//System.out.println(columnNames[i-1]);}

int rowCount=0;int myCounter = 0;while (rs.next())

myCounter++;

rs.first();rsult=new DefaultTableModel(columnNames,myCounter + 1);int row=0;

do{row++;for(int j=1;j<=count;j++) {

rsult.setValueAt(rs.getObject(j),row,j-1);//System.out.println(rs.getObject(j));

}

}while(rs.next());

}catch(Exception exe){

exe.printStackTrace();}return rsult;

}

private JFreeReport createReportDefinition(){JFreeReport report = new JFreeReport();

try{

URL urlXML = getClass().getResource(fileXML);report = ReportGenerator.getInstance().parseReport(urlXML);

report.setName("Master");

}catch(Exception ee){

ee.printStackTrace();}return report;

}

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

printReport rpt = new printReport();rpt.querydata =

"select nim,nama,alamat, "+ " trim(concat( "+ " (case "+ " when sd = 1 then 'SD ' "

Page 160: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

160

+ " else ' ' "+ " end "+ " ), "+ " (case "+ " when smp = 1 then 'SMP ' "+ " else ' ' "+ " end "+ " ), "+ " (case "+ " when sma = 1 then 'SMA ' "+ " else ' ' "+ " end "+ " ) "+ " )) sertifikat, "+ "(case "+ " when jurusan = 0 then 'TI' "+ " when jurusan = 1 then 'MI' "+ " when jurusan = 2 then 'AK' "+ " when jurusan = 3 then 'TK' "+ " end) jurusan, "+ " (case "+ " when kampus = 0 then 'Cempaka Mas' "+ " when kampus = 1 then 'Cileduk' "+ " when kampus = 2 then 'Roxy' "+ " when kampus = 3 then 'Salemba' "+ " end) kampus "+ " from mahasiswa" ;

rpt.executereport();

}

}

Page 161: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

161

15. Jalankan program, dan apabila telah tampil gambar seperti dibawah ini makaprogram laporan selesai dibuat

Gambar 15.7 Laporan Menggunakan JFreeReport

Page 162: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

162

BAB XVI

JAWABAN SOAL LATIHAN

Jawaban Latihan 1 :

Gambar 16.1 Rancangan Grafik 2D Bendera Merah Putih

//latihan 1import javax.swing.*;import java.awt.*;

class grap1 extends Canvas{

public void paint (Graphics g){

g.setColor(Color.RED);g.fillRect(50,30,200,50);g.setColor(Color.WHITE);g.fillRect(50,80,200,50);g.setColor(Color.BLUE);g.fillOval(40,27,10,10);g.fillRect(40,30,10,150);

g.setColor(Color.YELLOW);g.setFont(new Font("Tahoma",Font.BOLD,20));g.drawString("MERDEKA",100,150);

g.setColor(Color.GREEN);g.setFont(new Font("ARIAL",Font.BOLD,10));

Page 163: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

163

g.drawString("17 Agustus 1945 - 2004",90,170);

}}

class grap11 extends JFrame{

private Container konten=new Container();private grap1 bendera=new grap1();grap11(){

super("Universitas Budi Luhur");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setLocation(100,100);this.setSize(300,250);konten=getContentPane();konten.add(bendera);

show();}

public static void main(String args[]){

new grap11();}

}

Page 164: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

164

Jawaban Latihan 2

- Icon pada frame

this.setIconImage(Toolkit.getDefaultToolkit().getImage(<nama file image>)

);

- Nim : 9511500134

private JTextField txtNim = new JTextField("9511500134",10

);

Atau

txtNim.setText("9511500134");

- Nama : Windu Gata

private JTextField txtNama = new JTextField("Windu Gata", 20

);

- SD : Checked

private JCheckBox chSD = new JCheckBox("SD",true);

atau

chSD.setSelected(true);

- SMP : Checked

private JCheckBox chSMP = new JCheckBox("SMP",true);

atau

chSMP.setSelected(true);

- SMA : Checked

private JCheckBox chSMA = new JCheckBox("SMA",true);

atau

chSMA.setSelected(true);

- Jurusan TI : Checked

Page 165: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

165

private JRadioButton rdTI = new JRadioButton("TI", true);

Atau

rdTI.setSelected(true);

- Icon Pada Tombol Save

cmdSave.setIcon(new ImageIcon(<nama file image>));

- Icon Pada Tombol End

cmdEnd.setIcon(new ImageIcon(<nama file image));

- Short Key “P” Pada Tombol Save

cmdSave.setMnemonic('P');

- Short Key “S” Pada Tombol End

cmdEnd.setMnemonic('S');

Contoh program latihan 2

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

class frame23icon extends JFrame{

//deklarasi objekprivate Container konten = new Container();private JPanel panel1 = new JPanel();private JLabel lblNim = new JLabel();private JTextField txtNim = new JTextField(

"9511500134",10);

private JLabel lblNama = new JLabel();private JTextField txtNama = new JTextField(

"Windu Gata", 20);

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

private JPanel panel3 = new JPanel();

Page 166: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

166

private JLabel lblJurusan = new JLabel();private ButtonGroup grpJurusan = new ButtonGroup();private JRadioButton rdTI = new JRadioButton(

"TI", true);

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

frame23icon(){

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

Toolkit.getDefaultToolkit().getImage("computer.jpg"

));this.setLocation(10,100);this.setSize(500,250);

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

Page 167: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

167

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

cmbKampus.setSelectedIndex(1);cmbKampus.setMaximumRowCount(3);panel1.add(lblKampus);panel1.add(cmbKampus);

itemHandler itemHandler = new itemHandler();panel1.add(cmdSave);cmdSave.addActionListener(itemHandler);cmdSave.setMnemonic('P');cmdSave.setIcon(new ImageIcon("preview.jpg"));

panel1.add(cmdEnd);cmdEnd.addActionListener(itemHandler);cmdEnd.setMnemonic('S');cmdEnd.setIcon(new ImageIcon("exit.jpg"));

konten.add(panel1);

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

Page 168: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

168

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

}

Page 169: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

169

Jawaban Latihan 3

Gambar 16.2 Rancangan Layar HandPhone

//di ambil Dimodifikasi dari//buku tuntunan pemrograman java jilid2//oleh Rangsang Purnama//halaman 176 - 178//latihan 3aimport javax.swing.*;import java.awt.*;class frame41 extends JFrame{

private Container konten = new Container();private JPanel panel_1 = new JPanel();private JPanel panel_2 = new JPanel();private JPanel panel_3 = new JPanel();private JPanel panel_4 = new JPanel();private JPanel panel_5 = new JPanel();private JPanel panel_6 = new JPanel();private JPanel panel_7 = new JPanel();

frame41(){

super ("Hand Phone");

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(200,230);setLocation(100,100);

//desain panel 1, tombol yespanel_1.setLayout(new BorderLayout());panel_1.add(new Button("Yes"),

BorderLayout.WEST);

panel_1.add(new JPanel(), BorderLayout.CENTER);

Page 170: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

170

//desain panel 2, tombol NOpanel_2.setLayout(new GridLayout());panel_2.add(new JPanel(), BorderLayout.CENTER);panel_2.add(new Button("No"),BorderLayout.EAST);

//desain panel_3, panah atas, bawah, kanan, kiripanel_3.setLayout (new GridLayout (3,3));panel_3.add (new JPanel());panel_3.add (new Button("^"));panel_3.add (new JPanel());panel_3.add (new Button("<"));panel_3.add (new JPanel());panel_3.add (new Button(">"));panel_3.add (new JPanel());panel_3.add (new Button("v"));

//panel 4, formasi border ataspanel_4.setLayout(new BorderLayout());panel_4.add(panel_1, BorderLayout.WEST);panel_4.add(panel_2, BorderLayout.EAST);panel_4.add(panel_3, BorderLayout.CENTER);

//desain panel_5, tombol angkapanel_5.setLayout(new GridLayout(4,3));for (int i=1; i<=9; i++)

panel_5.add(new Button(Integer.toString(i)));panel_5.add(new Button("*"));panel_5.add(new Button("0"));panel_5.add(new Button("#"));

//desain panel_6panel_6.setLayout(new BorderLayout());panel_6.add(panel_4, BorderLayout.NORTH);panel_6.add(panel_5, BorderLayout.CENTER);

//desain panel_7panel_7.setLayout (new BorderLayout());panel_7.add(new JPanel(), BorderLayout.NORTH);panel_7.add(new JPanel(), BorderLayout.WEST);panel_7.add(new JPanel(), BorderLayout.EAST);panel_7.add(new JTextField("0818870069"),

BorderLayout.CENTER);

panel_7.add(new JPanel(), BorderLayout.SOUTH);

//Desain Framekonten = getContentPane();konten.setLayout (new BorderLayout());konten.add(panel_6, BorderLayout.SOUTH);konten.add(panel_7, BorderLayout.CENTER);

show();}

}

Page 171: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

171

//class Utamapublic class praktek41{

public static void main(String args[]){

new frame41();}

}

Jawaban Latihan 3b:

Gambar 16.3 Rancangan Layar Konversi Suhu

RumusFahrenheit = (Celcius * 1.8) + 32Kelvin = Celcius + 273.15Celius = (Fahrenheit - 32) * 0.5555Kelvin = (Fahrenheit - 32) * 0.5555 + 273.15Celcius = Kelvin – 273.15Fahrenheit = ((Kelvin - 273.15)*1.8)+32;

//latihan 3b

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

class frame42 extends JFrame{

private Container konten = new Container();private JPanel panel1 = new JPanel();private JLabel lblKeterangan = new JLabel(

"Konversi Derajat");

private JPanel panel2 = new JPanel();private JTextField txtSource = new JTextField(5);String pil[] = {"Celcius", "Fahrenheit", "Kelvin"};private JComboBox cmbSource = new JComboBox(pil);private JLabel lblKonversi = new JLabel(

"Konversi Ke");

Page 172: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

172

private JComboBox cmbTarget = new JComboBox(pil);private JButton button1 = new JButton("Konversi");private JLabel lblHasil = new JLabel();

private JPanel panel3 = new JPanel();private JPanel panel4 = new JPanel();

frame42(){

super ("UNIVERSITAS BUDI LUHUR");

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE

);setSize(500,100);setLocation(300,100);

itemHandler itemHandler = new itemHandler();

panel1.setLayout(new BorderLayout());panel1.add(lblKeterangan);

panel2.setLayout(new GridLayout(1,5));panel2.add(txtSource);panel2.add(cmbSource);panel2.add(lblKonversi);panel2.add(cmbTarget);panel2.add(button1);

button1.addActionListener(itemHandler);

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

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

konten = getContentPane();konten.add(panel4);

show();}

private class itemHandler implements ActionListener{public void actionPerformed(ActionEvent e){Object obj=e.getSource();

if(obj==button1){

int iSource;int iTarget;double dHasil;String sHasil;

iSource = cmbSource.getSelectedIndex();iTarget = cmbTarget.getSelectedIndex();

Page 173: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

173

dHasil = Double.parseDouble(txtSource.getText()

);

if(iSource!=iTarget){

if (iSource == 0 && iTarget==1)dHasil = (dHasil*1.8) + 32;if (iSource == 0 && iTarget==2)dHasil = dHasil + 273.15;if (iSource == 1 && iTarget==0)dHasil = (dHasil - 32) * 0.5555;if (iSource == 1 && iTarget==2)dHasil = ((dHasil-32)*0.5555)

+273.15;if (iSource == 2 && iTarget==0)dHasil = dHasil-273.15;if (iSource == 2 && iTarget==1)dHasil = ((dHasil-273.15)*1.8)+32;

}

lblHasil.setText("HASIL " + dHasil);}

}}

}

//class utamapublic class praktek42{

public static void main(String args[]){

new frame42();}

}

Page 174: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

174

Jawaban Latihan 4

- Penggunaan JFrame ditambah dengan implements MouseLister

public class Pear extends JFrame implements MouseListener

- Aktifkan Mouse listener pada JFrame

Pear p = new Pear();p.addMouseListener(p);

- Posisi X dan Y ditempatkan pada saat mouse click

public void mouseReleased(MouseEvent e){

/*posisi gambar disesuaikan dengan*X & Y mouse

*/ew = e.getX();

eh = e.getY();repaint();System.out.println("Mouse Released");

}

Jawaban program secara keseluruhan :

/**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 JFrameimplements MouseListener{

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

Page 175: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

175

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*/

Page 176: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

176

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

//untuk menampilkan text X & Y pada layarg2.setColor(Color.blue);g2.setFont(new Font("Tahoma",Font.ITALIC,10));g2.drawString(

ew + ", " + eh,(int) ew + 10, (int) eh

);}

//Mouse Listenerpublic void mouseReleased(MouseEvent e){

/*posisi gambar disesuaikan dengan*X & Y mouse

*/ew = e.getX();

eh = e.getY();repaint();System.out.println("Mouse Released");

}public void mousePressed(MouseEvent e){}

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

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

}}

Page 177: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

177

Jawaban Latihan 5

lblCm lblCmCapt

sldCm

lblInch lblFeetlblInchCapt lblFeetCapt

sldInch

SldFeet

Rumus

Inch = (Centimeter) * 0.39370Feet = (Centimeter) * 0.03821

Centimeter = (Inch) * 2.54Fett = (Inch) * 0.833

Centimeter = (Feet) * 30.48Inch = (Feet) * 12

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

class frame53 extends JFrame{

//penggunaan slider//JSlider (posisi <0-horisontal|1-vertical>,min,max,0)private Container konten = new Container();private JPanel panel1 = new JPanel();

private JPanel panel2 = new JPanel();

Page 178: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

178

private JLabel lblCm = new JLabel();private JLabel lblCmCapt = new JLabel();private JSlider sldCm = new JSlider();

private JPanel panel3 = new JPanel();private JLabel lblInch = new JLabel();private JLabel lblInchCapt = new JLabel();private JLabel lblFeet = new JLabel();private JLabel lblFeetCapt = new JLabel();

private JPanel panel4 = new JPanel();private JSlider sldInch = new JSlider(1,0,200,0);private JSlider sldFeet = new JSlider(1,0,200,0);

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

frame53(){

super("Universitas Budi Luhur");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(200,325);setLocation(10,100);konten = getContentPane();

lblCm.setText("Cm");lblCmCapt.setText("0 Derajat");panel1.setLayout(

new FlowLayout(FlowLayout.CENTER

));

panel1.add(lblCm);panel1.add(lblCmCapt);panel2.setLayout(new BorderLayout());panel2.add(panel1, BorderLayout.NORTH);sldCm.setValue(0);sldCm.setMaximum(10000);panel2.add(sldCm, BorderLayout.SOUTH);

lblInch.setText("Inch ");lblInchCapt.setText("0");lblFeet.setText("Feet ");lblFeetCapt.setText("0");sldInch.setMaximum(3937);

panel3.setLayout(new GridLayout (2, 2));panel3.add(lblInch);panel3.add(lblFeet);panel3.add(lblInchCapt);panel3.add(lblFeetCapt);

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

sldFeet.setMaximum(328);

Page 179: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

179

sldFeet.setMinimum(0);sldFeet.setValue(0);panel4.add(sldFeet, 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);

sldCm.addChangeListener(

//jika nilai slider Berubahnew ChangeListener(){public void stateChanged(ChangeEvent e)

{lblCmCapt.setText(

sldCm.getValue() + " Cm");

}}

);

sldCm.addMouseListener(

//jika mouse selesai melakukan pergerakannew java.awt.event.MouseAdapter()

{public void mouseReleased(MouseEvent e){

double dInch,dFeet;

dInch = sldCm.getValue() * 0.3937;dFeet = sldCm.getValue() * 0.03821;

sldInch.setValue((int) dInch);lblInchCapt.setText(dInch + " Inch");

lblFeetCapt.setText(dFeet + " Feet");sldFeet.setValue((int) dFeet);

}}

);

sldInch.addChangeListener(

new ChangeListener(){public void stateChanged(ChangeEvent e)

{lblInchCapt.setText(sldInch.getValue() + " Cm"

);}

Page 180: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

180

});

sldInch.addMouseListener(new java.awt.event.MouseAdapter()

{public void mouseReleased(MouseEvent e){

double dCm,dFeet;

dCm = sldInch.getValue() * 2.54;dFeet = sldInch.getValue() * 0.08333;

sldCm.setValue((int) dCm);lblCmCapt.setText(dCm + " Cm");

sldFeet.setValue((int) dFeet);lblFeetCapt.setText(dFeet + " Feet");

}}

);

sldFeet.addChangeListener(

new ChangeListener(){public void stateChanged(ChangeEvent e)

{lblFeetCapt.setText(

sldFeet.getValue() + " Feet");

}}

);

sldFeet.addMouseListener(new java.awt.event.MouseAdapter()

{public void mouseReleased(MouseEvent e){

double dCm,dInch;

dCm = sldFeet.getValue() * 30.48;dInch = sldFeet.getValue() * 12;

sldCm.setValue((int) dCm);lblCmCapt.setText(dCm + " Cm");

sldInch.setValue((int) dInch);lblInchCapt.setText(dInch + " Inch");

}}

);konten.add(panel6);

show();

Page 181: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

181

}}public class praktek53{

public static void main(String args[]){

new frame53();}

}

Page 182: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

182

Jawaban Latihan 6

- Menambah Icon Pada Menu

<object>.setIcon(new ImageIcon(<nama file image>));

- Menambah Short Key Menu

<object>.setMnemonic(<int|char>);

Keseluruhan Program :

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

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

Page 183: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

183

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();private JMenuItem mniPopCopy = new JMenuItem("Copy");private JMenuItem mniPopCut = new JMenuItem("Cut");private JMenuItem mniPopPaste = new JMenuItem(

"Paste");

frame52icon(){

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

ItemHandler itemHandler = new ItemHandler();mniFileBuka.addActionListener(itemHandler);mniFileBuka.setMnemonic('B');mniFileBuka.setIcon(new ImageIcon("OPEN.JPG"));

mniFileSimpan.addActionListener(itemHandler);mniFileSimpan.setMnemonic('S');mniFileSimpan.setIcon(new ImageIcon("SAVE.JPG"));

mniFileKeluar.addActionListener(itemHandler);mniFileKeluar.setMnemonic('K');mniFileKeluar.setIcon(new ImageIcon("EXIT.JPG"));

mniCopy.addActionListener(itemHandler);mniCopy.setMnemonic('C');mniCopy.setIcon(new ImageIcon("COPY.JPG"));

mniCut.addActionListener(itemHandler);mniCut.setMnemonic('U');mniCut.setIcon(new ImageIcon("CUT.JPG"));

mniPaste.addActionListener(itemHandler);mniPaste.setMnemonic('P');mniPaste.setIcon(new ImageIcon("PASTE.JPG"));

mnFile.setMnemonic('F');

mnFile.add(mniFileBuka);mnFile.add(mniFileSimpan);mnFile.add(mniFileKeluar);

Page 184: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

184

mnEdit.setMnemonic('E');mnEdit.add(mniCopy);mnEdit.add(mniCut);mnEdit.add(mniPaste);

mnTentang.setMnemonic('T');mnTentang.setIcon(new ImageIcon("HELP.JPG"));

bar.add(mnFile);bar.add(mnEdit);bar.add(mnTentang);

setJMenuBar(bar);

popmenu.add(mniPopCopy);popmenu.add(mniPopCut);popmenu.add(mniPopPaste);

mniPopCopy.setMnemonic('C');mniPopCopy.setIcon(new ImageIcon("COPY.JPG"));mniPopCut.setMnemonic('U');mniPopCut.setIcon(new ImageIcon("CUT.JPG"));mniPopPaste.setMnemonic('P');mniPopPaste.setIcon(new ImageIcon("PASTE.JPG"));

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 popupif (e.getButton() == 3)

popmenu.show(e.getComponent(),

Page 185: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

185

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(frame52icon.this,

"Buka File","Buka",JOptionPane.PLAIN_MESSAGE);

else if (objek == mniFileSimpan)JOptionPane.showMessageDialog(frame52icon.this,

"Simpan","Simpan File",JOptionPane.PLAIN_MESSAGE);

else if (objek == mniCopy)JOptionPane.showMessageDialog(

frame52icon.this,"Copy "+ txtArea.getSelectedText()+ " Di Text Area ", "Copy",JOptionPane.PLAIN_MESSAGE

);else if (objek == mniCut)

JOptionPane.showMessageDialog(frame52icon.this,"Cut Teks di Teks Area","Cut",JOptionPane.PLAIN_MESSAGE

);else if (objek == mniPaste)

JOptionPane.showMessageDialog(frame52icon.this,"Paste Teks di Text Area","Paste",JOptionPane.PLAIN_MESSAGE

);else if (objek == mniFileKeluar)

System.exit(0);}

}}public class praktek52icon

Page 186: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

186

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

new frame52icon();}

}

Page 187: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

187

Jawaban Latihan 7

- Buatlah program untuk membuat JInternalframe dengan namaMyInternalFrame.java

//Nama file MyInternalFrame.javaimport javax.swing.JInternalFrame;

import java.awt.event.*;import java.awt.*;

/*Akan digunakan pada InternalFrame

*/public class MyInternalFrame extends JInternalFrame {

static int openFrameCount = 0;static final int xOffset = 30, yOffset = 30;

public MyInternalFrame() {super("Document #" + (++openFrameCount),

true, //resizabletrue, //closabletrue, //maximizabletrue);//iconifiable

setSize(300,300);

//Penenempatan WindowssetLocation(

xOffset*openFrameCount,yOffset*openFrameCount

);}

}

- Buatlah program Jframe sebagai program induk dengan namaInternalFrameDemo.java

// Nama File InternalFrameDemo.javaimport javax.swing.JInternalFrame;import javax.swing.JDesktopPane;import javax.swing.JMenu;import javax.swing.JMenuItem;import javax.swing.JMenuBar;import javax.swing.JFrame;import javax.swing.KeyStroke;

import java.awt.event.*;import java.awt.*;

/** InternalFrameDemo.java requires:* MyInternalFrame.java

Page 188: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

188

*/public class InternalFrameDemo extends JFrame

implements ActionListener {JDesktopPane desktop;

public InternalFrameDemo() {super("InternalFrameDemo");

int inset = 50;Dimension screenSize =

Toolkit.getDefaultToolkit().getScreenSize();setBounds(inset, inset,

screenSize.width - inset*2,screenSize.height - inset*2);

desktop = new JDesktopPane();

//Buat Internal Frame PertamacreateFrame();setContentPane(desktop);setJMenuBar(createMenuBar());

desktop.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE

);}

protected JMenuBar createMenuBar() {JMenuBar menuBar = new JMenuBar();

JMenu menu = new JMenu("Document");menu.setMnemonic(KeyEvent.VK_D);menuBar.add(menu);

JMenuItem menuItem = new JMenuItem("New");menuItem.setMnemonic(KeyEvent.VK_N);menuItem.setAccelerator(KeyStroke.getKeyStroke(

KeyEvent.VK_N, ActionEvent.ALT_MASK));menuItem.setActionCommand("new");menuItem.addActionListener(this);menu.add(menuItem);

menuItem = new JMenuItem("Quit");menuItem.setMnemonic(KeyEvent.VK_Q);menuItem.setAccelerator(KeyStroke.getKeyStroke(

KeyEvent.VK_Q, ActionEvent.ALT_MASK));menuItem.setActionCommand("quit");menuItem.addActionListener(this);menu.add(menuItem);

return menuBar;}

public void actionPerformed(ActionEvent e) {if ("new".equals(e.getActionCommand())) {

//Buat Jinternal Frame BerikutnyacreateFrame();

Page 189: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

189

} else { //quitquit();

}}

//Membuat internal frame baru.protected void createFrame() {

MyInternalFrame frame = new MyInternalFrame();frame.setVisible(true);desktop.add(frame);try {

//Membuat Frame Terbaru Terpilihframe.setSelected(true);

} catch (java.beans.PropertyVetoException e) {}}

//Quit the application.protected void quit() {

System.exit(0);}

private static void createAndShowGUI() {//Make sure we have nice window decorations.JFrame.setDefaultLookAndFeelDecorated(true);

//Create and set up the window.InternalFrameDemo frame = new InternalFrameDemo();frame.setDefaultCloseOperation(

JFrame.EXIT_ON_CLOSE);frame.setVisible(true);

}

public static void main(String[] args) {javax.swing.SwingUtilities.invokeLater(

new Runnable() {public void run() {

createAndShowGUI();}

});}

}

Page 190: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

190

Jawaban Latihan 8

- Untuk Mengganti model default (TOP) dapat menggunakan perintah

/*pilih model*/tabbedPane.setTabPlacement(tabbedPane.BOTTOM);//tabbedPane.setTabPlacement(tabbedPane.TOP);//tabbedPane.setTabPlacement(tabbedPane.LEFT);//tabbedPane.setTabPlacement(tabbedPane.RIGHT);

Keseluruhan Program :

/** ===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 framepublic 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));

/*pilih model*/tabbedPane.setTabPlacement(tabbedPane.BOTTOM);//tabbedPane.setTabPlacement(tabbedPane.TOP);//tabbedPane.setTabPlacement(tabbedPane.LEFT);//tabbedPane.setTabPlacement(tabbedPane.RIGHT);

tabbedPane.addTab(BUTTONPANEL, card1);tabbedPane.addTab(TEXTPANEL, card2);

pane.add(tabbedPane, BorderLayout.CENTER);}

Page 191: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

191

private static void createAndShowGUI() {//look and feelJFrame.setDefaultLookAndFeelDecorated(true);

JFrame frame = new JFrame("TabDemo - Universitas BudiLuhur");

frame.setSize(500,100);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();

}}

Page 192: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

192

Jawaban Latihan 9

frmTestingPROPERTIES NILAIObjek jFramedefaultCloseOperation EXIT_ON_CLOSE

contentPanePROPERTIES NILAIObjek contentPanelayout null

lblNimPROPERTIES NILAIObjek jLabeltext Nim

lblNamaPROPERTIES NILAIObjek jLabelText Nama

lblSertifikatPROPERTIES NILAIObjek jLabelText Sertifikat

lblJurusanPROPERTIES NILAIObjek jLabelText Jurusan

lblKampusPROPERTIES NILAIObjek jLabelText Kampus

txtNimPROPERTIES NILAIObjek jTextFieldText <kosong>

txtNamaPROPERTIES NILAIObjek jTextField

Page 193: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

193

Text <kosong>

chSDPROPERTIES NILAIObjek jTextFieldText SD

chSMPPROPERTIES NILAIObjek jCheckBoxText SMP

chSMAPROPERTIES NILAIObjek jCheckBoxText SMA

grpJurusanPROPERTIES NILAIObjek groupButton

rdTIPROPERTIES NILAIObjek jRadioButtonText TIButtonGroup grpJurusan

rdMIPROPERTIES NILAIObjek jRadioButtonText MIButtonGroup grpJurusan

rdAKPROPERTIES NILAIObjek jRadioButtonText AKButtonGroup grpJurusan

rdTKPROPERTIES NILAIObjek jRadioButtonText TK

Page 194: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

194

ButtonGroup grpJurusan

cmbKampusPROPERTIES NILAIObject JcomboBox

cmdSavePROPERTIES NILAIObject JButtonText SimpanMnemonic S

cmdExitPROPERTIES NILAIObject JButtonText KeluarMnemonic K

JBuider

Gambar 16.4 Tampilan Program Mahasiswa JBuilder

Page 195: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

195

Tambahkan pada method jbInit() di frmTesting

cmbKampus.addItem("Cempaka Mas");cmbKampus.addItem("Ciledug");cmbKampus.addItem("Roxy");cmbKampus.addItem("Salemba");cmbKampus.setSelectedIndex(1);

Keseluruhan Program :

package testing;

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

/*** Testing.java* <p>Title: Testing</p>* <p>Description: Testing Aplikasi</p>* <p>Copyright: Copyright (c) 2006</p>* <p>Company: Universitas Budi Luhur</p>* @author Windu Gata, Skom* @version 1.0*/

public class Testing {boolean packFrame = false;

//Construct the applicationpublic Testing() {frmTesting frame = new frmTesting();//Validate frames that have preset sizes//Pack frames that have useful//preferred size info, e.g. from their layoutif (packFrame) {

frame.pack();}else {

frame.validate();}//Center the windowDimension screenSize =

Toolkit.getDefaultToolkit().getScreenSize();Dimension frameSize = frame.getSize();if (frameSize.height > screenSize.height) {

frameSize.height = screenSize.height;}if (frameSize.width > screenSize.width) {

frameSize.width = screenSize.width;}frame.setLocation(

(screenSize.width - frameSize.width) / 2,(screenSize.height - frameSize.height) / 2);

frame.setVisible(true);}

Page 196: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

196

//Main methodpublic static void main(String[] args) {try {

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());}catch(Exception e) {

e.printStackTrace();}new Testing();

}}

package testing;

import java.awt.*;import java.awt.event.*;import javax.swing.*;import com.borland.jbcl.layout.*;

/*** <p>Title: Testing</p>* fmTesting.java* <p>Description: Testing Aplikasi</p>* <p>Copyright: Copyright (c) 2006</p>* <p>Company: Universitas Budi Luhur</p>* @author Windu Gata, Skom* @version 1.0*/

public class frmTesting extends JFrame {JPanel contentPane;JLabel lblNim = new JLabel();JTextField txtNim = new JTextField();JLabel lblNama = new JLabel();JTextField txtNama = new JTextField();JLabel lblSertifikat = new JLabel();JCheckBox chSD = new JCheckBox();JCheckBox chSMP = new JCheckBox();JCheckBox chSMA = new JCheckBox();JLabel lblJurusan = new JLabel();ButtonGroup grpJurusan = new ButtonGroup();JRadioButton rdTI = new JRadioButton();JRadioButton rdMI = new JRadioButton();JRadioButton rdAk = new JRadioButton();JRadioButton rdTk = new JRadioButton();JLabel lblKampus = new JLabel();JComboBox cmbKampus = new JComboBox();JButton btnSave = new JButton();JButton btnExit = new JButton();

//Construct the framepublic frmTesting() {enableEvents(AWTEvent.WINDOW_EVENT_MASK);try {

Page 197: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

197

jbInit();}catch(Exception e) {

e.printStackTrace();}

}

//Component initializationprivate void jbInit() throws Exception {contentPane = (JPanel) this.getContentPane();lblNim.setText("Nim");lblNim.setBounds(new Rectangle(24, 28, 71, 17));contentPane.setMaximumSize(

new Dimension(2147483647, 2147483647));contentPane.setLayout(null);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setIconImage(null);this.setResizable(true);this.setSize(new Dimension(399, 277));this.setTitle("Frame Title");lblNama.setText("Nama");lblNama.setBounds(new Rectangle(22, 59, 78, 24));txtNim.setText("");txtNim.setBounds(new Rectangle(111, 29, 98, 21));txtNama.setText("");txtNama.setBounds(new Rectangle(111, 61, 256, 22));lblSertifikat.setText("Sertifikat");lblSertifikat.setBounds(new Rectangle(23, 96, 74, 19));chSD.setText("SD");chSD.setBounds(new Rectangle(111, 95, 59, 18));chSMP.setText("SMP");chSMP.setBounds(new Rectangle(175, 97, 67, 19));chSMA.setActionCommand("jCheckBox2");chSMA.setText("SMA");chSMA.setBounds(new Rectangle(240, 98, 67, 15));lblJurusan.setText("Jurusan");lblJurusan.setBounds(new Rectangle(23, 126, 76, 17));rdTI.setSelected(true);rdTI.setText("TI");rdTI.setBounds(new Rectangle(111, 126, 37, 23));rdMI.setText("MI");rdMI.setBounds(new Rectangle(158, 128, 51, 21));rdAk.setMargin(new Insets(2, 2, 2, 2));rdAk.setText("AK");rdAk.setBounds(new Rectangle(201, 130, 53, 16));rdTk.setText("TK");rdTk.setBounds(new Rectangle(256, 131, 61, 13));lblKampus.setText("Kampus");lblKampus.setBounds(new Rectangle(23, 163, 66, 15));btnSave.setBounds(new Rectangle(28, 208, 99, 22));btnSave.setMnemonic('S');btnSave.setText("Save");btnExit.setBounds(new Rectangle(277, 208, 92, 21));btnExit.setMnemonic('K');btnExit.setText("Keluar");cmbKampus.setBounds(new Rectangle(118, 164, 196, 19));

Page 198: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

198

contentPane.add(lblNim, null);contentPane.add(txtNim, null);contentPane.add(txtNama, null);contentPane.add(lblSertifikat, null);contentPane.add(chSD, null);contentPane.add(chSMP, null);contentPane.add(chSMA, null);contentPane.add(rdTI, null);contentPane.add(rdMI, null);contentPane.add(rdTk, null);contentPane.add(rdAk, null);contentPane.add(lblKampus, null);contentPane.add(lblNama, null);contentPane.add(lblJurusan, null);contentPane.add(cmbKampus, null);

cmbKampus.addItem("Cempaka Mas");cmbKampus.addItem("Ciledug");cmbKampus.addItem("Roxy");cmbKampus.addItem("Salemba");cmbKampus.setSelectedIndex(1);

grpJurusan.add(rdTI);grpJurusan.add(rdMI);grpJurusan.add(rdAk);grpJurusan.add(rdTk);contentPane.add(btnSave, null);contentPane.add(btnExit, null);

}

//Overridden so we can exit when window is closedprotected void processWindowEvent(WindowEvent e) {super.processWindowEvent(e);if (e.getID() == WindowEvent.WINDOW_CLOSING) {

System.exit(0);}

}}

Page 199: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

199

NetBeans

Gambar 16.5 Tampilan Program Mahasiswa NetBeans

Gambar 16.6 Mengganti Layout Pada Layar

Mengganti layout layar dengan meng-click kanan pada layar kemudian pilih setLayoutNull Layout.

Page 200: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

200

Tambahkan pada method frmTesting() di frmTesting.java

cmbKampus.addItem("Cempaka Mas");cmbKampus.addItem("Ciledug");cmbKampus.addItem("Roxy");cmbKampus.addItem("Salemba");cmbKampus.setSelectedIndex(1);

Keseluruhan Program adalah sebagai berikut :

/** Main.java** Created on July 14, 2006, 2:57 AM*

*/

package testing;

/**** @author windu*/

public class Main {

/** Creates a new instance of Main */public Main() {}

/*** @param args the command line arguments*/

public static void main(String[] args) {// TODO code application logic here

frmTesting frm = new frmTesting();frm.setVisible(true);

}

}

/** frmTesting.java** Created on July 14, 2006, 3:11 AM*/

package testing;

/**** @author windu*/

Page 201: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

201

public class frmTesting extends javax.swing.JFrame {

/** Creates new form frmTesting */public frmTesting() {

initComponents();cmbKampus.addItem("Cempaka Mas");cmbKampus.addItem("Cileduk");cmbKampus.addItem("Roxy");cmbKampus.addItem("Salemba");cmbKampus.setSelectedIndex(1);cmbKampus.setMaximumRowCount(3);

}

/** This method is called from within* the constructor to* initialize the form.* WARNING: Do NOT modify this code.* The content of this method is* always regenerated by the Form Editor.*/

// <editor-fold defaultstate="collapsed"// desc=" Generated Code ">private void initComponents() {

jList1 = new javax.swing.JList();btnJurusan = new javax.swing.ButtonGroup();lblNim = new javax.swing.JLabel();txtNim = new javax.swing.JTextField();lblNama = new javax.swing.JLabel();txtNama = new javax.swing.JTextField();lblSertifikat = new javax.swing.JLabel();chSD = new javax.swing.JCheckBox();chSMP = new javax.swing.JCheckBox();chSMA = new javax.swing.JCheckBox();lblJurusan = new javax.swing.JLabel();rdTI = new javax.swing.JRadioButton();rdMI = new javax.swing.JRadioButton();rdAK = new javax.swing.JRadioButton();rdTK = new javax.swing.JRadioButton();jLabel1 = new javax.swing.JLabel();cmbKampus = new javax.swing.JComboBox();btnSave = new javax.swing.JButton();jButton1 = new javax.swing.JButton();

getContentPane().setLayout(null);

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE

);lblNim.setText("Nim");getContentPane().add(lblNim);lblNim.setBounds(50, 20, 50, 20);

getContentPane().add(txtNim);txtNim.setBounds(110, 20, 100, 19);

lblNama.setText("Nama");getContentPane().add(lblNama);

Page 202: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

202

lblNama.setBounds(50, 50, 27, 14);

getContentPane().add(txtNama);txtNama.setBounds(110, 50, 190, 19);

lblSertifikat.setText("Sertifikat");getContentPane().add(lblSertifikat);lblSertifikat.setBounds(50, 80, 60, 20);

chSD.setText("SD");getContentPane().add(chSD);chSD.setBounds(110, 80, 50, 23);

chSMP.setText("SMP");getContentPane().add(chSMP);chSMP.setBounds(170, 80, 60, 23);

chSMA.setText("SMA");getContentPane().add(chSMA);chSMA.setBounds(230, 80, 47, 23);

lblJurusan.setText("Jurusan");getContentPane().add(lblJurusan);lblJurusan.setBounds(50, 110, 50, 14);

btnJurusan.add(rdTI);rdTI.setSelected(true);rdTI.setLabel("TI");getContentPane().add(rdTI);rdTI.setBounds(110, 110, 40, 23);

btnJurusan.add(rdMI);rdMI.setText("MI");getContentPane().add(rdMI);rdMI.setBounds(160, 110, 50, 23);

btnJurusan.add(rdAK);rdAK.setText("AK");getContentPane().add(rdAK);rdAK.setBounds(210, 110, 50, 23);

btnJurusan.add(rdTK);rdTK.setText("TK");getContentPane().add(rdTK);rdTK.setBounds(260, 110, 37, 23);

jLabel1.setText("Kampus");getContentPane().add(jLabel1);jLabel1.setBounds(50, 140, 50, 14);

getContentPane().add(cmbKampus);cmbKampus.setBounds(110, 140, 190, 22);

btnSave.setMnemonic('S');btnSave.setLabel("Simpan");getContentPane().add(btnSave);btnSave.setBounds(50, 180, 67, 23);

Page 203: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

203

jButton1.setMnemonic('K');jButton1.setText("Keluar");getContentPane().add(jButton1);jButton1.setBounds(230, 180, 70, 23);

java.awt.Dimension screenSize =java.awt.Toolkit.getDefaultToolkit().getScreenSize();

setBounds((screenSize.width-372)/2,(screenSize.height-263)/2,372, 263);

}// </editor-fold>

/*** @param args the command line arguments*/

public static void main(String args[]) {java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {new frmTesting().setVisible(true);

}});

}

// Variables declaration - do not modifyprivate javax.swing.ButtonGroup btnJurusan;private javax.swing.JButton btnSave;private javax.swing.JCheckBox chSD;private javax.swing.JCheckBox chSMA;private javax.swing.JCheckBox chSMP;private javax.swing.JComboBox cmbKampus;private javax.swing.JButton jButton1;private javax.swing.JLabel jLabel1;private javax.swing.JList jList1;private javax.swing.JLabel lblJurusan;private javax.swing.JLabel lblNama;private javax.swing.JLabel lblNim;private javax.swing.JLabel lblSertifikat;private javax.swing.JRadioButton rdAK;private javax.swing.JRadioButton rdMI;private javax.swing.JRadioButton rdTI;private javax.swing.JRadioButton rdTK;private javax.swing.JTextField txtNama;private javax.swing.JTextField txtNim;// End of variables declaration

}

Page 204: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

204

Jawaban Latihan 10

1. Apakah penulisan program dibawah ini diperbolehkan ?

try {

} finally {

}

Jawaban :Ya, diperbolehkan. Penggunaan perintah try {} dapat ditutup minimal dengancatch atau finally.

2. Apakah penulisan program dibawah ini diperbolehkan dan tetap mendapatkanpesan kesalahan?

catch (Exception e) {

}

Jawaban :Penggunaan Exception dapat menanganani atau menangkap keseluruhan pesankesalahan. Tetap tidak disarankan karena pesan aslinya tidak terbaca dan tidakefesien.

3. Apakah akan terjadi kesalahan pada program dibawah ini? Akankah programdapat terkompilasi dengan baik?

try {

} catch (Exception e) {

} catch (ArithmeticException a) {

}

Pada program penanganan pertama (Exception e) sudah menangkap berbagaimacam pesan kesalahan, sehingga penganan kedua (ArithmeticException a) tidakpernah tercapai. Program tidak akan terkompilasi.

Page 205: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

205

Jawaban Latihan 11

- 1 (satu) detik = 1000 milidetik- 1 Hari = 1000 milidetik X 60 detik X 60 menit X 24 Jam- Tahun aktif = 1900 + getDate()

Keseluruhan program :

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

class Frame1 extends JFrame {JPanel contentPane;JLabel jLabel1 = new JLabel();

Frame1() {

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

contentPane = (JPanel) this.getContentPane();jLabel1.setFont(new Font("Dialog", 1, 18));jLabel1.setForeground(Color.black);jLabel1.setHorizontalAlignment(

SwingConstants.CENTER);jLabel1.setText("Jam");jLabel1.setBounds(new Rectangle(29, 52, 262, 35));contentPane.setLayout(null);

this.setSize(new Dimension(336, 155));

Action stopwatch = new AbstractAction(){public void actionPerformed(ActionEvent e) {

jLabel1.setText(TampilTanggal(0, "T"));}

};

javax.swing.Timer stp =new javax.swing.Timer(1000, stopwatch);

stp.start();

contentPane.add(jLabel1, null);

show();}

private String TampilTanggal(int lday, String tipe) {String sTanggal;long lTanggal = new Date().getTime();

Page 206: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

206

//86400000 = satuhari ( 60 X 60 X 24 X 1000)lTanggal = lTanggal + lday * 86400000;Date dTanggal = new Date(lTanggal);sTanggal = (

dTanggal.getYear() + 1900)+ "-" + (dTanggal.getMonth()+ 1)+ "-" + dTanggal.getDate();

if (tipe.toUpperCase().equals("T")){sTanggal = sTanggal + " "

+ dTanggal.getHours()+ ":" + dTanggal.getMinutes()+ ":" + dTanggal.getSeconds();

}

return (sTanggal);}

}

public class praktek10{

public static void main(String args[]){

new Frame1();}

}

Page 207: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

207

Jawaban Latihan 12

- Cara penyimpanan

sSimpan = cmbKategori.getSelectedIndex() + "~" +cmbDaerah.getSelectedIndex() + "~" +txtJudul.getText() + "~" +txtArea.getText();

- Cara pembacaan

String atxt[] = txtmsg.split("~");System.out.println(atxt.length);if ( atxt.length == 1){

txtArea.setText(atxt[0]);} else {

cmbKategori.setSelectedIndex(Integer.parseInt(atxt[0])

);cmbDaerah.setSelectedIndex(

Integer.parseInt(atxt[1]));

}

Program keseluruhan :

//program kedua puluh tujuh//latihan ke empatimport javax.swing.*;import java.awt.*;import java.awt.datatransfer.*;import java.awt.event.*;import java.lang.*;import java.io.*;

class frame52 extends JFrame{

private Container konten = new Container();

private JMenuBar bar = new JMenuBar();private JMenu mnFile = new JMenu("File");private JMenuItem mniFileBaru = new JMenuItem(

"File Baru");

private JMenuItem mniFileBuka = new JMenuItem("Buka File");

private JMenuItem mniFileSimpan = new JMenuItem("Simpan File"

);private JMenuItem mniFileKeluar = new JMenuItem(

"Keluar"

Page 208: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

208

);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 JMenuItem mniTentang = new JMenuItem(

"Tentang Kami");

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();private JMenuItem mnipopCopy = new JMenuItem("Copy");private JMenuItem mnipopCut = new JMenuItem("Cut");private JMenuItem mniPaste = new JMenuItem("Paste");

FileDialog fd2=new FileDialog(this,"Save As..",FileDialog.SAVE

);FileDialog fd1=new FileDialog(

this,"Open..",FileDialog.LOAD);

String txtmsg, cuttext;Clipboard clipb;

frame52(){super("Universitas Budi Luhur");setSize(500,500);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Page 209: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

209

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

mnipopCopy.addActionListener(itemHandler);mnipopCut.addActionListener(itemHandler);mnipopPaste.addActionListener(itemHandler);

mnFile.add(mniFileBaru);mnFile.add(mniFileBuka);mnFile.add(mniFileSimpan);mnFile.add(mniFileKeluar);

mnEdit.add(mniCopy);mnEdit.add(mniCut);mnEdit.add(mniPaste);

mnTentang.add(mniTentang);

bar.add(mnFile);bar.add(mnEdit);bar.add(mnTentang);setJMenuBar(bar);

popmenu.add(mnipopCopy);popmenu.add(mnipopCut);popmenu.add(mnipopPaste);

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

Page 210: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

210

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 popupif (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){clipb=

Toolkit.getDefaultToolkit().getSystemClipboard();

Object objek = e.getSource();if (objek == mniFileBaru){

cmbKategori.setSelectedIndex(0);cmbDaerah.setSelectedIndex(0);txtJudul.setText("");txtArea.setText("");

}else if (objek == mniFileBuka) {try{

fd1.setVisible(true);String filename=fd1.getFile();String dirname=fd1.getDirectory();

File openfile=new File(dirname,filename);

FileInputStream fis=new FileInputStream(Openfile

);

int bytelength=fis.available();

txtmsg = "";for (

int bytecount=0;bytecount<bytelength;bytecount++)

{

Page 211: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

211

char fch=(char)fis.read();txtmsg=txtmsg+fch;

}

String atxt[] = txtmsg.split("~");System.out.println(atxt.length);if ( atxt.length == 1){

txtArea.setText(atxt[0]);} else {

cmbKategori.setSelectedIndex(Integer.parseInt(atxt[0])

);cmbDaerah.setSelectedIndex(

Integer.parseInt(atxt[1]));txtJudul.setText(atxt[2]);txtArea.setText(atxt[3]);

}}catch(Exception ioe){

JOptionPane.showMessageDialog (frame52.this,ioe.toString(),"Error", JOptionPane.PLAIN_MESSAGE);

}}else if (objek == mniFileSimpan)

try{String sSimpan;

sSimpan = cmbKategori.getSelectedIndex() + "~" +cmbDaerah.getSelectedIndex() + "~" +txtJudul.getText() + "~" +txtArea.getText();

fd2.setVisible(true);FileOutputStream fos1=new FileOutputStream(

fd2.getDirectory()+fd2.getFile()

);fos1.write(sSimpan.getBytes());fos1.close();

}catch(Exception ioe) {JOptionPane.showMessageDialog(

frame52.this,ioe.toString(),"Error",JOptionPane.PLAIN_MESSAGE

);}else if (objek == mniCopy || objek == mnipopCopy){try{

cuttext=txtArea.getSelectedText();if cuttext.equals(""))

cuttext = txtArea.getText();

StringSelection sel=new StringSelection(Cuttext

);clipb.setContents(sel,null);

}catch(Exception ioe) {JOptionPane.showMessageDialog (

Page 212: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

212

frame52.this,ioe.toString(),"Error Copy",JOptionPane.PLAIN_MESSAGE

);}

}else if (objek == mniCut || objek == mnipopCut ){try{cuttext=txtArea.getSelectedText();

StringSelection sel=new StringSelection(Cuttext

);clipb.setContents(sel,null);int cutindex=txtArea.getText().indexOf(

cuttext);

txtArea.replaceRange("",cutindex,cutindex +cuttext.length()

);}catch(Exception ioe){

JOptionPane.showMessageDialog(frame52.this,ioe.toString(),"Error",JOptionPane.PLAIN_MESSAGE

);}

}else if (objek == mniPaste || objek == mnipopPaste

){

try{Transferable cont=clipb.getContents(this);cuttext=(String)(

cont.getTransferData(DataFlavor.stringFlavor)

);

int getcaretpos=txtArea.getCaretPosition();txtArea.insert(cuttext,getcaretpos);

}catch(Exception ioe){JOptionPane.showMessageDialog(

frame52.this,ioe.toString(),"Error",JOptionPane.PLAIN_MESSAGE);

}}else if (objek == mniTentang){

JOptionPane.showMessageDialog (frame52.this,"Bahasa Pemrograman 3-Universitas Budi Luhur","Tentang",JOptionPane.PLAIN_MESSAGE

);}else if (objek == mniFileKeluar)

System.exit(0);

}}

}

Page 213: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

213

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

new frame52();}

}

Page 214: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

214

BAB XVII

PENUTUP

Akhir kata, penulis berharap buku ini dapat berkontribusi dalam upayapengembangan perangkat lunak di Indonesia. Terutama, ditujukan pada mahasiswadan lulusan perguruan tinggi. Selanjutnya penulis juga berharap masukkan dan kritikdari para pengguna maupun dari kalangan praktisi.

Page 215: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

215

BAB XVIII

DAFTAR PUSTAKA

- http://www.sun.com- http://java.sun.com- tjava, pdf edition- http://www.mysql.com- http://www.java2s.com/ExampleCode- http://www.jfree.org- http://www.pentaho.org- Tuntunan Pemrograman Java Jilid2, Rangsang Purnama- Diktat Bahasa Pemrograman 3 – Java, Spits Harco Leslie

Page 216: BAHASA PEMROGRAMAN3 - Java Gui & Database.pdf

216

TENTANG PENULIS

Penulis bernama Windu Gata, SKomterlahir di Jakarta pada tanggal 09 Juli 1976.

sejak tahun 1999 penulis bekerja padainstansi pemerintah, yaitu LKBN ANTARAsebagai Database Administrator, analisa danprogrammer bagian pengembangan danpenelitian.

Selain itu penulis merupakan salah satudosen di universitas Budi Luhur dengan matakuliah Unix, Bahasa Pemrograman 3 – Javalanjutan. Bahasa Pemrograman 4 – Java

komunikasi dan mobile, Pengelolalan Sistem Informasi, Perancangan Sistem Aplikasidan Sistem Database 2 – Database Lanjutan. Penulis Juga sebagai pengajar di LembagaPendidikan Jurnalistik ANTARA (LPJA) – LKBN ANTARA, khusus dibidanginformatika, dan pengajar lepas.

Hobi di bidang teknik informatika (TI), khususnya dibidang pemrograman, telahdigeluti sejak memasuki bangku kuliah Strata Satu (S1) dengan jurusan TeknikInformatika di Universitas Budi Luhur tahun 1995, dan menyelesaikan studinya tahun1999.

Seiring waktu berjalan dan perkembangan IT yang semakin pesat, penulismengasah kemampuan dan memliki ketrampilan di bidang sistem operasi seperti Solaris-Sun Microsystem, AIX – IBM RS6000, linux, dan Microsoft Windows. Begitu puladibidang pemrograman, bahasa pemrograman yang telah kuasai seperti Ms. Visual Basic,VBA MS. Access, PHP, ASP, Oracle IAS, Web programming dan Java , dengan databaseMs.Access, MySql, Ms. Access, Ms. SqlServer, dan Oracle. Juga tools yang digunakanseperti Seagate Crystal Report dan networking (TCP/IP, UDP, Multicasting danDVB/IP).

Pengalaman membuat program di LKBN ANTARA ataupun sebagai programmerlepas telah dijalani. Contoh program di tempat penulis bekerja, penulis telah membuatseperti program komunikasi RS232, TCP dan DVB/IP dengan sarana modem sampaisatelit. Dan sebagai pemrogramer lepas, penulis telah membuat diberbagai instasipemerintah dan swasta.

Cita-cita untuk turut memajukan bangsa dan negara melalui kemampuan penulis,salah satunya dengan menulis buku ini. Dan berharap, dengan adanya buku ini, jikaseseorang yang tidak bisa menjadi bisa dan yang sudah bisa menjadi lebih bisa.

Kritik dan saran sangat dinanti dengan mengirimkannya ke email penulis, [email protected] atau [email protected]. Karena penulis bukanlah orang yangsempurna, masih banyak yang harus dipelajari dan rasa ingin memperbaiki sehinggadapat menulis buku-buku lainnya.

Ucapan terima kasih, penulis ucapkan atas perhatiannya. Dan terima kasihterdalam teruntuk istri dan anak-anakku, keluarga, guru-guru, keluarga besar LKBNANTARA, Keluarga Besar Universitas Budi Luhur dan Negeri ku Indonesia.

-- Hiduplah Bangsa dan Negara, saya mencintaimu INDONESIA ---