BAHASA PEMROGRAMAN JAVA
PENDAHULUAN
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).
Dikarenakan buku ini diperuntukkan pada pembaca yang sudah mengenal
dasar-dasar algoritma dan dasar-dasar-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 susu 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 beraupa 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
Exception.
BAB XII
Thread
BAB XIII
Mengenal cara mengakses file dan mengembangkan program pada bab VII
menggunakan fasilitas akses file.
BAB XIV
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.*.
Didalam buku ini, untuk tampilan GUI, penulis menggunakan javax.swing.*,
yaitu JFrame, Jlabel, JTextField, JRadioButton, JCheckBox, JComboBox, JTextArea,
JSlider, JMenuBar, JPopUpMenu, JMenuItem, dan
tools
lainnya.
JFRAME
Saat kita membuat program java GUI, yang pertama kali kita harus kuasai adalah
penggunaan JFrame. JFrame digunakan untuk mendesain model tampilan yang
didalamnya dapat kita tempatkan komponen-komponen lainnya.
Contoh penggunaan tampilan frame pada program java :
//program pertama
//Tidak Menggunakan Construktor import javax.swing.JFrame; class frame1{
public static void main(String args []){ JFrame tampil = new JFrame();
tampil.show(); } }
Atau
//program kedua //menggunakan konstruktor import javax.swing.*;class frame21 extends JFrame{ frame21(){ //construktor show();
super("Universitas Budi Luhur"); this.setSize(300,200) setLocation (10,100); setResizable(false); } } class frame22{
public static void main(String args[]){ new frame21();
} }
Apabila kedua program tersebut dikompilasi dan dijalankan maka akan terdapat
tampilan seperti dibawah ini :
Gambar 1. JFrame
Untuk membuat frame dengan tulisan “Universitas Budi Luhur”, pada posisi x =
10 dan Y = 100, lebar = 300, tinggi = 200,
Resizable
false
, dan akan terhapus di
alokasi memori setelah aplikasi di tutup seperti pada gambar 2 sebagai berikut :
//program ketiga import javax.swing.*;
class frame61 extends JFrame{ frame61(){
super("Universitas Budi Luhur");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocation (10,100); this.setSize(300,200); setResizable(false); show(); } } class frame62{
public static void main (String args[]){ new frame61();
} }
BAB II
GRAFIK DUA DIMENSI (2D) PADA JFRAME
Grafik dua dimensi (2D) menggunakan
class
yang terdapat pada java.awt.*, yaitu
Canvas. Komponen Canvas tersebut berbentuk kotak kosong pada layar. Didalam
Canvas tersebut dapat kita gunakan sebagai media gambar 2 (dua) dimensi.
Penggunaan Canvas harus dibarengi dengan sub class paint sebagai media gambar
yang berupa perintah.
Cara menggabungkan penggunaan Canvas dan Jframe adalah sebagai berikut :
Gambar 3. Grafik dua Dimensi (2D) Dan JFRAME
//program ke empat import javax.swing.*; import java.awt.*; //Class Canvas
class grap1 extends Canvas{
public void paint (Graphics g){ //(x,y,width,height) g.drawRect(1,5,50,20); g.drawLine(35,50,100,70);
//(x,y,width,height,arcwidth,archeight g.drawRoundRect(1,50,30,40,5,100); g.setColor(Color.YELLOW); //set warna g.drawOval(110,50,40,30);
g.setFont(new Font("Tahoma",Font.ITALIC,20)); g.drawString("9511500134",80,15);
g.setColor(Color.BLUE); //set warna g.fillRect(1,110,30,20);
g.fillOval(50,110,30,20); }
}
//Class frame
class grap11 extends JFrame{
private Container konten=new Container(); private grap1 duaD =new grap1();
super("Universitas Budi Luhur"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocation(10,100); this.setSize(250,200); konten= getContentPane(); konten.add(duaD); show(); }
public static void main(String args[]){ new grap11();
} }
Contoh tampilan pada gambar ke 3, terdapat 2 (dua) class, yaitu
-
class grap1 extends Canvas
-
class grap11 extends JFrame
Pada class pertama, class yang bernama grap1, merupakan turunan dari objek
Canvas yang berasal dari java.awt yang digunakan untuk melakukan design grafik
2D.
Adapun struktur dasar dari canvas bersifat abstrak dengan bentuk dasar
pemgrogramannya adalah sebagai berikut :
[public|private] class <nameclass> extends Canvas{ public void paint(Graphics <objectname>){ …..
} }
Perumpamaan membuat gambar 2D menggunakan objek Canvas adalah seperti
menggambar pada sebuah kertas kosong dengan pensil gambar. Hanya saja
penggunaan objek Canvas menggunakan posisi piksel pada frame.
Posisi 0 pada horizontal (X=0) dan posisi 0 pada vertikal (Y=0), menunjukan
posisi tersebut berada pada posisi ujung paling kiri dan paling atas dari frame.
Jika X > 0 maka posisi berada ke arah kanan dari frame, sedangkan jika Y > 0
maka posisi berada ke arah bawah dari frame.
Banyak objek yang dapat digunakan untuk menggambar 2D pada Canvas, yaitu
bulat, kotak, garis dan lain-lain.
Pada gambar 3 terdapat beberapa objek, yaitu :
-
Kotak
drawRect (x,y,width, height)
-
Kotak dengan bundaran di pinggir
drawRoundRect (x, y, width, height, arcwidth, archeight)
-
Kotak dengan warna didalamnya
fillRect (x,y,width,height)
-
Penggunaan Font
setFont(new Font("<Model Font>", <STANDAR|BOLD|ITALIC>, <Size>))
-
String
drawstring(“<tulisan>”,x,y)-
Garis
drawLine(x,y,width,height)-
Bundar
drawOval(x,y,width,height)fillOval(x,y,width, height)
-
Pewarnaan
setColor(<color>)
Ketika hendak menggunakan Class pertama pada class kedua (frame) perlu
menggunakan perintah :
private grap1 duaD =new grap1();
Kemudian class pertama tersebut ditampilkan pada JFrame dengan menggunakan
perintah :
konten.add(duaD);
Latihan 1 :
Buatlah program 2 (dua) dimensi seperti pada gambar 4 dibawah ini
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 5, menunjukan form
input
-an mahasiswa yang menggunakan
beberapa objek javax.swing.*, yaitu : JLabel, JTextField, JCheckBox, JRadioButton,
JComboBox dan JButton. Ditambah dengan penggunaan Action Listener dari
java.awt.event.* dan model-model tampilan (FlowLayout dan GridLayout )
Gambar 5. Input Data Mahasiswa
Sebelum membuat program, sebaiknya kita mengenal masing-masing objek satu
persatu, yaitu :
JLabel
Berfungsi untuk menampilkan tulisan atau gambar ikon pada frame
Constructor
JLabel
()
Membuat
JLabel
tanpa gambar dan tanpa tulisan didalamnya
JLabel
(Icon image)
Membuat
JLabel
dengan gambar.
JLabel
(Icon image, int horizontalAlignment)
Membuat
JLabel
dengan Gambar dan model
horizontal alignment
(
LEFT
,
CENTER
,
RIGHT
,
LEADING
atau
TRAILING)
JLabel
(String text)
Membuat
JLabel
dengan isi teks didalamnya.
JLabel
(String text, Icon icon, int horizontalAlignment)
Membuat
JLabel
dengan isi text didalamnya, gambar dan
horizontal
JTextField JCheckBox JRadioButton JLabel JComboBox JButton
alignment
(
LEFT
,
CENTER
,
RIGHT
,
LEADING
atau
TRAILING)
.
JLabel
(String text, int horizontalAlignment)
Membuat
JLabel
dengan isi text didalamnya dan
horizontal alignment
(
LEFT
,
CENTER
,
RIGHT
,
LEADING
atau
TRAILING).
Beberapa
Method
yang harus diketahui
String
getText
()
Mendapatkan nilai string pada
JLabel
void
setText
(String text)
Memberikan nilai string pada
JLabel
Contoh Penggunaan :
http://java.sun.com/docs/books/tutorial/uiswing/components/label.html
JTextField
Berfungsi sebagai media edit
single
teks
Constructor
JTextField
()
Membuat
JTextField
.
JTextField
(Document doc, String text, int columns)
Membuat
JTextField
yang menggunakan model text, isi dari
JTextField
dan kolom.
JTextField
(int columns)
Membuat
JTextField
dengan model kolom.
JTextField
(String text)
Membuat
JTextField
dengan isi teks didalamnya.
JTextField
(String text, int columns)
Membuat
JTextField
dengan isi teks didalamnya dan kolom.
Beberapa
Method
yang harus diketahui
void
addActionListener
(ActionListener l)
Memberikan
action listener
pada JTextField
String
getText
()
Mendapatkan nilai string dari
JTextField
.
void
setFont
(Font f)
Merubah
Font
pada
JTextField
void
setText
(String Text)
Memberikan nilai string pada
JTextField
Contoh Penggunaan :
http://java.sun.com/docs/books/tutorial/uiswing/components/textfield.html
JCheckBox
Digunakan untuk pilihan yang dapat lebih dari satu pilihan
Constructor
JCheckBox
()
Membuat
JCheckBox
dalam posisi tidak tercentang/terpilih tanpa text dan ikon.
JCheckBox
(
Action
a)
Creates a check box where properties are taken from the Action supplied.
JCheckBox
(Icon icon)
Membuat
JCheckBox
dengan posisi tidak tercentang/terpilih dengan tampilan
gambar ikon.
JCheckBox
(Icon icon, boolean selected)
Membuat
JCheckBox
dengan tampilan gambar ikon dan posisi tercentang/terpilih
tergantung dengan parameter Boolean yang diberikan.
JCheckBox
(String text)
Membuat
JCheckBox
dengan posisi tidak tercentang/terpilih dengan teks.
JCheckBox
(String text, boolean selected)
Membuat
JCheckBox
dengan isian berupa teks dan posisi tercentang/terpilih
disesuaikan dengan parameter Boolean yang diberikan.
JCheckBox
(String text, Icon icon)
Membuat
JCheckBox
dengan posisi tidak tercentang dengan teks dan tampilan
gambar ikon.
JCheckBox
(String text, Icon icon, boolean selected)
Membuat
JCheckBox
dengan teks dengan tampilan gambar ikon dan posisi
Contoh Penggunaan :
http://java.sun.com/docs/books/tutorial/uiswing/components/button.html
JRadioButton
Digunakan untuk memilih satu dari beberapa pilihan.
Constructor
JRadioButton
()
Membuat
JRadioButton
dengan posisi tidak tercentang/terpilih dan tanpa isian
teks.
JRadioButton
(Icon icon)
Membuat
JRadioButton
dengan posisi tidak tercentang/terpilih dengan tampilan
gambar dengantanpa teks.
JRadioButton
(Icon icon, boolean selected)
Membuat
JRadioButton
dengan gambar, tanpa teks dan posisi tercentang/terpilih
sesuai dengan parameter Boolean yang diberikan.
JRadioButton
(String text)
Membuat
JRadioButton
dengan posisi tidak tercentang/terpilih dengan teks.
JRadioButton
(String text, boolean selected)
Membuat
JRadioButton
dengan teks dan posisi tercentang/terpilih sesuai dengan
parameter boolean yang diberikan.
JRadioButton
(String text, Icon icon)
Membuat
JRadioButton
dengan teks dan gambar ikon dengan posisi tidak
tercentang/terpilih.
JRadioButton
(String text, Icon icon, boolean selected)
Membuat
JRadioButton
dengan teks, gambar ikon dan posisi tercentang/terpilih
disesuaikan dengan parameter Boolean yang diberikan.
Beberapa
Method
yang harus diketahui
Boolean
isSelected
()
Mendapatkan nilai dari
JCheckBox
. Jika tercentang/terpilih
maka nilainya adalah true, apabila tidak tercentang nilainya adalah
false.
void
setSelected
()
Contoh Penggunaan :
http://java.sun.com/docs/books/tutorial/uiswing/components/button.html
Saat penggunaan
JRadioButton
harus menggunakan
ButtonGroup
untuk
menggabungkan
JRadioButton
.
ButtonGrop
Berfungsi sebagai penggabungan komponen pada java
Constructor
ButtonGroup
()
Membuat
ButtonGroup
Beberapa
Method
yang harus diketaui
void
add
(AbstractButton b)
Menambah button pada group.
void
remove
(AbstractButton b)
Menghapus button dari the group.
JComboBox
Berfungsi untuk memilih satu dari beberapa pilihan dengan tampilan list dan dapat
diedit sesuai dengan kebutuhan
Constructor
JComboBox
()
Membuat
JComboBox
.
JComboBox
(ComboBoxModel aModel)
Membuat
JComboBox
dengan
ComboBoxModel
yang diinginkan
(
DefaultComboBoxModel
,
MetalFileChooserUI.DirectoryComboBoxModel
,
Beberapa
Method
yang harus diketahui
Boolean
isSelected
()
Mendapatkan nilai dari
JRadioButton
. Jika tercentang/terpilih
maka nilainya adalah true, apabila tidak tercentang nilainya adalah false.
void
setSelected
()
MetalFileChooserUI.FilterComboBoxModel
).
JComboBox
(Object[] items)
Membuat
JComboBox
dengan isian berupa array.
JComboBox
(Vector items)
Contoh Penggunaan :
http://java.sun.com/docs/books/tutorial/uiswing/components/combobox.html
JButton
Mengimplementasikan penggunaan “push button”
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)
Constructor
JButton
()
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 5, apabila tombol “Tampilkan” ditekan maka
akan tampil isi data dari form. Pada pemrograman java, fungsi tersebut dapat
menggunakan
method
addActionListener
dan
actionPerformed
.
Method
void
actionPerformed
(ActionEvent e)
Mendeteksi Action yang diberikan.
Rancangan tampilan dibuat dengan menggunakan layout FlowLayout dan
GridLayout. Dalam layout FlowLayout terdapat tiga jenis layout, yaitu
FlowLayout.LEFT untuk posisi kiri, FlowLayout.CENTER untuk posisi tengah dan
FlowLayout.RIGHT untuk posisi kanan
LEFT
CENTER
RIGHT
Sedangkan GridLayout disesuaikan dengan parameter yang diberikan. Sebagai
contoh, GridLayout(6,2), berarti baris dari grid adalah 6 dan kolomnya sebanyak 2.
Untuk lebih jelasnya pada gambar 5 adalah sebagai berikut :
lblNim
txtNim
lblNama
txtNama
lblSertifikat
chSD
chSMP
chSMA
lblJurusan
rdTI
rdMI
rdAK
rdTK
lblKampus
cmbKampus
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 5
//program ke lima import javax.swing.*; import javax.swing.event.*; import java.awt.*;
import java.awt.event.*; class frame23 extends JFrame{ //deklarasi
private Container konten = new Container(); private JPanel panel1 = new JPanel(); private JLabel lblNim = new JLabel();
private JTextField txtNim = new JTextField(10); private JLabel lblNama = new JLabel();
private JTextField txtNama = new JTextField(20); private JLabel lblSertifikat = new JLabel(); private JPanel panel2 = new JPanel();
private JCheckBox chSD = new JCheckBox("SD"); private JCheckBox chSMP = new JCheckBox("SMP"); private JCheckBox chSMA = new JCheckBox("SMA"); private JPanel panel3 = new JPanel();
private JLabel lblJurusan = new JLabel();
private ButtonGroup grpJurusan = new ButtonGroup(); private JRadioButton rdTI = new JRadioButton("TI"); private JRadioButton rdMI = new JRadioButton("MI"); private JRadioButton rdAK = new JRadioButton("AK"); private JRadioButton rdTK = new JRadioButton("TK"); private JLabel lblKampus = new JLabel();
String sKampus[] = {"Cempaka Putih","Cileduk","Roxy","Salemba"}; private JComboBox cmbKampus = new JComboBox(sKampus);
private JButton cmdSave = new JButton("Tampilkan"); private JButton cmdEnd = new JButton("Selesai"); frame23(){
super("Universitas Budi Luhur");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocation(10,100); this.setSize(500,200); konten=getContentPane(); konten.setLayout(new FlowLayout(FlowLayout.CENTER)); lblNim.setText("NIM"); lblNama.setText("NAMA"); lblSertifikat.setText("Sertifikat"); lblJurusan.setText("Jurusan"); lblKampus.setText("Kampus"); panel1.setLayout(new GridLayout(6,2)); panel1.add(lblNim);
panel1.add(txtNim); panel1.add(lblNama); panel1.add(txtNama); panel1.add(lblSertifikat); panel2.setLayout(new GridLayout(1,3)); panel2.add(chSD); panel2.add(chSMP); panel2.add(chSMA); panel1.add(panel2); grpJurusan.add(rdTI); grpJurusan.add(rdMI); grpJurusan.add(rdAK); grpJurusan.add(rdTK); panel3.setLayout(new GridLayout(1,4)); panel3.add(rdTI); panel3.add(rdMI); panel3.add(rdAK); panel3.add(rdTK); panel1.add(lblJurusan); panel1.add(panel3); cmbKampus.setSelectedIndex(1); cmbKampus.setMaximumRowCount(3); panel1.add(lblKampus); panel1.add(cmbKampus);
itemHandler itemHandler = new itemHandler(); panel1.add(cmdSave); cmdSave.addActionListener(itemHandler); panel1.add(cmdEnd); cmdEnd.addActionListener(itemHandler); konten.add(panel1); show(); }
private class itemHandler implements ActionListener{ public void actionPerformed(ActionEvent e){
Object obj=e.getSource(); //mendapatkan nama objek action if(obj==cmdSave){
String sTampil;
sTampil = "NIM : " + txtNim.getText(); sTampil+= "\nNama : " + txtNama.getText(); sTampil+= "\nSertifikat";
if (chSD.isSelected()) sTampil+= ", SD"; if (chSMP.isSelected()) sTampil+= ", SMP"; if (chSMA.isSelected()) sTampil+= ", SMA"; sTampil+= "\nJurusan";
if (rdTI.isSelected()) sTampil+= ", TI"; else if(rdMI.isSelected()) sTampil+=",MI"; else if(rdAK.isSelected()) sTampil+=",AK"; else if(rdTK.isSelected()) sTampil+=",TK"; else sTampil+=", Ngak Jelas";
sTampil+="\nKampus,"; sTampil+=cmbKampus.getItemAt(
cmbKampus.getSelectedIndex()); JOptionPane.showMessageDialog(null, sTampil , "HASIL", JOptionPane.INFORMATION_MESSAGE);
}
else {System.exit (0);} }
}
new frame23(); }
BAB IV
JList (
Single Selected
dan
Multi Selected
) DAN
LAYOUT (Border Layout)
Gambar 6 adalah merupakan model form yang mirip seperti pada gambar 5
dimana JCheckBox diganti dengan JList model
multiselection
dan JRadioButton
diganti dengan JList model s
ingleselection
.
Gambar 6. Form Input Mahasiswa (JLIST)
JLIST
Membuat tampilan data list
Constructor
JList
()
Membuat
JList
standar
JList
(ListModel dataModel)
Membuat
JList
yang menampilkan elemen dengan
non-
null
model
.
JList
(Object[] listData)
Membuat
JList
yang menampilkan elemen array.
JList
(Vector listData)
Membuat
JList
yang menampilkan elemen dengan model
Vector
.
JList
Multiple Selection
JList
Beberapa
Method
yang harus diketahui
int
getSelectedIndex
()
Mendapatkan nilai Index jika tidak ada yang terpilih maka
Jlist akan memberikan nilai -1.
Object
getSelectedValue
()
Mendapatkan nilai terpilih jika tidak ada yang terpilih maka
Jlist
akan memberikan nilai
null
.
Object[]
getSelectedValues
()
Mendapatkan nilai dalam bentuk Array dari sel terpilih.
boolean
isSelectedIndex
(int index)
Mendapatkan nilai true apabila index terpilih dan akan
mengembalikan nilai false jika tidak terpilih.
boolean
isSelectionEmpty
()
Mendapatkan nilai true apabila tidak ada sel yang terpilih.
void
setSelectedIndex
(int index)
Mengaktifkan sebuah sel .
void
setSelectedValue
(Object anObject,
boolean shouldScroll)
Mengaktifkan objek pada list.
void
setSelectionBackground
(Color selectionBackground)
Memberikan warna background.
void
setSelectionForeground
(Color selectionForeground)
Memberikan warna foreground.
void
setSelectionMode
(int selectionMode)
Merubah model
Jlist
menjadi
single selection
<object>.setSelectionMode(ListSelectionModel.SINGLE_SE
LECTION)
atau
multiple selection
.
<object>.setSelectionMode(ListSelectionModel.MULTIPLE_
INTERVAL_SELECTION)
Contoh Penggunaan :
http://java.sun.com/docs/books/tutorial/uiswing/components/list.html
dalam rancangan tampilan pada gambar 6, kita menggunakan layout FlowLayout,
Gridlayout dan BorderLayout.
Perlu diingat bahwa layout FlowLayout dan GridLayout telah diterangkan
sebelumnya, khususnya dalam contoh pada gambar 5.
Sedangkan ilustrasi dari penggunaan layout BorderLayout dapat dilihat dalam
bentuk berikut :
NORTH
WEST
CENTER
EAST
SOUTH
Layout BorderLayout menggunakan arah mata angin sebagai patokan, misalkan :
-
North, berarti objek berada pada posisi atas.
-
West, berarti objek berada pada posisi kiri.
-
Center, berarti objek berada pada tengah.
-
East, berarti objek berada pada posisi kanan.
-
South, berarti objek berada pada posisi bawah.
Untuk lebih jelasnya rancangan tampilan pada gambar 6 adalah sebagai berikut :
lblNim
txtNim
lblNama
txtNama
lblSertifikat
lstSertifikat
lblJurusan
lstJurusan
lblKampus
cmbKampus
cmdSave
cmdExit
Terdapat 1(satu) Container dengan model FlowLayout.CENTER dengan jumlah
panel sebanyak 4 (empat) panel :
-
panel1, dengan model layout GridLayout(2,2) untuk penempatan lblNim, txtNim,
lblNama dan txtNama
-
panel2, dengan model layout GridLayout(2,2) untuk penempatan lblSertifikat,
lstSertifikat, lblJurusan, dan lstJurusan
-
panel3, dengan model layout GridLayout(2,2) untuk penempatan lblKampus,
cmbKampus, btnSave, dan btnExit
-
panel4, dengan model BorderLayout. Dimana pada posisi NORTH untuk
penempatan panel1, posisi CENTER untuk penempatan panel2, dan posisi
SOUTH untuk penempatan panel3
Contoh program java untuk gambar 6 :
//program ke enam import javax.swing.*; import javax.swing.event.*; import java.awt.*;
import java.awt.event.*; class frame31 extends JFrame{
private Container konten = new Container(); private JPanel panel1 = new JPanel(); private JLabel lblNim = new JLabel();
private JTextField txtNim = new JTextField(10); private JLabel lblNama = new JLabel();
private JTextField txtNama = new JTextField(20); private JPanel panel2 = new JPanel();
private JLabel lblSertifikat = new JLabel(); String sSertifikat[] = {"SD", "SMP", "SMA"}; private JList lstSertifikat;
private JLabel lblJurusan = new JLabel(); String sJurusan[] = {"TI", "MI", "AK", "TK"}; private JList lstJurusan;
private JPanel panel3 = new JPanel(); private JLabel lblKampus = new JLabel();
String sKampus[] = {"Cempaka Putih","Cileduk","Roxy","Salemba"}; private JComboBox cmbKampus = new JComboBox(sKampus);
private JButton cmdSave = new JButton("Tampilkan"); private JButton cmdEnd = new JButton("Selesai"); private JPanel panel4 = new JPanel();
frame31(){
super("Universitas Budi Luhur");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocation(10,100); this.setSize(500,450); konten=getContentPane(); konten.setLayout(new FlowLayout(FlowLayout.CENTER)); lblNim.setText("NIM"); lblNama.setText("NAMA");
lblSertifikat.setText("Sertifikat (Multiple Selection)"); lblJurusan.setText("Jurusan (Single Selection)");
lblKampus.setText("Kampus"); panel1.setLayout(new GridLayout(2,2)); panel1.add(lblNim); panel1.add(txtNim); panel1.add(lblNama); panel1.add(txtNama); panel2.setLayout(new GridLayout(2,2)); lstSertifikat = new JList(sSertifikat); lstSertifikat.setSelectionMode(
ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); panel2.add(lblSertifikat, BorderLayout.NORTH);
//untuk mengaktifkan scroll menu gunakan JScrollPane panel2.add(new JScrollPane(lstSertifikat));
lstJurusan = new JList(sJurusan); lstJurusan.setSelectionMode( ListSelectionModel.SINGLE_SELECTION); panel2.add(lblJurusan); panel2.add(new JScrollPane(lstJurusan)); panel3.setLayout(new GridLayout(2,2)); cmbKampus.setSelectedIndex(1); cmbKampus.setMaximumRowCount(3);
panel3.add(lblKampus); panel3.add(cmbKampus);
itemHandler itemHandler = new itemHandler(); panel3.add(cmdSave); cmdSave.addActionListener(itemHandler); panel3.add(cmdEnd); cmdEnd.addActionListener(itemHandler); panel4.setLayout(new BorderLayout()); panel4.add(panel1, BorderLayout.NORTH); panel4.add(panel2, BorderLayout.CENTER); panel4.add(panel3, BorderLayout.SOUTH); konten.add(panel4, BorderLayout.EAST); show(); }
private class itemHandler implements ActionListener{ public void actionPerformed(ActionEvent e){
Object obj=e.getSource(); if(obj==cmdSave){
String sTampil;
sTampil = "NIM : " + txtNim.getText(); sTampil+= "\nNama : " + txtNama.getText(); sTampil+= "\nSertifikat "; if (lstSertifikat.isSelectedIndex(0)) sTampil+=", " + sSertifikat[0]; if (lstSertifikat.isSelectedIndex(1)) sTampil+=", " + sSertifikat[1]; if (lstSertifikat.isSelectedIndex(2)) sTampil+=", " + sSertifikat[2]; sTampil+= "\nJurusan, "; sTampil+= lstJurusan.getSelectedValue(); sTampil+="\nKampus,"; sTampil+=cmbKampus.getItemAt(cmbKampus.getSelectedIndex()); JOptionPane.showMessageDialog(null, sTampil , "HASIL", JOptionPane.INFORMATION_MESSAGE);
}
else {System.exit (0);} }
}
public static void main(String args[]){ new frame31();
} }
Latihan 2
-
Buatlah tampilan Handphone seperti pada gambar 7 kemudian aktifkan tombol
numerik (*,#,0-9) sehingga dapat tampil pada TextField dibawah ini
Gambar 7. HandPhone
-
Buatlah program konversi suhu celcius, Kelvin dan Farenheit dengan tampilan
seperti pada gambar 8.
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
Mendeteksi pergerakan mouse
Method
void
mouseDragged
(MouseEvent e)
Mouse dengan posisi ditekan kemudian digerakkan.
void
mouseMoved
(MouseEvent e)
Mouse digerakkan tanpa ada tombol yang ditekan.
MouseListener
Mendeteksi tombol mouse yang digunakan
Method
void
mouseClicked
(MouseEvent e)
Mouse di-
click
atau ditekan tombolnya kemudian langsung
dilepaskan.
void
mouseEntered
(MouseEvent e)
Ketika mouse memasuki komponen.
void
mouseExited
(MouseEvent e)
Ketika mouse keluar dari komponen.
void
mousePressed
(MouseEvent e)
Tombol mouse ditekan.
void
mouseReleased
(MouseEvent e)
Tombol mouse dilepaskan
KeyListener
Mendeteksi tombol keyboard yang digunakan
Method
void
keyPressed
(KeyEvent e)
Tombol keyboard ditekan.
void
keyReleased
(KeyEvent e)
Tombol keyboard dilepas.
void
keyTyped
(KeyEvent e)
Tombol keyboard melakukan pengetikan
ActionListener
Mendeteksi aksi yang diberikan dari komponen..
Method
void
actionPerformed
(ActionEvent e)
Mengetahui
Action
yang dilakukan.
Coba perhatikan program ke tujuh dan ke delapan perbedaannya dan jalankan.
//program ketujuh import javax.swing.*; import java.awt.*; import java.awt.event.*;
class grap22 extends JFrame implements MouseMotionListener, MouseListener, KeyListener {
private Container konten = new Container(); private JLabel label1 = new JLabel(); private JLabel label2 = new JLabel();
private JTextField txtKey = new JTextField(20); private JLabel label3 = new JLabel();
grap22(){
super("Universitas Budi Luhur");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocation(10,100); this.setSize(250,200); konten=getContentPane(); konten.setLayout(new FlowLayout(FlowLayout.CENTER)); label1.setForeground(Color.YELLOW); label1.setText("Mouse Event"); label2.setFont(new Font("Tahoma",Font.BOLD,20)); label2.setForeground(Color.BLUE); label2.setText("Mouse Move"); konten.add(label1); konten.add(label2); konten.add(txtKey); konten.add(label3); label2.setForeground(Color.RED); //contoh event handling
konten.addMouseListener(this); txtKey.addKeyListener(this); show();
}
//Mouse Motion Listener
public void mouseDragged(MouseEvent e){
label2.setText("Dragged at [" + e.getX()+","+e.getY()+"]"); }
public void mouseMoved(MouseEvent e){
label2.setText("Moved at [" + e.getX()+","+e.getY()+"]"); }
//Mouse Listener
public void mouseReleased(MouseEvent e){ label1.setText("Mouse Released"); }
public void mousePressed(MouseEvent e){ label1.setText("Mouse Pressed"); }
public void mouseExited(MouseEvent e){ label1.setText("Mouse Exited"); }
public void mouseEntered(MouseEvent e){ label1.setText("Mouse Entered"); }
public void mouseClicked(MouseEvent e){ label1.setText("Mouse Clicked"); }
//Key Listener
public void keyTyped(KeyEvent e){
label3.setText(e.getKeyText(e.getKeyCode())); }
public void keyPressed(KeyEvent e){
label3.setText(e.getKeyText(e.getKeyCode())); }
public void keyReleased(KeyEvent e){
label3.setText(e.getKeyText(e.getKeyCode())); }
public static void main(String args[]){ new grap22(); } } //program kedelapan import javax.swing.*; import java.awt.*; import java.awt.event.*; class grap22 extends JFrame{
private Container konten = new Container(); private JLabel label1 = new JLabel(); private JLabel label2 = new JLabel();
private JTextField txtKey = new JTextField(20); private JLabel label3 = new JLabel();
grap22(){
super("Universitas Budi Luhur");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocation(10,100); this.setSize(250,200); konten=getContentPane(); konten.setLayout(new FlowLayout(FlowLayout.CENTER)); label1.setForeground(Color.YELLOW);
label1.setText("Mouse Event"); label2.setFont(new Font("Tahoma",Font.BOLD,20)); label2.setForeground(Color.BLUE); label2.setText("Mouse Move"); konten.add(label1); konten.add(label2); konten.add(txtKey); konten.add(label3); //contoh event handling
label2.setForeground(Color.RED); konten.addMouseMotionListener( new MouseMotionListener(){
public void mouseDragged(MouseEvent e){ label2.setText("Dragged at [" +
e.getX()+","+e.getY()+"]"); }
public void mouseMoved(MouseEvent e){ label2.setText("Moved at [" + e.getX()+","+e.getY()+"]");} } ); konten.addMouseListener( new MouseListener(){
public void mouseReleased(MouseEvent e){ label1.setText("Mouse Released"); }
public void mousePressed(MouseEvent e){ label1.setText("Mouse Pressed"); }
public void mouseExited(MouseEvent e){ label1.setText("Mouse Exited"); }
public void mouseEntered(MouseEvent e){ label1.setText("Mouse Entered"); }
public void mouseClicked(MouseEvent e) {label1.setText("Mouse Clicked");} }
);
txtKey.addKeyListener( new KeyListener(){
public void keyTyped(KeyEvent e){
label3.setText(e.getKeyText(e.getKeyCode())); }
public void keyPressed(KeyEvent e){
label3.setText(e.getKeyText(e.getKeyCode())); }
public void keyReleased(KeyEvent e){
label3.setText(e.getKeyText(e.getKeyCode())); } } ); show(); }
public static void main(String args[]){ new grap22();
} }
Kedua program tersebut apabila dijalankan mempunyai hasil yang sama (gambar
9) namun model penulisannya berbeda.
Gambar 9. MouseMotionListener, MouseListener, dan KeyListener
Pada program ke tujuh penggunaan listener, yaitu
MouseMotionListener,
MouseListener
, dan
KeyListener
kita akan menggunakan perintah
implements
,
kemudian pada saat penambahan listener cukup menambahkan kata
this
atau nama
objek
class
seperti pada penggalan program ke enam yang menggunakan listener
ActionListener
.
Sedangkan pada program ke delapan listener ditempatkan pada objek yang
mempunyai
method
listener.
//penggalan program ke enam import javax.swing.*; import javax.swing.event.*; import java.awt.*;
import java.awt.event.*; class frame31 extends JFrame{ …
{ …
itemHandler itemHandler = new itemHandler(); panel3.add(cmdSave); cmdSave.addActionListener(itemHandler); panel3.add(cmdEnd); cmdEnd.addActionListener(itemHandler); … }
private class itemHandler implements ActionListener{ public void actionPerformed(ActionEvent e){
Object obj=e.getSource(); //menangkap nama objek if(obj==cmdSave){ … } else {System.exit (0);} } }
public static void main(String args[]){ new frame31();
} }
BAB VI
JSlider
Pada bab ini penulis membuat contoh program konversi suhu menggunakan
komponen Jslider. Dengan rumus :
-
Fahrenheit = (Celcius * 1.8) + 32
-
Kelvin = Celcius + 273.15;
JSlider
JSlider digunakan untuk menandakan nilai dengan model
slide
. Nilai tersebut
berupa nilai minimum, nilai maksimum dan nilai-nilai antara serta bertipe data
integer.
Constructor
JSlider
()
Membuat horizontal slider dengan nilai minimum 0 sampai dengan maximum
100 dan dengan nilai aktif 50.
JSlider
(BoundedRangeModel brm)
Membuat horizontal slider menggunakan model BoundedRangeModel.
JSlider
(int orientation)
Membuat slider dengan model oreintasi sesuai dengan parameter input
(0=horizontal||1=vertical) dengan nilai minimum 0 sampai dengan nilai maximum
100 dan nilai aktif 50.
JSlider
(int min, int max)
Membuat horizontal slider menggunakan nilai minimum dan maximum yang
disesuaikan dengan parameter input.
JSlider
(int min, int max, int value)
Membuat horizontal slider dengan menggunakan nilai minmum, maximum,
dan nilai aktif sesuai dengan parameter input.
JSlider
(int orientation, int min, int max, int value)
Membuat slider dengan model orientasi, minimum, maximum, dan nilai aktif
sesuai dengan parameter input.
Beberapa
Method
yang harus diketahui
Int
getMaximum
()
Mendapatkan nilai maximum.
Int
getMinimum
()
Mendapatkan nilai minimum.
Mendapatkan model model oreintasi slider, apakah
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 10. Jslider
Gambar 10 merupakan bentuk program lain dari program konversi suhu yang
terdapat pada latihan 2. Gambar 10 menggunakan
Jslider
sebagai petunjuk nilai
Rancangan tampilan dari gambar 10 adalah sebagai berikut :
lblCelcius
lblCelciusCapt
sldCelcius
lblFahrenheit
lblCalvin
lblFahrenheitCapt
lblKelvinCapt
s
l
d
F
a
h
r
e
n
h
e
i
t
s
l
d
K
e
l
v
i
n
Terdapat 6 (enam) panel, yaitu :
-
pane11, dengan model FlowLayout.CENTER, untuk penempatan lblCelcius dan
lblCelciusCapt
-
panel2, dengan model BorderLayout, dimana BorderLayout.NORTH untuk
penempatan panel1 dan BorderLayout.SOUTH untuk penempatan sldCelcius
-
panel3, dengan model GridLayout(2,2), untuk penempatan lblFahrenheit,
lblKelvin, lblFahreinheitCapt, dan lblKelvinCapt
-
panel4, dengan model layout BorderLayout, dimana BorderLayout.WEST untuk
penempatan sldFahrenheit dan BorderLayout.EAST untuk penempatan sldKelvin
-
panel5, dengan model layout BorderLayout, dimana BorderLayout.NORTH untuk
penempatan panel3 dan BorderLayout.SOUTH untuk penempatan panel4
-
panel6, dengan model layout BorderLayout, dimana BorderLayout.NORTH untuk
penempatan panel2 dan BorderLayout.SOUTH untuk penempatan panel5
//program ke sembilan import javax.swing.*; import javax.swing.event.*; import java.awt.*;
import java.awt.event.*; class frame1 extends JFrame {
//penggunaan slider
//JSlider (posisi <0-horisontal|1-vertical>,min,max,0) private Container konten = new Container();
private JPanel panel1 = new JPanel(); private JPanel panel2 = new JPanel();
private JLabel lblCelcius = new JLabel(); private JLabel lblCelciusCapt = new JLabel(); private JSlider sldCelcius = new JSlider(); private JPanel panel3 = new JPanel();
private JLabel lblFahrenheit = new JLabel(); private JLabel lblFahrenheitCapt = new JLabel(); private JLabel lblKelvin = new JLabel();
private JLabel lblKelvinCapt = new JLabel(); private JPanel panel4 = new JPanel();
private JSlider sldFahrenheit = new JSlider(1,0,200,0); private JSlider sldKelvin = new JSlider(1,0,200,0); private JPanel panel5 = new JPanel();
private JPanel panel6 = new JPanel(); frame1()
{
super("Universitas Budi Luhur");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(200,325); setLocation(10,100); konten = getContentPane(); lblCelcius.setText("Celcius"); lblCelciusCapt.setText("0 Derajat"); panel1.setLayout(new FlowLayout(FlowLayout.CENTER)); panel1.add(lblCelcius); panel1.add(lblCelciusCapt); panel2.setLayout(new BorderLayout()); panel2.add(panel1, BorderLayout.NORTH); sldCelcius.setValue(0); panel2.add(sldCelcius, BorderLayout.SOUTH); lblFahrenheit.setText("Fahrenheit "); lblFahrenheitCapt.setText("0 Derajat"); lblKelvin.setText("Kelvin "); lblKelvinCapt.setText("273.15 Derajat"); panel3.setLayout(new GridLayout (2, 2)); panel3.add(lblFahrenheit); panel3.add(lblKelvin); panel3.add(lblFahrenheitCapt); panel3.add(lblKelvinCapt); panel4.setLayout(new BorderLayout()); panel4.add(sldFahrenheit, BorderLayout.WEST); sldKelvin.setMaximum(1000); sldKelvin.setMinimum((int) 273.15); sldKelvin.setValue((int) 273.15);
panel4.add(sldKelvin, BorderLayout.EAST);
panel5.setLayout(new BorderLayout()); panel5.add(panel3, BorderLayout.NORTH); panel5.add(panel4, BorderLayout.SOUTH); panel6.setLayout(new BorderLayout()); panel6.add(panel2, BorderLayout.NORTH); panel6.add(panel5, BorderLayout.SOUTH); sldCelcius.addChangeListener (
//jika nilai slider Berubah new ChangeListener()
{public void stateChanged(ChangeEvent e) { lblCelciusCapt.setText(sldCelcius.getValue() + " Derajat"); } } ); sldCelcius.addMouseListener (
//jika mouse selesai melakukan pergerakan new java.awt.event.MouseAdapter()
{
public void mouseReleased(MouseEvent e) { double dFahrenheit,dKelvin; dFahrenheit = (sldCelcius.getValue() * 1.8) + 32; dKelvin = sldCelcius.getValue() + 273.15; sldFahrenheit.setValue((int) dFahrenheit); lblFahrenheitCapt.setText(dFahrenheit + " Derajat"); lblKelvinCapt.setText(dKelvin + " Derajat"); sldKelvin.setValue((int) dKelvin); } } ); sldFahrenheit.addChangeListener ( new ChangeListener()
{public void stateChanged(ChangeEvent e) { lblFahrenheitCapt.setText( sldFahrenheit.getValue() + " Derajat"); } } ); sldFahrenheit.addMouseListener (new java.awt.event.MouseAdapter() {
public void mouseReleased(MouseEvent e) { double dCelcius,dKelvin; dCelcius=(sldFahrenheit.getValue()-32)* 0.5555; dKelvin = dCelcius + 273.15; sldCelcius.setValue((int) dCelcius); lblCelciusCapt.setText(dCelcius + " Derajat"); sldKelvin.setValue((int) dKelvin); lblKelvinCapt.setText(dKelvin + " Derajat"); } } ); sldKelvin.addChangeListener ( new ChangeListener()
{public void stateChanged(ChangeEvent e) {
} } ); sldKelvin.addMouseListener (new java.awt.event.MouseAdapter() {
public void mouseReleased(MouseEvent e) { double dCelcius,dFahrenheit; dCelcius = sldKelvin.getValue()-273.15; dFahrenheit = (dCelcius * 1.8) + 32; sldCelcius.setValue((int) dCelcius); lblCelciusCapt.setText(dCelcius + " Derajat"); sldFahrenheit.setValue((int) dFahrenheit); lblFahrenheitCapt.setText(dFahrenheit + " Derajat"); } } ); konten.add(panel6); show(); } }
public class praktek51 {
public static void main(String args[]) {
new frame1(); }
}
Latihan 3
BAB VII
JMenuBar, JMenu, JPopupMenu, JMenuItem,
JTextArea, dan Box
Kali ini contoh program menggunakan JMenuBar, JPopupMenu, JMenuItem,
JTextArea dan layout Box komponen untuk membuat program editor teks berita.
JMenuBar
Untuk mengimplementasikan menu pada form dapat menggunakan komponen
JMenuBar
Constructor
JMenuBar
()
Membuat Bar Menu.
Contoh Penggunaan :
http://java.sun.com/docs/books/tutorial/uiswing/components/menu.html
JMenu
Untuk menambahkan item pada JMenuBar kita harus menggunakan JMenu, dimana
JMenu juga dapat ditambahkan JmenuItem dan juga Jseparators.
Beberapa
Method
yang harus diketahui
JMenu
add
(JMenu c)
Menambah objek
JMenu
ke
JMenuBar
JMenu
getMenu
(int index)
Mendapat posisi menu yang disesuaikan dengan parameter
index.
int
getMenuCount
()
Mendapatkan jumlah menu.
boolean
isSelected
()
Melakukan pengecekan apakah menu yang dimaksud dalam
posisi terpilih.
void
setSelected
(Component sel)
Constructor
JMenu
()
Membuat
JMenu
tanpa teks.
JMenu
(Action a)
Membuat menu dengan penambahan
Action
.
JMenu
(String s)
Membuat
JMenu
dengan teks.
JMenu
(String s, boolean b)
Membuat
JMenu
dengan teks dan penandaan
tear-off menu
atau tidak.
Beberapa
Method
yang harus diketahui
JMenuItem
add
(Action a)
Membuat menu item dengan penambahan
Action
objek dan menambahkannya pada akhir menu.
Component
add
(Component c)
Menambahkan komponen pada akhir menu.
Component
add
(Component c, int index)
Menambah komponen pada posisi (index) tertentu.
JMenuItem
add
(JMenuItem menuItem)
Menambah
JMenuItem
pada akhir menu.
JMenuItem
add
(String s)
Menambah
JMenuItem
dengan teks dan
menambahnya pada akhir menu.
void
addMenuListener
(MenuListener l)
Menambahkan listener pada menu.
void
addSeparator
()
Menambahkan garis separator pada akhir menu.
Int
getDelay
()
Mendapatkan nilai delay menu
JMenuItem
getItem
(int pos)
Mendapat
JMenuItem
pada posisi tertentu.
int
getItemCount
()
Mendapatkan jumlah
JMenuItem
pada menu termasuk
dengan garis separator.
JMenuItem
insert
(Action a, int pos)
JMenuItem
insert
(JMenuItem mi, int pos)
Menyisipkan
JMenuitem
pada posisi tertentu.
Void
insert
(String s, int pos)
Menyisipkan menu tertentu dengan teks pada posisi
tertentu.
Void
insertSeparator
(int index)
Menyisipkan garis separator pada posisi tertentu.
boolean
isPopupMenuVisible
()
Mendapatkan nilai true atau false mengenai
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
Membuat
JPopupMenu
.
JPopupMenu
(String label)
Membuat
JPopupMenu
dengan title.
Beberapa
Method
yang harus diketahui
JMenuItem
add
(Action a)
Menambahkan
Action
object
.
JMenuItem
add
(JMenuItem menuItem)
Menambahkan
JMenuItem
dan ditempatkan pada
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.
Menampilkan popup menu jika parameter input
adalah true.
void
show
(Component invoker, int x, int y)
Menampilkan popup menu berdasarkan koordinat X
dan Y.
JMenuItem
Memberikan komponen pada Jmenu dan JPopupMenu
Constructor
JMenuItem
()
Membuat
JMenuItem
tanpa teks dan gambar ikon.
JMenuItem
(Action a)
Membuat
JMenuItem
dengan
Action
.
JMenuItem
(Icon icon)
Membuat
JMenuItem
dengan gambar ikon.
JMenuItem
(String text)
Membuat
JMenuItem
dengan teks.
JMenuItem
(String text, Icon icon)
Membuat
JMenuItem
dengan teks dan gambar ikon.
JMenuItem
(String text, int mnemonic)
Membuat
JMenuItem
dengan teks dan shortcut keyboard mnemonic.
Beberapa
Method
yang harus diketahui
void
setEnabled
(boolean b)
Enables or disables the menu item.
Contoh Penggunaan :
http://java.sun.com/docs/books/tutorial/uiswing/components/menu.html
JTextArea
JTextArea berfungsi sebagai teks editor dalam bentuk
multiline
, sedangkan dalam
penggunaannya, untuk mengaktifkan scroll pada JTextArea menggunakan bantuan
JScrollPane.
Constructor
JTextArea
()
Membuat TextArea.
JTextArea
(Document doc)
JPopupMenu(); JMenuItem("Copy"); JMenuItem("Cut"); JMenuItem("Paste");
JPopupMenu
JMenuBar() JMenu(“File”) JMenuItem(“Buka File”) JMenuItem(“Simpan File”) JMenuItem(“Keluar”) JMenu(“Edit”) JMenuItem(“Copy”) JMenuItem(“Cut”) JMenuItem(“Paste”) Jmenu(“Tentang”)Menu Bar
JTextArea
private JTextArea txtArea;
txtArea = new JTextArea(20,15); txtArea.setLineWrap(true);
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)
Komponen 1
Komponen 2
Komponen 3
Gambar 11. Program Editor Berita
Gambar 11, merupakan program yang menerapkan sistem menu, popmenu,
textarea dan box layout.
Menu yang akan tampil pada program tersebut adalah sebagai berikut :
-
File (JMenu
mniFile)
o
Buka File (JMenuItem
mniFileBuka)
o
Simpan File (JMenuItem
mniFileSimpan)
o
Keluar (JMenuItem
mniKeluar)
-
Edit (JMenu
mniEdit)
o
Copy (JMenuItem
mniCopy)
o
Cut (JMenuItem
mniCut)
o
Paste (JMenuItem
mniPaste)
-
Tentang (JMenu
mniTentang)
Menu popup akan tampil apabila JtextArea di –
click
kanan dengan tampilan :
-
Copy (JMenuItem
mniCopy)
-
Cut (JMenuItem
mniCut)
-
Paste (JMenuItem
mniPaste)
Rancangan tampilan menggunakan 2 (dua) panel dan box dengan model
VerticalBox. Yang dimaksud dengan Vertical Box adalah setiap komponen objek
yang ditambahkan pada box berada pada posisi bawah (vertikal).
Gambar 12. VerticalBox
Untuk lebih jelasnya adalah sebagai berikut :
-
panel1, dengan model layout GridLayout(2,2), untuk penempatan lblKategori,
cmbKategori, lblDaerah dan cmbDaerah
-
panel2, dengan model layout GridLayout(3,1), untuk penempatan lblJudul,
txtJudul, dan lblIsi.
-
Box, dengan komponen pertama adalah panel1 dan komponen kedua adalah
panel2
//program ke sepuluh import javax.swing.*; import java.awt.*; import java.awt.event.*; class frame52 extends JFrame {