Bahasa Pemrograman3 - Java Gui & Database
Bahasa Pemrograman3 - Java Gui & Database
1
KATA PENGANTAR
Dengan berkembangnya teknologi, bahasa pemrograman Java tampil dengan gaya
yang berbeda dengan bahasa pemrograman sebelumnya. Dengan keunggulan yang tidak
dimiliki oleh bahasa pemrograman lainnya, yaitu multiplatform. Java dengan motonya
“Write Once Use Every Where” telah dibuktikan dengan banyaknya peralatan dewasa ini
yang menggunakan bahasa pemrograman Java.
Java juga merupakan bahasa pemrograman bebas atau tanpa biaya, sehingga
memudahkan para pengembang untuk mengembangkan aplikasi, maupun dari sisi
pengguna aplikasi, dapat mengefesienkan biaya yang harus dikeluarkan.
Buku ini selain membahas tentang pemgrograman GUI (Grafik User Interface),
pembahasan lainnya adalah penggunaan dan penanganan kesalahan program (Error
Exception), penggunaan program dengan proses parallel (thread), penanganan file input
dan output, bagaimana cara menyimpan data pada database, membuat laporan
menggunakan JFreeReport dan Pentaho, dan menyinggung sedikit mengenai penggunaan
editor bahasa pemrograman Java, yaitu NetBeans dan JBuilder.
Pembuatan buku ini dibuat dan ditujukan kepada pengembang program, mahasiswa
informatika, Sekolah Menengah Kejuruan (SMK) informatika, dan buat masyarakat luas
yang tertarik mengeneai informatika khususnya bidang pembuatan aplikasi program
dengan menggunakan bahasa pemrograman Java. Dengan tujuan dapat diterapkan dan
dimanfaatkan secara luas di masyarakat.
Penulis telah semaksimal mungkin untuk menulis buku Bahasa Pemrograman Java
ini, sebagai pengabdian penulis terhadap Negara untuk turut serta mencerdaskan
masyarakat luas.
Walaupun sudah semaksimal mungkin penulis tetap membutuhkan kritis dan saran
dari teman-teman yang telah membaca tulisan ini dengan mengirimkan email ke
[email protected] atau [email protected].
Akhir kata saya ucapkan terima kasih, semoga Bangsa dan Negara Indonesia semakin
maju diseluruh bidang dan semakin memperhatikan dibidang pendidikan Indonesia
khususnya bidang Informatika.
Penulis
2
DAFTAR ISI
3
PENDAHULUAN
Teknologi Java dibuat sebagai bahasa pemrograman kecil pada tahun 1991 oleh
Sun Microsystem. Pada saat itu proyek pembuatan bahasa pemrograman Java disebut
“The Green Project”.
“The Green Project” yang merupakan proyek rahasia saat itu beranggotakan 13
(tiga belas) orang dan dipimpin oleh James Gosling yang berkantor tersembunyi di
Sand Hill Road di Menlo Park. Secara teknis terputus dari perusahaan SUN dan
dikerjakan sekitar 18 (delapan belas) bulan lamanya.
Mereka berusaha untuk mengantisipasi dengan merancang aplikasi atau perangkat
lunak lanjutan pada komputer. Hasilnya sangat berbeda dengan sistem komputer
yang telah ada. Nama bahasa pemrograman dikenal dengan nama “Oak”.
Pengenalan bahasa pemrograman baru tersebut dikenalkan pada industri televisi
kabel digital, tetapi ide mereka terlalu jauh dan tidak dapat diterapkan pada waktu
dekat, sehingga industri televisi belum siap menerima teknologi yang mereka
tawarkan.
Saat teknologi internet sudah dikenal luas, bahasa pemrograman “Oak” berubah
menjadi bahasa pemrograman Java dan dipublikasi tahun 1995. Aplikasi pertama
yang menggunakan teknologi Java adalah Netscape Navigator, yang merupakan
Selancar Internet.
Saat ini, dalam waktu 10 tahun, penggunaan Java sudah dilakukan oleh 4 (empat)
juta pengembang sistem aplikasi komputer secara keseluruhan di dunia, dan telah
memasuki segmen industri besar serta penggunaannya serta kertekaitannya dengan
peralatan, komputer dan jaringan.
Terbukti dengan keunggulan, efesiensi, penggunaan banyak platform, dan
keamanan membuat teknologi Java digunakan untuk penanganan 2.5 (dua setengah)
miliar peralatan yang terdiri dari lebih 700 (tujuh ratus) juta komputer, lebih dari 1
(satu) miliar peralatan bergerak (data berdasarkan dari Ovum), 1.25 (satu seperempat)
miliar kartu pintar, printer, kamera Web, permainan, navigasi kendaraan seperti
mobil, aplikasi pembayaran parkir dan banyak lagi.
Pada saat ini, kita dapat menemukan Teknologi Java pada jaringan komputer dan
peralatan yang berhubungan dengan Internet dan komputer supercepat para ahli
hingga laptop dan handphone. Dari pengguna di jalan-jalan hingga pemain permainan
(game) dan kartu kredit, sebagai bukti bahwa teknologi Java ada dimana-mana.
Kenapa pengembang aplikasi memilih Teknologi Java ?. Karena bahasa program
Java telah berulang-ulang dikaji ulang, pengembangan, pengujian langsung dan
dibuktikan dengan komunitas lebih dari 4 (empat) juta pengembang perangkat lunak
dan aplikasi.
Alasan lain adalah bahasa pemrograman Java dapat dikembangkan pada 1 (satu)
platform atau jenis sistem operasi dan dapat dijalankan pada platform lainnya, dan
tidak tergantung pada aplikasi web, server client, penyimpanan data HTML dan lain-
lain.
Dengan kombinasi teknologi yang dimiliki oleh Java menjadikan aplikasi yang
dapat dan mudah diubah suatu saat serta meringankan sisi pengguna produk aplikasi.
4
Buku Bahasa Pemrograman JAVA-GUI, yang ada dihadapan anda sekarang,
menggunakan bahasa pemrograman Java standard J2SDK yang dikembangkan oleh
Sun Microsystem (www.sun.com).
Selain itu, buku ini disusun menggunakan konsep praktik langsung (learning by
doing) yang dilengkapi pembahasan contoh program dengan menggunakan beberapa
objek Java , lengkap dengan pembahasannya.
Harapannya, buku ini bisa mengantarkan pembaca mampu mengembangkan
program GUI (Grafik User Interface) layaknya form dan objek lainnya. Sekaligus
dapat digunakan dalam form, grafik 2 (dua) dimensi, event handling, error handling,
file akses, multithread, dan database (mysql) serta penggunaan JBuilder, Netbeans
dan JfreeReport dan Pentaho.
Dikarenakan buku ini diperuntukkan pada pembaca yang sudah mengenal dasar-
dasar algoritma dan dasar-dasar bahasa pemrograman Java .
Pembahasannya terdiri dari 14 (empat belas) bab, yaitu :
BAB I
Pengenalan GUI dan cara menggunakan Jframe.
BAB II
Penggunaan grafik 2D pada Jframe.
BAB III
Contoh program input mahasiswa menggunakan objek JLabel, JTextField,
JCheckBox, JRadioButton, JComboBox, JButton, Action Listener dan Layout
(FlowLayout dan Border Layout).
BAB IV
Merubah contoh program input pada bab III dengan merubah objek JCheck box
dengan JList Multi Selected, dan objek JRadioButton dengan JList Single
Selected. Sedangkan layout yang digunakan adalah Border Layout
BAB V
Bab ini menerangkan bagaimana menggunakan peralatan mouse dan keyboard
dengan fasilitas Java objek MouseMotionListener, MouseListener, KeyListener,
dan ActionListener.
BAB VI
Membuat program konversi suhu menggunakan objek JSlider
BAB VII
Membuat program editor berita menggunakan objek JMenuBar, JMenu,
JPopupMenu, JMenuItem, JTextArea, dan Box
BAB VIII
Mengenal penggunaan JInternalFrame
BAB IX
Mengenal penggunaan tampilan group berupa tab dengan objek JTabbedPane
BAB X
Mengenal model desain tampilan pada standar Java
BAB XI
Bagaimana cara mengatasi kesalahan program atau yang kita kenal dengan Error
Excption.
BAB XII
5
Mengenal Penggunaan Thread
BAB XIII
Mengenal cara mengakses file dan mengembangkan program pada bab VII
menggunakan fasilitas akses file.
BAB XIV
Cara menggunakan database mysql dan interface koneksi database JDBC
BAB XV
Membuat laporan dengan menggunakan jFreeReport
BAB XVI
Jawaban Soal Latihan
BAB XVI
Penutup
6
BAB I
GUI (Grafik User Interface)
Pertanyaan mendasar mengenai penggunaan tampilan atau GUI dalam program
adalah seberapa penting hal itu dilakukan. Bukankah program sudah berjalan sesuai
dengan permintaan?
Pertanyaan itu biasanya menghantui setiap pengembang program (programmer)
pada saat membuat program.
Tentu saja kepentingan penggunaan tampilan akan berpulang pada penempatan
program itu sendiri.
Untuk program yang hanya ditempatkan pada sisi komputer server yang jarang
berinteraksi dengan pengguna, maka fungsi dasar program dirasa cukup memadai.
Tetapi apabila program tersebut diperkirakan akan banyak berinteraksi dengan
pengguna, maka ada baiknya jika program menggunakan tampilan.
Beberapa alasan bahwa program harus menggunakan tampilan, yaitu
- Dengan tampilan, program akan nampak jauh lebih menarik
- Interaktif
- User Friendly atau mudah dalam penggunaannya
- Dapat berinteraksi dengan peralatan seperti mouse, joystick dan peralatan lainnya.
Jika pengembang program peduli terhadap tampilan, biasanya program yang
dihasilkan akan lebih diterima oleh pengguna. Bahkan sering karena tampilan yang
menarik, program itu memiliki nilai yang lebih tinggi dibandingkan dengan program
lain dengan tampilan yang sederhana.
Saat ini, terdapat beberapa model Frame GUI yang dapat digunakan saat
mengembangkan program Java yaitu java.awt.* dan javax.swing.*.
Di dalam buku ini, untuk tampilan GUI, penulis menggunakan javax.swing.*,
yaitu JFrame, Jlabel, JTextField, JRadioButton, JCheckBox, JComboBox, JTextArea,
JSlider, JMenuBar, JPopUpMenu, JMenuItem, dan tools lainnya.
Disertakan pula cara instalasi dan penggunaan Borland JBuilder dan Netbean
dalam pembuatan aplikasi GUI.
JFRAME
Saat kita membuat program Java GUI, yang pertama kali kita harus kuasai adalah
penggunaan JFrame. Jframe digunakan untuk mendesainmodel tampilan yang
didalamnya dapat kita tempatkan komponen-komponen lainnya.
Contoh penggunaan tampilan frame pada program Java :
//program pertama
//Tidak Menggunakan Construktor
import javax.swing.JFrame;
class frame1{
public static void main(String args []){
JFrame tampil = new JFrame();
tampil.show();
}
}
7
Atau
Apabila kedua program tersebut dikompilasi dan dijalankan maka akan terdapat
tampilan seperti dibawah ini :
Untuk membuat frame dengan tulisan “Universitas Budi Luhur”, pada posisi x =
10 dan Y = 100, lebar = 300, tinggi = 200, Resizable false, dan akan terhapus di
alokasi memori setelah aplikasi di tutup seperti pada gambar 1.2 sebagai berikut :
setLocation
(10,100);
this.setSize(300,200)
//program ketiga
import javax.swing.*;
class frame61 extends JFrame{
8
frame61(){
super("Universitas Budi Luhur");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocation (10,100);
this.setSize(300,200);
setResizable(false);
show();
}
}
class frame62{
public static void main (String args[]){
new frame61();
}
}
9
BAB II
GRAFIK DUA DIMENSI (2D) PADA JFRAME
Grafik dua dimensi (2D) menggunakan class yang terdapat pada java.awt.*, yaitu
Canvas. Komponen Canvas tersebut berbentuk kotak kosong pada layar. Di dalam
Canvas tersebut dapat kita gunakan sebagai media gambar 2 (dua) dimensi.
Penggunaan Canvas harus dibarengi dengan sub class paint sebagai media gambar
yang berupa perintah.
//program ke empat
import javax.swing.*;
import java.awt.*;
//Class Canvas
class grap1 extends Canvas{
public void paint (Graphics g){
//(x,y,width,height)
g.drawRect(1,5,50,20);
g.drawLine(35,50,100,70);
//(x,y,width,height,arcwidth,archeight
g.drawRoundRect(1,50,30,40,5,100);
g.setColor(Color.YELLOW); //set warna
g.drawOval(110,50,40,30);
g.setFont(new Font("Tahoma",Font.ITALIC,20));
g.drawString("9511500134",80,15);
g.setColor(Color.BLUE); //set warna
g.fillRect(1,110,30,20);
g.fillOval(50,110,30,20);
}
}
10
//Class frame
class grap11 extends JFrame{
private Container konten=new Container();
private grap1 duaD =new grap1();
grap11(){
super("Universitas Budi Luhur");
setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE
);
this.setLocation(10,100);
this.setSize(250,200);
konten= getContentPane();
konten.add(duaD);
show();
}
Pada class pertama, class yang bernama grap1, merupakan turunan dari objek
Canvas yang berasal dari java.awt yang digunakan untuk melakukan design grafik
2D.
Adapun struktur dasar dari canvas bersifat abstrak dengan bentuk dasar
pemrogramannya adalah sebagai berikut :
[public|private] class <nameclass> extends Canvas{
public void paint(Graphics <objectname>){
…..
}
}
11
- Kotak dengan bundaran di pinggir
fillRect (x,y,width,height)
- Penggunaan Font
- String
drawstring(“<tulisan>”,x,y)
- Garis
drawLine(x,y,width,height)
- Bundar
drawOval(x,y,width,height)
fillOval(x,y,width, height)
- Pewarnaan
setColor(<color>)
Ketika hendak menggunakan Class pertama pada class kedua (frame) perlu
menggunakan perintah :
konten.add(duaD);
12
Latihan 1
Buatlah program 2 (dua) dimensi seperti pada gambar dibawah ini
13
BAB III
JLabel, JTextField, JCheckBox, JRadioButton,
JComboBox, JButton , Action Listener Dan Layout
(FlowLayout dan Border Layout)
Objek GUI yang dapat digunakan pada bahasa pemrograman Java standard,
khususnya javax.swing.*, sangat banyak dan fleksibel.
Contoh pada Gambar 3.1, menunjukan form input-an mahasiswa yang
menggunakan beberapa objek javax.swing.*, yaitu : JLabel, JTextField, JCheckBox,
JRadioButton, JComboBox dan JButton. Ditambah dengan penggunaan Action
Listener dari java.awt.event.* dan model-model tampilan (FlowLayout dan
GridLayout )
JLabel JTextField
JCheckBox
JRadioButton
JComboBox
JButton
JLabel
14
Membuat JLabel dengan isi text di dalamnya, gambar dan horizontal
alignment (LEFT, CENTER, RIGHT, LEADING atau TRAILING) .
JLabel(String text, int horizontalAlignment)
Membuat JLabel dengan isi text di dalamnya dan horizontal alignment (LEFT ,
CENTER, RIGHT , LEADING atau TRAILING).
Contoh Penggunaan :
http://java.sun.com/docs/books/tutorial/uiswing/components/label.html
JTextField
15
Memberikan nilai string pada JTextField
Contoh Penggunaan :
http://java.sun.com/docs/books/tutorial/uiswing/components/textfield.html
JCheckBox
Contoh Penggunaan :
16
http://java.sun.com/docs/books/tutorial/uiswing/components/button.html
JRadioButton
Contoh Penggunaan :
http://java.sun.com/docs/books/tutorial/uiswing/components/button.html
17
Saat penggunaan JRadioButton harus menggunakan ButtonGroup untuk
menggabungkan JRadioButton.
ButtonGrop
JComboBox
Berfungsi untuk memilih satu dari beberapa pilihan dengan tampilan list dan dapat
diedit sesuai dengan kebutuhan
Constructor
JComboBox()
Membuat JComboBox .
JComboBox(ComboBoxModel aModel)
Membuat JComboBox dengan ComboBoxModel yang diinginkan
(DefaultComboBoxModel, MetalFileChooserUI.DirectoryComboBoxModel,
MetalFileChooserUI.FilterComboBoxModel).
JComboBox(Object[] items)
Membuat JComboBox dengan isian berupa array.
JComboBox(Vector items)
Membuat JComboBox dengan element Vector.
18
Beberapa Method yang harus diketahui
Void addItem(Object anObject)
Menambah Item pada JComboBox.
Int getItemCount()
Mendapat nilai jumlah item pada JComboBox.
Object getItemAt(int index)
Mendapatkan nilai dari item dengan Index yang ditentukan.
int getMaximumRowCount()
Mendapatkan jumlah nilai maksimum list pada JComboBox
int getSelectedIndex()
Mendapatkan nilai item ke berapa (index) pada JComboBox .
Object getSelectedItem()
Mendapatkan isi dari JComboBox.
boolean isEditable()
Mendapatkan nilai true atau false dari status editable
JComboBox.
void removeAllItems()
Menghapus semua item pada JComboBox.
void removeItem(Object anObject)
Menghapus salah satu item pada JComboBox.
void setEditable(boolean aFlag)
Merubah status editable pada JComboBox.
void setEnabled(boolean b)
Mengaktifkan atau menon aktifkan JComboBox .
void setMaximumRowCount(int count)
Menampilkan maximum item yang dapat ditampilkan
JComboBox.
void setSelectedIndex(int anIndex)
merubah pointer Index.
void setSelectedItem(Object anObject)
Merubah posisi item berdasarkan object.
Contoh Penggunaan :
http://java.sun.com/docs/books/tutorial/uiswing/components/combobox.html
JButton
19
Membuat tombol tanpa teks dan gambar ikon.
JButton(Icon icon)
Membuat tombol dengan gambar ikon.
JButton(String text)
Membuat tombol dengan tampilan teks.
JButton(String text, Icon icon)
Membuat tombol dengan tampilan teks dan gambar ikon.
Contoh Penggunaan :
http://java.sun.com/docs/books/tutorial/uiswing/components/button.html
Dalam tampilan layar pada Gambar 3.1, apabila tombol “Tampilkan” ditekan
maka akan tampil isi data dari form. Pada pemrograman Java, fungsi tersebut dapat
menggunakan method addActionListener dan actionPerformed .
Method
void actionPerformed(ActionEvent e)
Mendeteksi Action yang diberikan.
container
panel1 gridlayout (6,2)
lblNim txtNim
lblNama txtNama
panel2 gridlayout (1,3)
lblSertifikat
chSD chSMP chSMA
20
Terdapat satu Container dengan layout FlowLayout.CENTER, yang berarti
Container selalu berada di tengah Frame. Dengan 3 (tiga) panel, yaitu :
- panel1, dengan layout GridLayout(6,2) untuk penempatan lblNim, txtNim,
lblNama, txtNama, lblSertifikat, panel2, lblJurusan, panel3, lblKampus,
cmbKampus, cmdSave, dan cmdExit
- panel2, dengan layout GridLayout(1,3) untuk penempatan chSD, chSMP, dan
chSMA
- panel3, dengan layout GridLayout(1,4), untuk penempatan rdTI, rdMI, rdAK, dan
rdTKD
Setelah mengenal objek yang akan digunakan, maka kita dapat menganalisa
program untuk tampilan pada layer seperti pada Gambar 3.1
//program ke lima
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
21
private JButton cmdEnd = new JButton("Selesai");
frame23(){
super("Universitas Budi Luhur");
setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE
);
this.setLocation(10,100);
this.setSize(500,200);
konten=getContentPane();
konten.setLayout(new FlowLayout(
FlowLayout.CENTER)
);
lblNim.setText("NIM");
lblNama.setText("NAMA");
lblSertifikat.setText("Sertifikat");
lblJurusan.setText("Jurusan");
lblKampus.setText("Kampus");
panel1.setLayout(new GridLayout(6,2));
panel1.add(lblNim);
panel1.add(txtNim);
panel1.add(lblNama);
panel1.add(txtNama);
panel1.add(lblSertifikat);
panel2.setLayout(new GridLayout(1,3));
panel2.add(chSD);
panel2.add(chSMP);
panel2.add(chSMA);
panel1.add(panel2);
grpJurusan.add(rdTI);
grpJurusan.add(rdMI);
grpJurusan.add(rdAK);
grpJurusan.add(rdTK);
panel3.setLayout(new GridLayout(1,4));
panel3.add(rdTI);
panel3.add(rdMI);
panel3.add(rdAK);
panel3.add(rdTK);
panel1.add(lblJurusan);
panel1.add(panel3);
22
cmdSave.addActionListener(itemHandler);
panel1.add(cmdEnd);
cmdEnd.addActionListener(itemHandler);
konten.add(panel1);
show();
sTampil+="\nKampus,";
sTampil+=cmbKampus.getItemAt(
cmbKampus.getSelectedIndex()
);
JOptionPane.showMessageDialog(
null,sTampil , "HASIL",
JOptionPane.INFORMATION_MESSAGE
);
}
else {System.exit (0);}
}
}
public static void main(String args[]){
new frame23();
}
}
23
Latihan 2
Pada program kelima tambahkan beberapa fasilitas yang akan tampil pada saat program
dijalankan, antara lain :
- Icon pada frame
- Nim : 9511500134
- Nama : Windu Gata
- SD : Checked
- SMP : Checked
- SMA : Checked
- Jurusan TI : Checked
- Icon Pada Tombol Save
- Icon Pada Tombol End
- Short Key “P” Pada Tombol Save
- Short Key “S” Pada Tombol End
24
BAB IV
JList (Single Selected dan Multi Selected) DAN
LAYOUT (Border Layout)
Gambar 4.1 adalah merupakan model form yang mirip seperti pada Gambar 3.1
dimana JCheckBox diganti dengan JList model multiselection dan JRadioButton
diganti dengan JList model singleselection.
JList
Multiple Selection
JList
Single Selection
JLIST
25
Beberapa Method yang harus diketahui
int getSelectedIndex()
Mendapatkan nilai Index jika tidak ada yang terpilih maka
Jlist akan memberikan nilai -1.
Object getSelectedValue()
Mendapatkan nilai terpilih jika tidak ada yang terpilih maka
Jlist akanmemberikan nilai null.
Object[] getSelectedValues()
Mendapatkan nilai dalam bentuk Array dari sel terpilih.
boolean isSelectedIndex(int index)
Mendapatkan nilai true apabila index terpilih dan akan
mengembalikan nilai false jika tidak terpilih.
boolean isSelectionEmpty()
Mendapatkan nilai true apabila tidak ada sel yang terpilih.
void setSelectedIndex(int index)
Mengaktifkan sebuah sel .
void setSelectedValue(Object anObject,
boolean shouldScroll)
Mengaktifkan objek pada list.
void setSelectionBackground(Color selectionBackground)
Memberikan warna background.
void setSelectionForeground(Color selectionForeground)
Memberikan warna foreground.
void setSelectionMode(int selectionMode)
Merubah model Jlist menjadi single selection
<object>.setSelectionMode(ListSelectionModel.SINGLE_SE
LECTION)
atau multiple selection.
<object>.setSelectionMode(ListSelectionModel.MULTIPLE_
INTERVAL_SELECTION)
Contoh Penggunaan :
http://java.sun.com/docs/books/tutorial/uiswing/components/list.html
NORTH
WEST CENTER EAST
26
SOUTH
Untuk lebih jelasnya rancangan tampilan pada Gambar 3.1 adalah sebagai berikut :
panel4
lblSertifikat lstSertifikat
lblJurusan lstJurusan
panel3(2,2) BorderLayout.SOUTH
lblKampus cmbKampus
cmdSave cmdExit
27
Contoh program java untuk Gambar 4.1 :
//program ke enam
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
konten=getContentPane();
konten.setLayout(
new FlowLayout(
FlowLayout.CENTER
)
);
lblNim.setText("NIM");
lblNama.setText("NAMA");
lblSertifikat.setText(
28
"Sertifikat (Multiple Selection)"
);
lblJurusan.setText(
"Jurusan (Single Selection)"
);
lblKampus.setText("Kampus");
panel1.setLayout(new GridLayout(2,2));
panel1.add(lblNim);
panel1.add(txtNim);
panel1.add(lblNama);
panel1.add(txtNama);
panel2.setLayout(new GridLayout(2,2));
//Multi selection
lstSertifikat = new JList(sSertifikat);
lstSertifikat.setSelectionMode(
ListSelectionModel.MULTIPLE_INTERVAL_SELECTION
);
panel2.add(lblSertifikat, BorderLayout.NORTH);
//Single Selection
lstJurusan = new JList(sJurusan);
lstJurusan.setSelectionMode(
ListSelectionModel.SINGLE_SELECTION
);
panel2.add(lblJurusan);
//Jangan lupa biar kasih JScroll Pane
//Biar tampil scrollnya
panel2.add(new JScrollPane(lstJurusan));
panel3.setLayout(new GridLayout(2,2));
cmbKampus.setSelectedIndex(1);
cmbKampus.setMaximumRowCount(3);
panel3.add(lblKampus);
panel3.add(cmbKampus);
panel4.setLayout(new BorderLayout());
panel4.add(panel1, BorderLayout.NORTH);
panel4.add(panel2, BorderLayout.CENTER);
panel4.add(panel3, BorderLayout.SOUTH);
29
konten.add(panel4, BorderLayout.EAST);
show();
if (lstSertifikat.isSelectedIndex(0))
sTampil+=", " + sSertifikat[0];
if (lstSertifikat.isSelectedIndex(1))
sTampil+=", " + sSertifikat[1];
if (lstSertifikat.isSelectedIndex(2))
sTampil+=", " + sSertifikat[2];
JOptionPane.showMessageDialog(
null, sTampil , "HASIL",
JOptionPane.INFORMATION_MESSAGE
);
}
else {System.exit (0);}
}
}
30
Latihan 3
- Buatlah tampilan Handphone seperti pada Gambar 4.2 kemudian aktifkan tombol
numerik (*,#,0-9) sehingga dapat tampil pada TextField dibawah ini
- Buatlah program konversi suhu celcius, Kelvin dan Farenheit dengan tampilan
seperti pada Gambar 4.3.
31
BAB V
MouseMotionListener, MouseListener, KeyListener,
dan ActionListener.
Salah satu keunggulan GUI sehingga sering digunakan pada pemrograman, yaitu
karena dapat berinteraksi dengan media Mouse dan tentu saja Keyboard. Fasilitas
listener juga ada pada objek java.awt.event.*.
Pada pemrograman Java, untuk mengenali pergerakan mouse dikenal sebutan
MouseMotionListener, sedangkan mengenali penggunaan tombol pada mouse
disebut dengan MouseListener, sedangkan penggunaan tombol pada keyboard
disebut dengan KeyListener.
MouseMotionListener
MouseListener
KeyListener
32
void keyPressed(KeyEvent e)
Tombol keyboard ditekan.
void keyReleased(KeyEvent e)
Tombol keyboard dilepas.
void keyTyped(KeyEvent e)
Tombol keyboard melakukan pengetikan
ActionListener
Method
void actionPerformed(ActionEvent e)
Mengetahui Action yang dilakukan.
//program ketujuh
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
konten=getContentPane();
konten.setLayout(
new FlowLayout(
FlowLayout.CENTER
)
);
label1.setForeground(Color.YELLOW);
label1.setText("Mouse Event");
33
label2.setFont(
new Font("Tahoma",Font.BOLD,20)
);
label2.setForeground(Color.BLUE);
label2.setText("Mouse Move");
konten.add(label1);
konten.add(label2);
konten.add(txtKey);
konten.add(label3);
label2.setForeground(Color.RED);
show();
//Mouse Listener
public void mouseReleased(MouseEvent e){
label1.setText("Mouse Released");
}
public void mousePressed(MouseEvent e){
label1.setText("Mouse Pressed");
}
public void mouseExited(MouseEvent e){
label1.setText("Mouse Exited");
}
public void mouseEntered(MouseEvent e){
label1.setText("Mouse Entered");
}
public void mouseClicked(MouseEvent e){
label1.setText("Mouse Clicked");
}
//Key Listener
public void keyTyped(KeyEvent e){
label3.setText(e.getKeyText(e.getKeyCode()));
}
34
public void keyPressed(KeyEvent e){
label3.setText(e.getKeyText(e.getKeyCode()));
}
public void keyReleased(KeyEvent e){
label3.setText(e.getKeyText(e.getKeyCode()));
}
//program kedelapan
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
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);
35
}
public void mouseMoved(MouseEvent e){
label2.setText(
"Moved at [" +
e.getX()+","+e.getY()+"]"
);
}
}
);
konten.addMouseListener(
new MouseListener(){
public void mouseReleased(MouseEvent e){
label1.setText("Mouse Released");
}
public void mousePressed(MouseEvent e){
label1.setText("Mouse Pressed");
}
public void mouseExited(MouseEvent e){
label1.setText("Mouse Exited");
}
public void mouseEntered(MouseEvent e){
label1.setText("Mouse Entered");
}
public void mouseClicked(MouseEvent e)
{label1.setText("Mouse Clicked");
}
}
);
txtKey.addKeyListener(
new KeyListener(){
public void keyTyped(KeyEvent e){
label3.setText(
e.getKeyText(e.getKeyCode())
);
}
public void keyPressed(KeyEvent e){
label3.setText(
e.getKeyText(e.getKeyCode())
);
}
public void keyReleased(KeyEvent e){
label3.setText(
e.getKeyText(e.getKeyCode())
);
}
}
);
show();
}
public static void main(String args[]){
new grap22();
}
}
36
Kedua program tersebut apabila dijalankan mempunyai hasil yang sama (Gambar
5.1) namun model penulisannya berbeda.
37
…
}
else {System.exit (0);}
}
}
38
Latihan 4
/*
*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 Pear() {
setSize(new Dimension(400,300));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
39
oval = new Ellipse2D.Double();
leaf = new Ellipse2D.Double();
stem = new Ellipse2D.Double();
circ = new Area(circle);
ov = new Area(oval);
leaf1 = new Area(leaf);
leaf2 = new Area(leaf);
st1 = new Area(stem);
st2 = new Area(stem);
Graphics2D g2 = (Graphics2D) g;
/*
*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
*/
40
g2.fill(st1);
g2.setColor(Color.yellow);
- Kemudian gambar ulang buah pear tersebut sesuai dengan koordinat X dan Y dari
posisi mouse click
41
BAB VI
JSlider
Pada bab ini penulis membuat contoh program konversi suhu menggunakan
komponen Jslider. Dengan rumus :
- Fahrenheit = (Celcius * 1.8) + 32
- Kelvin = Celcius + 273.15;
JSlider
JSlider digunakan untuk menandakan nilai dengan model slide. Nilai tersebut
berupa nilai minimum, nilai maksimum dan nilai-nilai antara serta bertipe data
integer.
Constructor
JSlider()
Membuat horizontal slider dengan nilai minimum 0 sampai dengan maximum
100 dan dengan nilai aktif 50.
JSlider(BoundedRangeModel brm)
Membuat horizontal slider menggunakan model BoundedRangeModel.
JSlider(int orientation)
Membuat slider dengan model oreintasi sesuai dengan parameter input
(0=horizontal||1=vertical) dengan nilai minimum 0 sampai dengan nilai maximum
100 dan nilai aktif 50.
JSlider(int min, int max)
Membuat horizontal slider menggunakan nilai minimum dan maximum yang
disesuaikan dengan parameter input.
JSlider(int min, int max, int value)
Membuat horizontal slider dengan menggunakan nilai minmum, maximum,
dan nilai aktif sesuai dengan parameter input.
JSlider(int orientation, int min, int max, int value)
Membuat slider dengan model orientasi, minimum, maximum, dan nilai aktif
sesuai dengan parameter input.
42
berbentuk vertical atau horizontal.
int getValue()
Mendapatkan nilai aktif.
void setMaximum(int maximum)
Merubah nilai maximum.
void setMinimum(int minimum)
Merubah nilai minimum.
void setOrientation(int orientation)
Merubah model oreintasi (1=VERTICAL atau
0=HORIZONTAL).
void setValue(int n)
Merubah nilai aktif.
Contoh Penggunaan :
http://java.sun.com/docs/books/tutorial/uiswing/components/slider.html
Gambar 4.1 merupakan bentuk program lain dari program konversi suhu yang
terdapat pada latihan 2. Gambar 6.1 menggunakan Jslider sebagai petunjuk nilai
aktif.
43
panel2 gridLayout(2,1)
panel1(1,2) BorderLayout.NORTH
lblCelcius lblCelciusCapt
sldCelcius, BorderLayout.SOUTH
panel3 gridLayout(2,2)
lblFahrenheit lblCalvin
lblFahrenheitCapt lblKelvinCapt
panel4
BorderLayout.West BorderLayout.East
s
l
d s
F l
a d
h K
r e
e l
n v
h i
e n
i
t
44
//program ke sembilan
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
//penggunaan slider
//JSlider (
// posisi<0-horisontal|1-vertical>,min,max,0
// )
frame1()
{
super("Universitas Budi Luhur");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(200,325);
setLocation(10,100);
konten = getContentPane();
lblCelcius.setText("Celcius");
lblCelciusCapt.setText("0 Derajat");
panel1.setLayout(
new FlowLayout(
FlowLayout.CENTER
)
);
panel1.add(lblCelcius);
panel1.add(lblCelciusCapt);
panel2.setLayout(new BorderLayout());
panel2.add(panel1, BorderLayout.NORTH);
sldCelcius.setValue(0);
panel2.add(sldCelcius, BorderLayout.SOUTH);
45
lblFahrenheit.setText("Fahrenheit ");
lblFahrenheitCapt.setText("0 Derajat");
lblKelvin.setText("Kelvin ");
lblKelvinCapt.setText("273.15 Derajat");
panel4.setLayout(new BorderLayout());
panel4.add(sldFahrenheit, BorderLayout.WEST);
panel5.setLayout(new BorderLayout());
panel5.add(panel3, BorderLayout.NORTH);
panel5.add(panel4, BorderLayout.SOUTH);
panel6.setLayout(new BorderLayout());
panel6.add(panel2, BorderLayout.NORTH);
panel6.add(panel5, BorderLayout.SOUTH);
sldCelcius.addChangeListener
(
//jika nilai slider Berubah
new Ch angeListener()
{public void stateChanged(ChangeEvent e)
{
lblCelciusCapt.setText(
sldCelcius.getValue() + " Derajat"
);
}
}
);
sldCelcius.addMouseListener
(
//jika mouse selesai melakukan perge rakan
new java.awt.event.MouseAdapter()
{
public void mouseReleased(MouseEvent e)
{
double dFahrenheit,dKelvin;
dFahrenheit = (
sldCelcius.getValue() * 1.8
) + 32;
dKelvin = sldCelcius.getValue() + 273.15;
sldFahrenheit.setValue((int) dFahrenheit);
lblFahrenheitCapt.setText(
46
dFahrenheit + " Derajat"
);
lblKelvinCapt.setText(dKelvin + " Derajat");
sldKelvin.setValue((int) dKelvin);
}
}
);
sldFahrenheit.addChangeListener
(
new ChangeListener()
{public void stateChanged(ChangeEvent e)
{
lblFahrenheitCapt.setText(
sldFahrenheit.getValue()
+ " Derajat"
);
}
}
);
sldFahrenheit.addMouseListener
(new java.awt.event.MouseAdapter()
{
public void mouseReleased(MouseEvent e)
{
double dCelcius,dKelvin;
dCelcius=(
sldFahrenheit.getValue()-32
)* 0.5555;
dKelvin = dCelcius + 273.15;
sldCelcius.setValue((int) dCelcius);
lblCelciusCapt.setText(
dCelcius + " Derajat"
);
sldKelvin.setValue((int) dKelvin);
lblKelvinCapt.setText(dKelvin + " Derajat");
}
}
);
sldKelvin.addChangeListener
(
new ChangeListener()
{public void stateChanged(ChangeEvent e)
{
lblKelvinCapt.setText(
sldKelvin.getValue() + " Derajat"
);
}
}
);
sldKelvin.addMouseListener
(new java.awt.event.MouseAdapter()
{
47
public void mouseReleased(MouseEvent e)
{
double dCelcius,dFahrenheit;
dCelcius = sldKelvin.getValue()-273.15;
dFahrenheit = (dCelcius * 1.8) + 32;
sldCelcius.setValue((int) dCelcius);
lblCelciusCapt.setText(
dCelcius + " Derajat"
);
sldFahrenheit.setValue((int) dFahrenheit);
lblFahrenheitCapt.setText(
dFahrenheit + " Derajat"
);
}
}
);
konten.add(panel6);
show();
}
}
48
Latihan 5
49
BAB VII
JMenuBar, JMenu, JPopupMenu, JMenuItem,
JTextArea, dan Box
Kali ini contoh program menggunakan JMenuBar, JPopupMenu, JMenuItem,
JTextArea dan layout Box komponen untuk membuat program editor teks berita.
JMenuBar
JMenu
Untuk menambahkan item pada JMenuBar kita harus menggunakan JMenu, dimana
JMenu juga dapat ditambahkan JmenuItem dan juga Jseparators.
Constructor
JMenu()
Membuat JMenu tanpa teks.
JMenu(Action a)
Membuat menu dengan penambahan Action.
50
JMenu(String s)
Membuat JMenu dengan teks.
JMenu(String s, boolean b)
Membuat JMenu dengan teks dan penandaan tear-off menu atau tidak.
51
kemungkinan popup.
boolean isSelected()
Mendapatkan nilai true apabila menu tersebut dalam
posisi terpilih (highlighted).
void remove(Component c)
Menghapus komponen c dari menu.
Void remove(int pos)
Menghapus JMenuItem pada posisi tertentu pada
menu.
void remove(JMenuItem item)
Menghapus JMenuItem dari menu.
void removeAll()
Mengapus semua menu item dari menu.
Void setDelay(int d)
Memberikan waktu delay Sets the suggested delay
before the menu's PopupMenu is popped up or down.
void setMenuLocation(int x, int y)
Menempatkan lokasi X dan Y dari pop menu.
void setPopupMenuVisible(boolean b)
Memberikan status true (tampil) atau false (tidak)
pada menu popup.
JPopupMenu
Mengimplementasikan menu dengan model popup, sebuah tampilan kecil yang tampil
dengan beberapa pilihan. JPopupMenu digunakan pada menu yang tampil pada saat
pengguna memilih komponen pada bar menu. Dan juga digunakan pada saat mouse
ditekan ”klik kanan”. Popup menu dapat tampil diposisi manapun yang diinginkan.
Constructor
JPopupMenu()
Membuat JPopupMenu .
JPopupMenu(String label)
Membuat JPopupMenu dengan title.
52
posisi terakhir menu.
JMenuItem add(String s)
Menambahkan menu teks dan ditempatkan pada
posisi akhir menu.
void addSeparator()
Menambahakan garis separator pada akhir menu.
String getLabel()
Mendapatkan label popup menu
void insert(Action a, int index)
Menyisipkan Action pada posisi tertentu.
void insert(Component component, int index)
Inserts the specified component into the menu at a
given position.
boolean isVisible()
Mendaptkan nilai true jika pada posisi tampil.
void remove(int pos)
Menghapus komponen pada posisi tertentu.
void setLabel(String label)
Memberikan label pada popup menu.
void setLocation(int x, int y)
Menempatkan lokasi popup menu di koordinat X
dan Y
void setPopupSize(Dimension d)
Memberikan ukuran berdasarkan dimensi.
void setPopupSize(int width, int height)
Memberikan ukuran berdasarkan lebar dan tinggi.
void setSelected(Component sel)
Menempatkan sel aktif pada komponen tertentu.
void setVisible(boolean b)
Menampilkan popup menu jika parameter input
adalah true.
void show(Component invoker, int x, int y)
Menampilkan popup menu berdasarkan koordinat X
dan Y.
JMenuItem
53
JMenuItem(Action a)
Membuat JMenuItem dengan Action.
JMenuItem(Icon icon)
Membuat JMenuItem dengan gambar ikon.
JMenuItem(String text)
Membuat JMenuItem dengan teks.
JMenuItem(String text, Icon icon)
Membuat JMenuItem dengan teks dan gambar ikon.
JMenuItem(String text, int mnemonic)
Membuat JMenuItem dengan teks dan shortcut keyboard mnemonic.
JTextArea
JTextArea berfungsi sebagai teks editor dalam bentuk multiline, sedangkan dalam
penggunaannya, untuk mengaktifkan scroll pada JTextArea menggunakan bantuan
JScrollPane.
Constructor
JTextArea()
Membuat TextArea.
JTextArea(Document doc)
Membuat JTextArea dengan model dokumen.
JTextArea(Document doc, String text, int rows, int columns)
Membuat JTextArea dengan model dokumen, teks, baris dan kolom sesuai
dengan parameter yang diberikan.
JTextArea(int rows, int columns)
Membuat JTextArea dengan baris dan kolom yang sesuai dengan parameter input.
JTextArea(String text)
Membuat JTextArea dengan teks didalamnya.
JTextArea(String text, int rows, int columns)
Membuat JTextArea dengan teks didalamnya beserta baris dan kolom.
54
Menu Bar
JMenuBar()
JMenu(“File”)
JMenuItem(“Buka File”)
JMenuItem(“Simpan File”)
JMenuItem(“Keluar”)
JMenu(“Edit”)
JMenuItem(“Copy”)
JMenuItem(“Cut”)
JMenuItem(“Paste”)
Jmenu(“Tentang”)
JPopupMenu
JPopupMenu();
JMenuItem("Copy");
JMenuItem("Cut");
JMenuItem("Paste");
JTextArea
private JTextArea txtArea;
txtArea = new JTextArea(20,15);
txtArea.setLineWrap(true);
Gambar 7.1. Program Editor Berita
Komponen 2
Komponen 3
55
Untuk lebih jelasnya adalah sebagai berikut :
Box1
panel1 gridLayout(2,2)
lblKategori cmbKategori
lblDaerah cmbDaerah
jscrollPane1
txtArea
//program ke sepuluh
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
56
);
private JMenuItem mniFileKeluar = new JMenuItem(
"Keluar"
);
frame52()
{
super("Universitas Budi Luhur");
setSize(500,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mnFile.add(mniFileBuka);
mnFile.add(mniFileSimpan);
mnFile.add(mniFileKeluar);
57
mnEdit.add(mniCopy);
mnEdit.add(mniCut);
mnEdit.add(mniPaste);
bar.add(mnFile);
bar.add(mnEdit);
bar.add(mnTentang);
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.addMouseListener
( new MouseListener()
{
public void mousePressed(MouseEvent e) { }
public void mouseExited(MouseEvent e) { }
public void mouseEntered(MouseEvent e) { }
public void mouseClicked(MouseEvent e) { }
public void mouseReleased(MouseEvent e)
{
//jika Click kanan maka tampilkan popup
if (e.getButton() == 3)
popmenu.show(
e.getComponent(),
e.getX(), e.getY()
);
}
}
);
jScrollPane1.getViewport().add(txtArea,null);
box1.add(jScrollPane1);
konten = getContentPane();
58
konten.setLayout(new BorderLayout());
konten.add(box1, BorderLayout.NORTH);
59
Latihan 6
- Buatlah Shorcut di tiap menu File F, Buka File B, Simpan File S, Keluar
K, Edit E, Copy C, Cut U, Paste P
60
BAB VIII
JInternalFrame
Pada pemrograman Java GUI, kita mengenal frame dan internal frame. Frame
yang telah dibahas pada bab sebelumnya merupakan model single frame. Tetapi dapat
pula kita berikan frame didalamnya, yaitu internal frame. Contoh pada Gambar 8.1
merupakan gabungan dari penggunaan JSlider dan JinternalFrame sebai konversi
warna dari nilai-nilai yang sedang aktif pada slider.
JInternalFrame
61
- 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
colorCanvas
<kosong>
62
Contoh Program :
//program ke sebelas
//diambil dan edit dari www.sun.com
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
//JSliders
JSlider r = new JSlider(0, 255);
JSlider g = new JSlider(0, 255);
JSlider b = new JSlider(0, 255);
Color rgb;
int rInt, gInt, bInt;
frame.getContentPane().add(left);
}
//Left JPanel
private void fillLeft(){
left.setLayout(new GridLayout(2, 1));
left.add(Colors);
Colors.show();
}
63
//Color Jif
private void fillColors(){
JPanel sliders = new JPanel(true);
sliders.add(r);
sliders.add(g);
sliders.add(b);
sliders.add(colorCanvas);
colorCanvas.setBackground(Color.black);
r.addChangeListener(this);
g.addChangeListener(this);
b.addChangeListener(this);
}
//Sliders Change
public void stateChanged(ChangeEvent e){
if(e.getSource() == r){
JSlider rS = (JSlider)e.getSource();
rInt = (int)rS.getValue();
}
if(e.getSource() == g){
JSlider rS = (JSlider)e.getSource();
gInt = (int)rS.getValue();
}
if(e.getSource() == b){
JSlider rS = (JSlider)e.getSource();
bInt = (int)rS.getValue();
}
rgb = new Color(rInt, gInt, bInt);
colorCanvas.setBackground(rgb);
}
//Main
public static void main(String[] args){
AppSide as = new AppSide();
as.fillColors();
as.fillLeft();
}
}
64
Latihan 7
- Buatlah Satu Frame Dengan Beberapa Internal Frame Seperti Gambar Dibawah
Ini
65
BAB IX
JTabbedPane
Contoh program pada Gambar 9.1 diambil dari http://java.sun.com mengenai
penggunaan Tab.
JTabbedPane
Komponen yang dapat digunakan oleh pengguna, dengan tampilan berdasarkan group
komponen dalam bentuk tab. Tab tersebut dapat diberikan tampilan teks maupun
gambara ikon.
Constructor
JTabbedPane()
Membuat TabbedPane kosong dengan posisi atas/TOP.
JTabbedPane(int tabPlacement)
Membuat TabbedPane kosong dengan posisi sesuai dengan parameter input
JTabbedPane.TOP, JTabbedPane.BOTTOM, JTabbedPane.LEFT, atau
JTabbedPane.RIGHT.
JTabbedPane(int tabPlacement, int tabLayoutPolicy)
Membuat TabbedPane kosong dengan posisi sesuai dengan parameter input
JTabbedPane.TOP, JTabbedPane.BOTTOM, JTabbedPane.LEFT, atau
JTabbedPane.RIGHT beserta model policy
66
Menyisipkan komponen pada index tertentu dengan
judul 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 index
tertentu.
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 index
tertentu.
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
Tab 0 Tab 1
67
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 0
untuk penempatan card1 dan tab 1 untuk penempatan card2
- card1, merupakan panel untuk penempatan Button1, Button2, dan Button3
- card2, merupakan panel untuk penempatan TextField.
//program ke duabelas
/*
* ===diambil dari sun.java.documen.book.sample ====
*/
import java.awt.*;
import javax.swing.*;
68
size.width += 100;
return size;
}
};
card1.add(new JButton("Button 1"));
card1.add(new JButton("Button 2"));
card1.add(new JButton("Button 3"));
tabbedPane.addTab(BUTTONPANEL, card1);
tabbedPane.addTab(TEXTPANEL, card2);
pane.add(tabbedPane, BorderLayout.CENTER);
}
frame.pack();
frame.setVisible(true);
}
69
Latihan 8
70
BAB X
MODEL DESAIN TAMPILAN
Pada meteri sebelumnya, kita sebenarnya sudah menyinggung sedikit mengenai
penggunaan layout. Pada pembahasan dibawah selanjutnya, akan dibahas seluruh
model layout pada Java standar, Null layout, XY layout pada JBuilder borland.
Layout-layout tersebut adalah sebagai berikut :
BorderLayout
Membuat layout tampilan berdasarkan arah mata angin yaitu NORTH, EAST,
SOUTH, dan WEST.
NORTH
WEST CENTER EAST
SOUTH
FlowLayout
GridLayout
Penggunaan layout GridLayout dengan metode yang sama seperti saat kita
menggunakan table, yaitu terkait jumlah baris dan jumlah kolom.
Contoh :
- jumlah baris 2 dengan kolom 4, menggunakan perintah GridLayout(2,4), yang
berarti terdapat 8 (delapan) komponen yang dapat ditempatkan ;
o Komponen 1, berada pada posisi baris pertama dan kolom pertama
o Komponen 2, berada pada posisi baris pertama dan kolom kedua
o Komponen 3, berada pada posisi baris pertama dan kolom ketiga
o 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 4
5 6 7 8
71
BoxLayout
- Y_AXIS
Setiap komponen yang ditambahkan pada layout, akan diposisikan pada
komponen sebelumnya
Box
Penggunaan Box sama dengan BoxLayout, hanya penamaannya saja yang berbeda,
yaitu :
- Horizontal Box
Setiap komponen yang ditambahkan pada layout, akan diposisikan pada kanan
sesudah komponen sebelumnya.
72
- Vertical Box
GridBagLayout
Kelebihan dari layout ini adalah dapat membuat menyatukan kolom dan baris untuk
satu komponen, lihat Gambar 10.5 pada button 6.
73
- 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 :
import java.awt.*;
public class Direction extends Frame {
Button btn1, btn2, btn3, btn4, btn5, btn6;
GridBagLayout gridbag;
GridBagConstraints c;
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();
c.gridx = 0;
gridbag.setConstraints(btn2, c);
// btn3 gridx = 0
//gridy dengan posisi RELATIVE (1 + 1)
// btn3 gridy = 2
gridbag.setConstraints(btn3, c);
74
// 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);
resize(400, 200);
}
}
Layout X dan Y, memiliki banyak model dari banyak pengembang dan salah
satunya adalah dari Borland dan Null Layout dari Java Standar.
Model ini menggunakan pixel sebagai posisi X dan Y. Begitu pula dengan
panjang dan tinggi dari komponen.
Contoh pada Gambar 10.6 dikembangkan dengan menggunakan XYLayout dan Null
Layout :
75
Contoh program :
//program ke empatbelas A
//Menggunakan XY Layout
import javax.swing.*;
import java.awt.*;
import com.borland.jbcl.layout.*;
import java.awt.event.*;
public frame1() {
super("Universitas Budi Luhur");
setSize(400,250);
setLocation(10,100);
try {
jbInit();
}
catch(Exception ex) {
ex.printStackTrace();
}
}
lblNim.setText("Nim");
this.getContentPane().setLayout(xYLayout1);
lblNama.setText("Nama");
lblSertifikat.setText("Sertifikat");
lblJurusan.setText("Jurusan");
lblKampus.setText("Kampus");
txtNim.setText("");
txtNama.setText("");
76
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)
77
);
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 Layout
import javax.swing.*;
import java.awt.*;
import com.borland.jbcl.layout.*;
import java.awt.event.*;
78
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();
}
}
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));
cmbKampus.setBounds(
79
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 Java
dalam bentuk IDE. JBuilder oleh pengembangnya, Borland (http://ww.borland.com),
mempunyai 3 (tiga) versi, yaitu :
- Enterprise Edition
Produk Enterprise Edition dilengkapi dengan pemrograman J2EE, Web
Services dan Aplikasi yang terintegrasi dengan peningkatan performan (tuning).
- Develepor Edition
Versi Developer Edition merupakan versi khusus untuk pengembang untuk
membuat program, tetapi tidak selengkap versi Enterprise Edition.
- Foundation
Versi Foundation dikhususkan untuk pemula dan dapat diunduh (download)
gratis pada web site http://www.borland.com, dengan spesifikasi komputer, yaitu
pentium III dan minimal memori 256 Mb.
80
Instalasi Borland JBuilder
2. Setelah proses persiapan instalasi telah selesai akan tampil layar seperti pada
Gambar 10.8, kemudian tekan tombol next
81
3. Pada layar tampilan pada gambar license pilihlah radio button ”I Accept The
Terms of The Licence Agreement”, kemudian tekan tombol next
4. Pilihlah tempat direktori pada komputer untuk instalasi atau instalasi akan
ditempatkan pada direktori ”C:\Jbuilder”
82
5. Lakukan proses instalasi selanjutnya dengan menekan tombol Install
83
Membuat Program Aplikasi GUI dengan menggunakan JBuilder
4. Buatlah Aplikasi Java dengan menggunakan menu File New, akan tampil layar
seperti pada Gambar 10.14, kemudian pilihlah ikon Application
84
5. Setelah tombol ikon Application telah terpilih, berilah nama project, contoh :
Testing
85
7. Masukkan identitas pembuat aplikasi, lalu tekan lah tombol Finish
86
9. Masukkan nama JFrame, contoh : frmTesting
87
11. Layar Editor akan tampil seperti pada Gambar 10.21
Editor Program
Desain GUI
12. Pilihlah tab atas dengan nama frmTesting kemudian pilih tab bawah dengan
tulisan Design
Run
Object
Tools
Properties
Dan Event
Layar GUI
(Drag & Drop)
88
NETBEANS
Aplikasi bantu untuk pembuatan program Java ini telah didukung penuh
penggunaannya oleh SUN Microsystem dan gratis. Aplikasi Netbeans versi terbaru
dapat diunduh (download) pada website http://www.sun.com atau pada URL
http://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 dan
minimal memori 256Mb (dianjurkan penulis 512 Mb).
Untuk mengenal lebih lanjut perkembangan Netbean, anda dapat melihat pada
website http://www.netbeans.org
Instalasi Netbeans
1. Persiapan Instalasi dan apabila telah tampil layar instalai wizard tekan tombol
Next
89
2. Pada layar lisensi penggunaan pilih radio button ”I accept The Terms In The
License Agreement” , kemudian tekan tombol Next.
90
4. Proses Instalasi sedang berjalan
91
Membuat Aplikasi GUI Dengan Menggunakan NetBeans
1. Jalankan Aplikasi NetBeans dengan memilih Ikon pada Start All Program
Netbeans Netbeans
2. Buatlah aplikasi dengan memilih menu File New Project, kemudian pilihlah
general Java Aplication
92
3. Masukkan nama project, contoh : Testing, kemudian tekan tombol Finish
93
4. Pilihlah menu File New File, kemudian pilihlah Java GUI Form JFrame
Form
94
6. Layar tampilan editor project Testing
Source Program Dan Desain
Pallete
(Tools)
Project Explorer
Inspector
Layar GUI Properties, Event
(Drag & Drop ) Dan Code
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
frmTesting frm = new frmTesting();
frm.setVisible(true);
}
95
Latihan 9
- Buatlah layar tampilan seperti pada Gambar 10.26 dengan menggunakan JBuilder
dan NetBeans
96
BAB XI
Error Exception
Waktu paling ideal untuk mendeteksi adanya kesalahan pada program (error)
adalah saat kompilasi program. Namun tidak semua kesalahan program dapat
dideteksi pada saat itu, kesalahan justru terlihat program dijalankan atau digunakan.
(tjava hal 219 ).
Sebagai contoh, untuk program yang dibuat pada saat mesin cetak atau printer
sedang on, program dapat melakukan pencetakan dengan baik saat kondisi itu.
Namun apabila mesin cetak sedang dalam posisi off, maka program tidak dapat
melakukan 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 sinyal
tersebut 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
97
- 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
java.awt.AWTException
Exeception yang berasal dari Java Abstract Window Toolkit (AWT).
java.lang.ClassNotFoundException
Saat pertama pembuatan class dan class tersebut tidak ditemukan.
java.lang.CloneNotSupportedException
Sebagian besar objek dapat diduplikat (clone) dengan menggunakan method clone().
Pesan akan timbul apabila objek tidak dapat diduplikasi.
java.io.IOException
Mendeskripsikan secara umum dari pesan IO (Input/Output).
java.io.EOFException
Pesan muncul saat pembacaan akhir dari file (end of file)
java.io.FileNotFoundException
File tidak ditemukan saat pembacaan.
java.io.InterruptedIOException
Penggunaan interupsi IO tetapi gagal dilakukan
java.net.MalformedURLException
Universal Resource Locator atau URL, yang lebih dikenal dengan Internet Address
tidak dapat dihubungi.
java.net.ProtocolException
Terdapat kesalahan pada saat penggunaan protocol di class socket
java.net.SocketException
Pesan kesalahan saat penggunaan socket
java.io.UTFDataFormatException
98
UTF-8 adalah model karakter Unicode yang dapat dirubah menjadi karakter ASCII,
pesan kesalahan terjadi dikarenakan kegagalan saat melakukan transfer data.
java.net.UnknownHostException
The host name didn’t match with any known hosts.
java.net.UnknownServiceException
Servis pada koneksi jaringan tidak ada
java.lang.IllegalAccessException
Gagal mengakses
java.lang.InstantiationException
Pesan kesalahan saat membuat objek abstrak atau interface.
java.lang.InterruptedException
Interupsi terjadi saat melukan proses Thread
java.lang.NoSuchMethodException
Pesan kesalahan ini jarang sekali terjadi, pesan ini akan tampil apabila terjadi
penghapusan method dari class.
java.lang.RuntimeException
Pada saat program dijalankan terdapat kesalahan dalam pemrograman (bug)
java.lang.ArithmeticException
Pesan kesalahan dalam penggunaan angka kosong (zero)
java.lang.ArrayStoreException
Gagal dalam penggunaan array.
java.lang.ClassCastException
Terdapat kesalahan dalam pengecekan class awal
java.util.EmptyStackException
Sebuah objek pada class tersusun dalam posisi kosong
java.lang.IllegalArgumentException
Kemungkinan disebabkan penggunaan yang salah dari library.
java.lang.IllegalThreadStateException
Gagal menjalankan thread, dikarenakan thread yang sudah ada telah aktif.
java.lang.NumberFormatException
Mengindikasikan perbedaan format angka.
99
java.lang.IllegalMonitorStateException
Gagal melakukan monitoring pada thread.
java.lang.IndexOutOfBoundsException
Index melebihi dari yang seharusnya
java.lang.ArrayIndexOutOfBoundsException
Penggunaan array index yang lebih dari seharusnya.
java.lang.StringIndexOutOfBoundsException
Pada String, tidak disarankan penggunaan kosong atau lebih dari panjang karakter
string.
java.lang.NegativeArraySizeException
Tidak dapat mengalokasikan nilai array negative.
java.util.NoSuchElementException
Enumeration kosong.
java.lang.NullPointerException
Penggunaan 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 :
100
"e.getMessage(): " + e.getMessage()
);
System.out.println(
"e.toString(): " + e.toString()
);
System.out.println("e.printStackTrace():");
e.printStackTrace();
}
}
}
Caught Exception
e.getMessage(): Here's my Exception
e.toString(): java.lang.Exception: Here's my Exception
e.printStackTrace(): java.lang.Exception: Here's my Exception at
ExceptionMethods.main
Penanganan kesalahan program pada modul dapat juga dilewati atau tidak
diindahkan dengan menggunakan perintah throw sehingga kesalahan program
tersebut dapat ditangkap oleh modul pemanggil.
Apabila throw ditempatkan pada posisi main, hal itu mempunyai arti ”biarkanlah
kesalahan tersebut ditangani oleh sistem”.
Contoh program keenambelas menggunakan logika sebagai berikut :
//program ke enambelas
public 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 {
101
try {
g();
} catch(Exception e) {
System.out.println(
"Caught in main, e.printStackTrace()"
);
e.printStackTrace();
}
}
}
//program ke tujuhbelas
//Tidak Menggunakan Finally
class 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();
}
}
}
102
Bandingkan dengan program ke-delapan belas :
//program ke delapanbelas
//mrnggunakan Finally
class 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();
}
}
}
103
Latihan 10
} finally {
catch (Exception e) {
3. Apakah akan terjadi kesalahan pada program di bawah ini? Akankah program
dapat terkompilasi dengan baik?
try {
} catch (Exception e) {
} catch (ArithmeticException a) {
104
BAB XII
Thread
Pada pemrograman yang terstruktur, pengembang program melakukan
pemanggilan modul secara berurutan. Maksudnya adalah jika ada ada tiga modul,
yaitu modul A, modul B, dan modul C maka modul utama akan memanggil sesuai
urutannya.
//program ke sembilanbelas
//single thread
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;
105
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 :
106
Berbeda dengan dengan multithread, setiap modul dapat dijalankan pada waktu
yang bersamaan. Sebagai ilustrasinya terlihat pada Gambar 12.2 di bawah ini.
Jika ada modul A, modul B dan modul C yang dipanggil oleh main, maka proses
yang terjadi adalah modul A akan diproses, kemudian tanpa menunggu proses modul
A selesai, modul B dapat diproses, begitu pula dengan modul C, tanpa menunggu
proses 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.
o Membuat thread:
MyThread thr1 = new MyThread();
o Menjalankan thread:
thr1.start();
o Atau Membuat Thread Kemudian Dijalankan
new MyThread().start();
107
- implements runnable
o struktur
class MyThread implements Runnable{
.....
public void run(){
// thread body of execution
}
}
o Membuat Objek
o Cara menjalankan
thr1.start();
Program ke-duapuluh adalah program yang telah dimodifikasi dari program ke-
sembilanbelas, dari yang menggunakan single thread menjadi program yang
menggunakan multithread
//program keduapuluh
//multithread
public 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 Thread
horse1.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(
108
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!");
}
}
ThreadName.setPriority(intNumber)
109
NORM_PRIORITY=5
MAX_PRIORITY=10
Contoh program :
//program ke duapuluhsatu
//programpriority
class 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 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");
}
}
110
Program ke-duapuluhsatu adalah program yang memberikan nilai prioritas
normal,yaitu 5, pada threadA, kemudian pada threadB diberikan nilai prioritas
minimum, yaitu 1, dan pada threadC, diberikan nilai prioritas tertinggi, yaitu 10.
Sehingga pada saat threadA, threadB, dan threadC dijalankan, maka program Java
akan mendahulukan threadC untuk diproses, kemudian threadA dan threadB.
Penggunaan multithread dapat mengakibatkan bentrokan yang dikenal dengan
istilah Inconsistent State, yaitu apabila terdapat lebih dari satu thread yang melakukan
proses pada data yang sama.
Untuk menghindari bentrokan tersebut, maka pada pemrograman Java disediakan
fasilitas Synchronized (Locking The Object).
Contohnya adalah ketika ada objek yang bernama account digunakan oleh
beberapa objek, yaitu MyThread, YourThread, dan HerThread, lihat Gambar 12.3.
Didalam objek account tersebut ada nilai yang diubah oleh ketiga objek yang
mengakses objek account.
MyThread menambah nilai 1 sebanyak 10 kali dengan pemanggilan objek
sebanyak 5 kali pada variabel balance di dalam objek account.
YourThread mengurangi nilai 1 sebanyak 10 kali pada variable balance di dalam
objek account dengan pemanggilan objek sebanyak 5 kali
Dan HerThread hanya menampilkan nilai variable balance sebanyak 10 kali
didalam 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 terjadi
inconsistent state sehingga nilai tersebut belum tentu menghasilkan nilai 0.
MyThread
account
(shared object)
YourThread
HerThread
111
Contoh program :
112
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 object
class 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);
}
Hasil program
1 deposit 1
2 deposit 2
3 deposit 3
4 deposit 4
5 deposit 5
…
113
7 Enquire 6
7 Enquire 7
7 Enquire 8
7 Enquire 9
7 Enquire 10
Finished executing
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);
}
}
1 deposit 1
2 deposit 2
3 deposit 3
4 deposit 4
5 deposit 5
…
-5 deposit 5
-4 deposit 6
-3 deposit 7
-2 deposit 8
-1 deposit 9
0 deposit 10
0 Enquire 1
0 Enquire 2
114
0 Enquire 3
0 Enquire 4
0 Enquire 5
0 Enquire 6
0 Enquire 7
0 Enquire 8
0 Enquire 9
0 Enquire 10
Finished executing
115
Latihan 11
Buatlah Jam yang bergerak setiap detik seperti layar tampilan dibawah ini :
116
BAB XIII
AKSES FILE
Pada pemrograman Java standar, fasilitas untuk mengakses file menggunakan
java.io.*.
Untuk mengakses file pada sistem operasi Unix, pemisah antara direktori dan file
menggunakan tanda slash (”/”), contohnya /home/windu/test.txt. Yang harus
diperhatikan adalah Unix merupakan sistem operasi yang case sensitive, sehingga
penulisan perintah atau nama dibedakan antara huruf besar dan huruf kecil.
Pada sistem operasi Ms. Windows, pemisah antara direktori dan file
menggunakan tanda backslash (”\”), contohnya :c:\windu\test.txt, dimana penggunaan
huruf besar dan huruf kecil sama saja. Hanya saja pada pemrograman Java untuk
membaca backslash menggunakan dua backslash (”\\”), contohnya c:\\windu\\test.txt.
Untuk membaca file terdapat 2 (dua) cara, yaitu sequential access dan random
access.
Sequential Access
117
Cara pembacaan maupun penulisan terdapat dua cara, yaitu char stream dan byte
stream.
Character stream adalah penggunaan 16 bit karakter untuk melakukan
pembacaan dan penyimpanan data teks. Untuk membaca file secara character stream
menggunakan objek FileReader dan untuk melakukan penulisannya menggunakan
objek FileWriter.
FileReader
Constructor
FileReader(File file)
Membuat objek FileReader baru, dengan parameter objek File untuk
pembacaan.
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.InputStreamReader
close, getEncoding, read, read, ready
Methods bawaan dari class java.io.Reader
mark, markSupported, read, reset, skip
FileWriter
Constructor
FileWriter(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.OutputStreamWriter
close, flush, getEncoding, write, write, write
118
toString, wait, wait, wait
String txtmsg="";
try {
FileReader in = new FileReader("farrago.txt");
FileWriter out = new FileWriter("outagain.txt");
int 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 );
}
}
119
Contoh program byte stream :
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);
}
}
}
120
Random Access
121
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 tertentu
dengan 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)
122
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 :
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);
123
System.exit(-1);
}
System.out.println(txtmsg );
}
}
Selain penggunaan Sequential dan Random Access, melakukan akses file bisa
dengan menggunakan filter stream, yaitu dengan cara membuat olahan dari data
stream kemudian dibentuk menjadi model yang lain.
Contoh filter stream, salah satunya adalah BufferedReader, yang salah satu
method, readline, merubah data stream menjadi perbaris.
Constructor
BufferedReader(Reader in)
Membuat buffer dari model karakter kebentuk standar buffer.
BufferedReader(Reader in, int sz)
Membuat buffer dari model karakter kebentuk standar buffer dengan panjang
tertentu.
Contoh program :
124
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);
}
}
125
Latihan 12
126
BAB XIV
Database (jdbc & mysql)
Pengertian dari database adalah sekumpulan informasi yang terorganisir sehingga
mudah diakses dan kelola. Dimana database tersebut dapat menyimpan informasi
dengan tipe data String, Numerik, Date, dan tipe data lainnya. Untuk melakukan
perintah manipulasi data, user dapat menggunakan bahasa Structure Query Language
(SQL).
Berbagai macam database yang telah ada dalam dunia aplikasi adalah seperti
Oracle, DB2, MySql, dan lain-lain. Pada buku ini, yang dibahas adalah bagaimana
bahasa pemrograman Java dapat berinteraksi dengan database MySql dengan
menggunakan database connector (jdbc).
Sebelum lebih jauh membahas mengenai program Java dan konektor, lebih dulu
kita mengenal sedikit mengenai database. Untuk lebih lengkapnya kita dapat merujuk
pada mata kuliah sistem database.
Tipe data yang umum pada database adalah :
String
Contoh : Char, Varchar
Numeric
Contoh : Byte, Integer, Single, Double, Float
Date
Contoh : Date, Time
CLOB (Character Large Object)/TEXT
BLOB (Binary Large Object)
FILE : Suara, Gambar, Video, Dan Lain
Terdapat penggunaan relasi sebagai penghubung antara satu tabel degan tabel
lainnya beserta model-model key pada tabel di database. Model-model key tersebut
adalah :
Primary Key
Juga Disebut Primary Keyword berfungsi sebagai Field Kunci dari Tabel dan
Bersifat Unique (Tidak Ada Duplikasi), Contoh : NIM pada Mahasiswa Atau
Nomor Rekening Pada Aplikasi Perbank-an
Secondary Key
Field Kunci Dari Tabel Setelah Primary Key. Contoh : Nomor ATM pada
Perbank-an Dapat Digunakan Sebagai Secondary Key Setelah Nomor Rekening
Candidat Key
Kemungkinan Pemakaian Field Sebagai Kunci Dari Sebuah Tabel
Foreign Key
Merupakan Field Dari Tabel, Tapi Field Tersebut Merupakan Primary Key Pada
Tabel Lainnya
127
Gambar 14.1 Relasi Tabel
Pada Gambar 14.2 terdapat 2 (dua) table yang berhubungan, yaitu tabel nasabah
dan tabel transaksi. Pada tabel Nasabah yang menjadi Primary Key adalah Norek dan
sebagai Secondary Key adalah NoATM. Sedangkan pada table Transaksi terdapat
Primary Key yaitu NoTrans dan Foreign Key hasil dari relasi dengan table nasabah,
yaitu NoRek.
Penggunaan query sebagai sarana untuk berinteraksi dengan database, secara
standar, dapat melakukan manipulasi data seperti membuat tabel (create), mengubah
tabel (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`) )
128
Gambar 14.2 Tabel mahasiswa
Menghapus tabel mahasiswa
Drop Table <Nama Tabel>
Contoh :
drop table mahasiswa
Merubah tabel mahasiswa
Alter Table <Nama Tabel> <Add|Modify|Change|Drop>
<Nama Field> [<Tipe Data> (<panjang>)]
Contoh :
Merubah nama field lulus menjadi kelulusan
Menambah field lulus dengan tipe data integer dengan ukuran panjang 2
Menambah data pada tabel mahasiswa
Insert 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
129
Insert Into mahasiswa values (“9511500134”,
“Windu Gata”, “Jl. Perdagangan V/21”, 28,1)
Mengubah data pada tabel mahasiswa
Update <Nama Tabel> Set <Nama Field=Ekspresi> [Where
<Definisi>]
Contoh :
Mengubah seluruh data pada tabel mahasiswa dengan nilai lulus = 0
Menghapus data pada tabel mahasiswa
Delete From <Nama Tabel> [where <Ekspresi>]
Contoh :
Menghapus seluruh data pada tabel mahasiswa
Menghapus data pada tabel mahasiswa dimana Nim yang difilter adalah
9511500134
130
Membaca data pada tabel mahasiswa
Select <*/Nama Field> From <Nama Tabel> [Where
<Definisi>]
Contoh :
Membaca data pada field Nim, Nama dari tabel mahasiswa
Membaca data pada field Nim, Nama dari tabel mahasiswa dimana Nim-
nya adalah 9511500134
131
Model Model variabel dari database mysql :
Numeric
String
Date
132
Koneksi dari bahasa pemrograman Java ke database menggunakan konektor
bernama JDBC. JDBC ini bukanlah singkatan, melainkan trade mark atau hak
paten yang dikenalkan pada tahun 1997 oleh perusahaan Sun Microsystem.
JDBC ini dapat digunakan dengan koneksi two tier atau three tier. Yang
dimaksud dengan two tier, yaitu program langsung mengakses ke database tanpa
perantara lainnya (lihat Gambar 14.3).
sedangkan three tier adalah program dapat mengakses data melalui perantara atau
midle party atau third party (lihat Gambar 14.4).
133
Untuk database MySql, download file mysql-connector-java-<versi>-ga.zip dari
website 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 pada
direktori yang sama denga program Java yang dibuat atau buatlah PATH yang
diarahkan ke direktori mysql-connector-java-<jar>-ga-bin.jar berada.
Tambahkan pada atas program import java.sql.* . Pada java.sql.*, banyak objek
yang disediakan oleh bahasa pemrograman Java sebagai fasilitas untuk manipulasi
data.
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.Statement
Objek yang digunakan untuk mengeksekusi perintah SQL. Dan menerima hasil
dari eksekusi tersebut.
134
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 dari
beberapa perintah.
int[] executeBatch()
Mengeksekusi seluruh perintah pada list batch dan jika
semua perintah berhasil dijalankan akan memberikan nilai
berupa integer dalam bentuk array.
ResultSet executeQuery(String sql)
Mengeksekusi perintah SQL dalam bentuk tunggal atau
single ResultSet object.
Connection getConnection()
Menndapatkan Connection object dari Statement
object.
int getFetchDirection()
Menarik data dari table yang dapat digunakan oleh
resultsets.
int getFetchSize()
Mendapatkan jumlah baris dari table database untuk
penggunaan 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 untuk
pengaksesan.
java.sql.ResultSet
Berbentuk table dari hasil perintah yang dilakukan oleh java.sql.Statement kepada
database. ResultSet ini mengatur cursor pointer pada baris data. Dapat menempatkan
kursor sebelum baris, baris, dan akhir baris. Objek memungkin pemuktahiran data,
penambahan data dan penghapusan data pada tabel di database.
135
Beberapa Method yang harus diketahui
boolean absolute(int row)
Menempatkan kursor pada baris yang disesuaikan
parameter
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 dengan
parameter 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 parameter
nama kolom.
Blob getBlob(int i)
Mendapatkan tipe data BLOB dengan parameter indeks
kolom.
136
Blob getBlob(String colName)
Mendapatkan tipe data BLOB dengan parameter nama
kolom.
boolean getBoolean(int columnIndex)
Mendapatkan tipe data boolen dengan parameter indeks
kolom.
boolean getBoolean(String columnName)
Mendapatkan tipe data Boolean dengan parameter nama
kolom.
byte getByte(int columnIndex)
Mendapatkan tipe data byte dengan parameter indeks
kolom.
byte getByte(String columnName)
Mendapatkan tipe data byte dengan parameter nama
kolom.
byte[] getBytes(int columnIndex)
Mendapatkan tipe data byte dengan bentuk array dengan
parameter 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 stream
dengan 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 nama
kolom.
Date getDate(int columnIndex)
Mendapatkan tipe data date dengan parameter indeks
kolom.
Date getDate(String columnName)
Mendapatkan tipe data date dengan parameter nama
kolom.
double getDouble(int columnIndex)
Mendapatkan tipe data double dengan parameter indeks
kolom.
double getDouble(String columnName)
Mendapatkan tipe data double dengan parameter nama
137
kolom.
float getFloat(int columnIndex)
Mendapatkan tipe data float dengan parameter indeks
kolom.
float getFloat(String columnName)
Mendapatkan tipe data float dengan parameter nama
kolom.
int getInt(int columnIndex)
Mendapatkan tipe data integer dengan parameter indeks
kolom.
int getInt(String columnName)
Mendapatkan tipe data integer dengan parameter nama
kolom.
long getLong(int columnIndex)
Mendapatkan tipe data long degan parameter indeks
kolom.
long getLong(String columnName)
Mendapatkan tipe data kolom dengan parameter nama
kolom..
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 nama
kolom.
String getString(int columnIndex)
Mendapatkan tipe data string dengan parameter indeks
kolom.
String getString(String columnName)
Mendapatkan tipe data string dengan parameter nama
kolom.
Time getTime(int columnIndex)
Mendapatkan tipe data time dengan parameter indeks
kolom.
Time getTime(String columnName)
Mendapatkan tipe data time dengan parameter nama
kolom.
SQLWarning getWarnings()
Mendapatkan laporan peringatan.
void insertRow()
138
Menambah baris kolom.
boolean isAfterLast()
Mendapatkan nilai true jika posisi kursor sesudah akhir
baris table
boolean isBeforeFirst()
Mendapatkan nilai true jika posisi kursor sebelum awal
baris table.
boolean isFirst()
Mendapat nilai true jika posisi kursor pada awal baris
table.
boolean isLast()
Mendapatkan nilai true jika posisi kursor pada akhir
baris.
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 indeks
kolom, 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 kolom
dan nilai java.sql.BigDecimal value.
void updateBinaryStream(int columnIndex, InputStream x,
139
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 dan
nilai 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 dan
nilai 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 dan
nilai 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 indeks
kolom, Reader, dan panjang stream.
void updateCharacterStream(String columnName,
Reader reader, int length)
Mengubah character stream dengan parameter nama
kolom, 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 dan
nilai 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)
140
Merubah date dengan parameter nama kolom dan nilai
java.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 dan
nilai 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 dan
nilai 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 dan
nilai 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 nilai
short.
void updateString(int columnIndex, String x)
Mengubah String dengan parameter indeks kolom dan
nilai string.
141
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 nilai
java.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.
RS.next();
RS.previous();
RS.first();
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
142
- 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 tabel
mahasiswa seperti pada Gambar 14.6 dan dengan tampilan program pada Gambar
14.7.
143
Contoh Program :
144
String dbUrl =
"jdbc:mysql://localhost/mahasiswa?user=root&password=";
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);
145
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);
konten.add(panel1);
konten.add(panel4);
konten.add(panel5);
ConnectToDatabase();
ConnectToTable("");
setVisible(true);
}
146
if (bConnect == true){
btnFilter.setText("UnFilter");
}else{
ConnectToTable("");
}
}
} else {
ConnectToTable("");
btnFilter.setText("Filter");
}
}
private void recRefresh(){
try{
if (iQuest == 0){
try {
RS.deleteRow();
if (btnFilter.getText() == "UnFilter"){
recFilter();
}
recFirst();
} catch (Exception e){
System.out.println(e.toString());
}
}
}
recLast();
}
} catch (Exception e){
System.out.println(e.toString());
}
147
}
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()
);
148
private void recFirst(){
try {
RS.first();
preview();
} catch(Exception e){
System.out.println(e.toString());
}
}
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);
149
} 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());
}
}
150
JOptionPane.showMessageDialog
(null,
"Tidak Dapat Deteksi MYSQL.JDBC",
"JDBC",
JOptionPane.PLAIN_MESSAGE
);
System.exit(0);
}
}
try {
String sQuery;
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;
}
151
BAB XV
MEMBUAT LAPORAN DENGAN JFREEREPORT
//koneksiDatabase.java
package testing;
import java.sql.*;
import javax.swing.*;
public koneksiDatabase(
String driver, String dburl,
String username, String password,
String querydata){
sdriver = driver;
sdburl = dburl;
susername = username;
spassword = password;
squerydata= querydata;
}
return conn;
152
}
catch(Exception e){
JOptionPane.showMessageDialog(
null,
"Koneksi ke database gagal !","Pesan",
JOptionPane.ERROR_MESSAGE
);
return null;
}
}
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;
}
}
153
7. Tambahkan JNDI Connection Type dengan menekan tombol Add, kemudian isilah
semua parameter yang ada. Kemudian tekan tombol Test untuk melakukan
pengetesan dan tekan OK apabila sudah bisa koneksi.
8. Pilihlah JNDI contoh : testing, kemudian isilah teks Query dengan teks sebagai
berikut :
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) kampus
from mahasiswa
154
9. Tahap ke dua tekan tombol Next hingga muncul layar tampilan seperti dibawah
ini
10. Tahap ke tiga tekan tombol next hingga muncul layar seperti dibawah ini
155
11. Tahap ke empat tekan tombol Next, hingga muncul layar tampilan sebagai berikut
12. Tekan tombol Finish, hingga muncul hasil akhir dari laporan
13. Tutup layar Acrobat Reader, kemudian pilihlah menu File Export To
Location, simpanlah ditempat yang sama dengan program utama.
156
14. Ketiklah program dibawah ini untuk mencetak data
//package testing;
//printReport.java
import 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;
}
}
157
public printReport() {}
JFreeReportBoot.getInstance().start();
kDb = new koneksiDatabase(
jdbcDriver, dburl, username, password, querydata
);
if (rs == null) {
try {
rs = kDb.getResult();
} catch (Exception e) {
}
}
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);
158
//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;
}
try
{
URL urlXML = getClass().getResource(fileXML);
report = ReportGenerator.getInstance().parseReport(urlXML);
report.setName("Master");
}catch(Exception ee)
{
ee.printStackTrace();
}
return report;
}
159
+ " 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();
160
15. Jalankan program, dan apabila telah tampil gambar seperti dibawah ini maka
program laporan selesai dibuat
161
BAB XVI
JAWABAN SOAL LATIHAN
Jawaban Latihan 1 :
//latihan 1
import javax.swing.*;
import java.awt.*;
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));
162
g.drawString("17 Agustus 1945 - 2004",90,170);
}
}
show();
}
163
Jawaban Latihan 2
this.setIconImage(Toolkit.getDefaultToolkit().getImage(
<nama file image>)
);
- Nim : 9511500134
Atau
txtNim.setText("9511500134");
- SD : Checked
atau
chSD.setSelected(true);
- SMP : Checked
atau
chSMP.setSelected(true);
- SMA : Checked
atau
chSMA.setSelected(true);
- Jurusan TI : Checked
164
private JRadioButton rdTI = new JRadioButton("TI", true);
Atau
rdTI.setSelected(true);
cmdSave.setMnemonic('P');
cmdEnd.setMnemonic('S');
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
165
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");
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);
166
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);
panel1.add(cmdEnd);
cmdEnd.addActionListener(itemHandler);
cmdEnd.setMnemonic('S');
cmdEnd.setIcon(new ImageIcon("exit.jpg"));
konten.add(panel1);
show();
167
sTampil+="\nKampus,";
sTampil+=cmbKampus.getItemAt(
cmbKampus.getSelectedIndex()
);
JOptionPane.showMessageDialog(
null, sTampil , "HASIL",
JOptionPane.INFORMATION_MESSAGE
);
}
else {System.exit (0);}
}
}
168
Jawaban Latihan 3
frame41()
{
super ("Hand Phone");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(200,230);
setLocation(100,100);
169
//desain panel 2, tombol NO
panel_2.setLayout(new GridLayout());
panel_2.add(new JPanel(), BorderLayout.CENTER);
panel_2.add(new Button("No"),BorderLayout.EAST);
//desain panel_6
panel_6.setLayout(new BorderLayout());
panel_6.add(panel_4, BorderLayout.NORTH);
panel_6.add(panel_5, BorderLayout.CENTER);
//desain panel_7
panel_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 Frame
konten = getContentPane();
konten.setLayout (new BorderLayout());
konten.add(panel_6, BorderLayout.SOUTH);
konten.add(panel_7, BorderLayout.CENTER);
show();
}
170
//class Utama
public class praktek41
{
public static void main(String args[])
{
new frame41();
}
}
//latihan 3b
import javax.swing.*;
import java.awt.*;
import javax.swing.event.*;
import java.awt.event.*;
171
private JComboBox cmbTarget = new JComboBox(pil);
private JButton button1 = new JButton("Konversi");
private JLabel lblHasil = new JLabel();
frame42()
{
super ("UNIVERSITAS BUDI LUHUR");
setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE
);
setSize(500,100);
setLocation(300,100);
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();
}
iSource = cmbSource.getSelectedIndex();
iTarget = cmbTarget.getSelectedIndex();
172
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;
}
//class utama
public class praktek42
{
public static void main(String args[])
{
new frame42();
}
}
173
Jawaban Latihan 4
/*
*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.*;
174
public Pear() {
setSize(new Dimension(400,300));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Graphics2D g2 = (Graphics2D) g;
/*
*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
*/
175
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);
//Mouse Listener
public 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){}
176
Jawaban Latihan 5
lblCm lblCmCapt
sldCm
lblInch lblFeet
lblInchCapt lblFeetCapt
s S
l l
d d
I F
n e
c e
h t
Rumus
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
177
private JLabel lblCm = new JLabel();
private JLabel lblCmCapt = new JLabel();
private JSlider sldCm = new JSlider();
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);
panel4.setLayout(new BorderLayout());
panel4.add(sldInch, BorderLayout.WEST);
sldFeet.setMaximum(328);
178
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 Berubah
new ChangeListener()
{public void stateChanged(ChangeEvent e)
{
lblCmCapt.setText(
sldCm.getValue() + " Cm"
);
}
}
);
sldCm.addMouseListener
(
//jika mouse selesai melakukan pergerakan
new java.awt.event.MouseAdapter()
{
public void mouseReleased(MouseEvent e)
{
double dInch,dFeet;
sldInch.setValue((int) dInch);
lblInchCapt.setText(dInch + " Inch");
);
sldInch.addChangeListener
(
new ChangeListener()
{public void stateChanged(ChangeEvent e)
{
lblInchCapt.setText(
sldInch.getValue() + " Cm"
);
}
179
}
);
sldInch.addMouseListener
(new java.awt.event.MouseAdapter()
{
public void mouseReleased(MouseEvent e)
{
double dCm,dFeet;
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;
sldCm.setValue((int) dCm);
lblCmCapt.setText(dCm + " Cm");
sldInch.setValue((int) dInch);
lblInchCapt.setText(dInch + " Inch");
}
}
);
konten.add(panel6);
show();
180
}
}
public class praktek53
{
public static void main(String args[])
{
new frame53();
}
}
181
Jawaban Latihan 6
<object>.setMnemonic(<int|char>);
Keseluruhan Program :
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
182
private JLabel lblJudul = new JLabel("Judul");
private JTextField txtJudul = new JTextField();
frame52icon()
{
super("Universitas Budi Luhur");
setSize(500,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
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);
183
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.addMouseListener
( new MouseListener()
{
public void mousePressed(MouseEvent e) { }
public void mouseExited(MouseEvent e) { }
public void mouseEntered(MouseEvent e) { }
public void mouseClicked(MouseEvent e) { }
public void mouseReleased(MouseEvent e)
{
//jika Click kanan maka tampilkan popup
if (e.getButton() == 3)
popmenu.show(
e.getComponent(),
184
e.getX(), e.getY()
);
}
}
);
jScrollPane1.getViewport().add(txtArea,null);
box1.add(jScrollPane1);
konten = getContentPane();
konten.setLayout(new BorderLayout());
konten.add(box1, BorderLayout.NORTH);
185
{
public static void main(String args[])
{
new frame52icon();
}
186
Jawaban Latihan 7
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, //resizable
true, //closable
true, //maximizable
true);//iconifiable
setSize(300,300);
//Penenempatan Windows
setLocation(
xOffset*openFrameCount,
yOffset*openFrameCount
);
}
}
import java.awt.event.*;
import java.awt.*;
/*
* InternalFrameDemo.java requires:
* MyInternalFrame.java
187
*/
public class InternalFrameDemo extends JFrame
implements ActionListener {
JDesktopPane desktop;
public InternalFrameDemo() {
super("InternalFrameDemo");
desktop.setDragMode(
JDesktopPane.OUTLINE_DRAG_MODE
);
}
return menuBar;
}
188
} else { //quit
quit();
}
}
189
Jawaban Latihan 8
/*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.*;
/*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);
}
190
private static void createAndShowGUI() {
//look and feel
JFrame.setDefaultLookAndFeelDecorated(true);
demo.addComponentToPane(frame.getContentPane());
//frame.pack();
frame.setVisible(true);
}
191
Jawaban Latihan 9
frmTesting
PROPERTIES NILAI
Objek jFrame
defaultCloseOperation EXIT_ON_CLOSE
contentPane
PROPERTIES NILAI
Objek contentPane
layout null
lblNim
PROPERTIES NILAI
Objek jLabel
text Nim
lblNama
PROPERTIES NILAI
Objek jLabel
Text Nama
lblSertifikat
PROPERTIES NILAI
Objek jLabel
Text Sertifikat
lblJurusan
PROPERTIES NILAI
Objek jLabel
Text Jurusan
lblKampus
PROPERTIES NILAI
Objek jLabel
Text Kampus
txtNim
PROPERTIES NILAI
Objek jTextField
Text <kosong>
txtNama
PROPERTIES NILAI
Objek jTextField
192
Text <kosong>
chSD
PROPERTIES NILAI
Objek jTextField
Text SD
chSMP
PROPERTIES NILAI
Objek jCheckBox
Text SMP
chSMA
PROPERTIES NILAI
Objek jCheckBox
Text SMA
grpJurusan
PROPERTIES NILAI
Objek groupButton
rdTI
PROPERTIES NILAI
Objek jRadioButton
Text TI
ButtonGroup grpJurusan
rdMI
PROPERTIES NILAI
Objek jRadioButton
Text MI
ButtonGroup grpJurusan
rdAK
PROPERTIES NILAI
Objek jRadioButton
Text AK
ButtonGroup grpJurusan
rdTK
PROPERTIES NILAI
Objek jRadioButton
Text TK
193
ButtonGroup grpJurusan
cmbKampus
PROPERTIES NILAI
Object JcomboBox
cmdSave
PROPERTIES NILAI
Object JButton
Text Simpan
Mnemonic S
cmdExit
PROPERTIES NILAI
Object JButton
Text Keluar
Mnemonic K
JBuider
194
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
*/
195
//Main method
public 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
*/
196
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
//Component initialization
private 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));
197
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);
}
198
NetBeans
Mengganti layout layar dengan meng-click kanan pada layar kemudian pilih set
Layout Null Layout.
199
Tambahkan pada method frmTesting() di frmTesting.java
cmbKampus.addItem("Cempaka Mas");
cmbKampus.addItem("Ciledug");
cmbKampus.addItem("Roxy");
cmbKampus.addItem("Salemba");
cmbKampus.setSelectedIndex(1);
/*
* Main.java
*
* Created on July 14, 2006, 2:57 AM
*
*/
package testing;
/**
*
* @author windu
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
/*
* frmTesting.java
*
* Created on July 14, 2006, 3:11 AM
*/
package testing;
/**
*
* @author windu
*/
200
public class frmTesting extends javax.swing.JFrame {
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);
201
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);
202
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);
}
});
}
203
Jawaban Latihan 10
try {
} finally {
Jawaban :
Ya, diperbolehkan. Penggunaan perintah try {} dapat ditutup minimal dengan
catch atau finally.
catch (Exception e) {
Jawaban :
Penggunaan Exception dapat menanganani atau menangkap keseluruhan pesan
kesalahan. Tetap tidak disarankan karena pesan aslinya tidak terbaca dan tidak
efesien.
3. Apakah akan terjadi kesalahan pada program dibawah ini? Akankah program
dapat terkompilasi dengan baik?
try {
} catch (Exception e) {
} catch (ArithmeticException a) {
204
Jawaban Latihan 11
Keseluruhan program :
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
Frame1() {
javax.swing.Timer stp =
new javax.swing.Timer(1000, stopwatch);
stp.start();
contentPane.add(jLabel1, null);
show();
}
205
//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);
}
206
Jawaban Latihan 12
- Cara penyimpanan
- Cara pembacaan
Program keseluruhan :
207
);
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"
);
frame52(){
super("Universitas Budi Luhur");
setSize(500,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
208
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.addMouseListener
( new MouseListener()
{
public void mousePressed(MouseEvent e) { }
209
public void mouseExited(MouseEvent e) { }
public void mouseEntered(MouseEvent e) { }
public void mouseClicked(MouseEvent e) { }
public void mouseReleased(MouseEvent e)
{
//jika Click kanan maka tampilkan popup
if (e.getButton() == 3)
popmenu.show(
e.getComponent(), e.getX(), e.getY()
);
}
}
);
jScrollPane1.getViewport().add(txtArea,null);
box1.add(jScrollPane1);
konten = getContentPane();
konten.setLayout(new BorderLayout());
konten.add(box1, BorderLayout.NORTH);
int bytelength=fis.available();
txtmsg = "";
for (
int bytecount=0;
bytecount<bytelength;
bytecount++)
{
210
char fch=(char)fis.read();
txtmsg=txtmsg+fch;
}
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();
}catch(Exception ioe) {
JOptionPane.showMessageDialog (
211
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);
}
}
}
212
public class praktek52{
public static void main(String args[]){
new frame52();
}
213
BAB XVII
PENUTUP
Akhir kata, penulis berharap buku ini dapat berkontribusi dalam upaya
pengembangan perangkat lunak di Indonesia. Terutama, ditujukan pada mahasiswa
dan lulusan perguruan tinggi. Selanjutnya penulis juga berharap masukkan dan kritik
dari para pengguna maupun dari kalangan praktisi.
214
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
215
TENTANG PENULIS
216