12-Java GUI PDF
12-Java GUI PDF
Oleh : Agus Priyanto, M.Kom
Pl
Pluggable
bl LLook-and-Feel
k dF l tampilan GUI dapat
diubah sesuai dengan kehendak (tidak perlu
mengikuti native sistem operasi)
Data Transfer Antar Komponen drag and
d
drop, copy and
d paste
t
I t
Internationalization
ti li ti proses desain
d i aplikasi
lik i yang
memungkinkan aplikasi dijalankan sesuai dengan
preferensi tanpa rekompilasi
//2. Optional:
p What happens
pp when the frame closes?
frame.setDefaultCloseOperation(JFrame.EXIT_
N_CLOSE);
//3. Create components and put them in the frame
// create emptyLabel...
//...create emptyLabel
frame.getContentPane().add(emptyLabel ,
BorderLayout.CENTER);
y )
//5. Show it
frame.setVisible(true);
public class FrameBeraksi { FrameBeraksi1.java
public static void main(String[]
p ( g[] args){
g ){
JFrame frame = new JFrame("Frame Beraksi");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400,200);
frame.setVisible(true);
}
}
import javax.swing.*; FrameBeraksi2.java
Menu
2 3 Atomic
2.3 A i Component
C
Atomic
Component
Atomic
Component
Fitur Standard JComponent
J p
Tool Tips: setToolTipText()
Properties:
p putClientProperty(),
p p y(), ggetClientProperty()
p y()
Layout: setMinimumSize(), setMaximumSize,
setAlignmentX()
Keyy Bindings:
g untuk mnemonics dan accelerators
JButton
public class ButtonBeraksi extends JFrame { ButtonBeraksi.java
JJButton load = new JJButton("Load");
( );
JButton save = new JButton("Save");
public ButtonBeraksi() {
p (
super("Button Beraksi");
)
setSize(140, 170);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel pane = new JPanel();
pane.add(load);
pane.add(save);
add(pane);
setVisible(true);
}
public static void main(String[] arguments) {
B
ButtonBeraksi
B k i button
b = new ButtonBeraksi
B B ki
}
Choice with ComboBox,
ComboBox CheckBox,
CheckBox
RadioButton
Choice with ComboBox, CheckBox,
RadioButton
2 4 Layout
2.4 L Manager
M
Layout
y Manager
g
Ada beberapa jenis Layout Manager, yaitu :
1. Border Layout
2
2. Flow Layout
3. Grid Layout
4
4. Grid Bag Layout
5. Box Layout
6. Card Layout
public class BorderLayoutBeraksi extends JFrame {
JButton nButton = new JButton(
JButton("North");
North );
JButton sButton = new JButton("South");
JButton eButton = new JButton("East");
JButton wButton = new JButton(
JButton("West");
West );
JButton cButton = new JButton("Center");
JButton( Center );
ppublic BorderLayoutBeraksi()
y () {
super("Border Layout Beraksi"); setSize(240, 280);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
add(nButton, BorderLayout.NORTH);
add(sButton, BorderLayout.SOUTH);
add(eButton, BorderLayout.EAST);
add(wButton, BorderLayout.WEST); public
bli static
t ti void
id main(String[]
i (St i [] args)) {
add(cButton, BorderLayout.CENTER); } BorderLayoutBeraksi frame = new
BorderLayoutBeraksi();
BorderLayoutBeraksi.java Frame setVisible(true);
Frame.setVisible(true);
}
}
Border
Layout
public class FlowLayoutBeraksi extends JFrame {
JButton a = new JButton(
JButton("Alibi");
Alibi );
JButton b = new JButton("Burglar");
JButton c = new JButton("Corpse");
JButton d = new JButton(
JButton("Deadbeat");
Deadbeat );
JButton e = new JButton("Evidence");
public static void main(String[] args) {
y
FlowLayoutBeraksi frame = new
FlowLayoutBeraksi();
JButton f = new JButton("Fugitive");
public FlowLayoutBeraksi() {
super("Flow Layout Beraksi"); setSize(360, 120);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
FlowLayout lm = new FlowLayout(FlowLayout.LEFT);
setLayout(lm);
add(a); add(b); add(c); add(d);
add(e); add(f); public static void main(String[] args) {
setVisible(true); FlowLayoutBeraksi frame = new
FlowLayoutBeraksi();
}
FlowLayoutBeraksi.java }
}
public class GridLayoutBeraksi extends JFrame { GridLayout
G idL t family
f il = new
JButton marcia = new JButton("Marcia"); GridLayout(3, 3, 10, 10);
JButton carol = new JButton("Carol");
JButton greg = new JButton("Greg"); pane.setLayout(family);
pane.add(marcia);
dd( i ) pane.add(carol);
dd( l)
JButton jan = new JButton("Jan");
pane.add(greg); pane.add(jan);
JButton alice = new JButton("Alice"); pane.add(alice); pane.add(peter);
JButton( Alice ); pane.add(cindy); pane.add(mike);
JB tt n peter
JButton eter = new
ne JButton(
JB tt n("Peter");
Peter ); pane.add(bobby);
ane add(b bb );
JButton cindy = new JButton("Cindy");
JButton mike = new JButton("Mike"); add(pane);
setVisible(true);
JJButton bobbyy = new JJButton("Bobby");
( y)
}
GridLayoutBeraksi.java
GridLayout
BorderLayout
y + GridLayout
y
GridBagLayout
public class BoxLayoutBeraksi extends JFrame { public
bli static
t ti void
id main(String[]
i (St i [] args)) {
public BoxLayoutBeraksi() { BoxLayoutBeraksi st = new
super("BoxLayoutBeraksi"); setSize(430, 150); BoxLayoutBeraksi();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
}
JPanel commandPane = new JPanel();
BoxLayout horizontal = new
BoxLayout(commandPane,BoxLayout.X AXIS);
c mmandPane setLa t(h ri ntal);
commandPane.setLayout(horizontal);
JButton subscribe = new JButton("Subscribe");
JButton unsubscribe = new
J
JButton("Unsubscribe");
( )
JButton refresh = new JButton("Refresh");
commandPane.add(subscribe);
commandPane.add(unsubscribe);
commandPane.add(refresh);
dP dd( f h)
add(commandPane);
}
BoxLayoutBeraksi.java
class CardLayoutBeraksi{
public static void main(String[] args){
JFrame frame = new JFrame(JFrame("CardCard Layout Beraksi
Beraksi");
);
JPanel panel1 = new JPanel(); JPanel panel2 = new JPanel();
JButton button = new JButton("Button dalam panel ke 1");
JJT tA t t JJT tA (("T t d l l k 2"))
JTextArea text = new JTextArea("Text dalam panel ke 2");
panel1.add(button); panel2.add(text);
JTabbedPane tab = new JTabbedPane();
tab.add(panel1, "Tab 1"); tab.add(panel2, "Tab 2");
frame.getContentPane().add(tab,BorderLayout.NORTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack(); frame.setVisible(true);
}
}
CardLayoutBeraksi.java
3. Penanganan Kejadian
(Event Handling)
Event
Event adalah kejadian atau peristiwa yang dilakukan
oleh user terhadap user interface menggunakan
peralatan mouse dan keyboard
MouseAdapter{
public void mouseClicked(MouseEvent e){
//code penangan kejadian
}
}
Li
Listener Y
Yang Sering
S i Digunakan
Di k
Kategori Interface Method
Action
ListenerActionListener
Yang Banyak Dipakai
actionPerformed(ActionEvent)
Item ItemListener itemStateChanged(ItemEvent)
Mouse MouseListener mouseClicked(MouseEvent)
mouseEntered(MouseEvent)
Listener mouseExited(MouseEvent)
yang sering mousePressed(MouseEvent)
digunakan
mouseReleased(MouseEvent)
( )
Mouse Motion MouseMotionListener mouseDragged(MouseEvent)
mouseMoved(MouseEvent)
Key KeyListener keyPressed(KeyEvent)
keyReleased(KeyEvent)
keyTyped(KeyEvent
Focus FocusListener focusGained(FocusEvent)
focusLost(FocusEvent)
Window WindowListener windowClosing(Windowevent)
windowOpened(Windowevent)
windowActived(Windowevent)
windowDeactived(Windowevent)
Daftar Listener Lengkap
g p
Li
Listener D ki i
Deskripsi
AncestorListener ancestorAdded(AncestorEvent)
ancestorMoved(AncestorEvent)
ancestorRemoved(AncestorEvent)
CaretListener caretUpdate(CaretEvent)
CellEditorListener editingStopped(ChangeEvent)
editingCanceled(ChangeEvent)
ChangeListener stateChanged(ChangeEvent)
ComponentListener componentHidden(ComponentEvent)
ComponentAdapter
p p componentMoved(ComponentEvent)
p ( p )
componentResized(ComponentEvent)
componentShown(ComponentEvent
ContainerListener componentAdded(ContainerEvent)
C ntainerAda ter
ContainerAdapter c m nentRem ed(C ntainerE ent)
componentRemoved(ContainerEvent)
DocumentListener changedUpdate(DocumentEvent)
insertUpdate(DocumentEvent)
removeUpdate(DocumentEvent)
Listener API Table -2-
Listener or Adapter Listener Method Deskripsi
FocusListener focusGained(FocusEvent)
FocusAdapter focusLost(FocusEvent)
HierarchyBoundsListener ancestorMoved(HierarchyEvent)
HierarchyBoundsAdapter ancestorResized(HierarchyEvent)
HierarchyListener hierarchyChanged(HierarchyEvent)
HyperlinkListener hyperlinkUpdate(HyperlinkEvent)
InputMethodListener caretPositionChanged(InputMethodEvent)
inputMethodTextChanged(InputMethodEvent)
IInternalFrameListener
lF Li iinternalFrameActivated(InternalFrameEvent)
lF A i d(I lF E )
InternalFrameAdapter internalFrameClosed(InternalFrameEvent)
internalFrameClosing(InternalFrameEvent)
internalFrameDeactivated(InternalFrameEvent)
i
internalFrameDeiconified(InternalFrameEvent)
lF D i ifi d(I lF E )
internalFrameIconified(InternalFrameEvent)
internalFrameOpened(InternalFrameEvent)
ItemListener itemStateChanged(ItemEvent)
g ( )
KeyListener keyPressed(KeyEvent)
KeyAdapter keyReleased(KeyEvent)
keyTyped(KeyEvent
Li
Listener API T
Table
bl -3-
3
Listener or Adapter Listener Method Deskripsi
ListDataListener contentsChanged(ListDataEvent)
intervalAdded(ListDataEvent)
intervalRemoved(ListDataEvent)
ListSelectionListener valueChanged(ListSelectionEvent)
al eChanged(ListSelectionE ent)
MenuDragMouseList menuDragMouseDragged(MenuDragMouseEvent)
ener menuDragMouseEntered(MenuDragMouseEvent)
menuDragMouseExited(MenuDragMouseEvent)
D M E it d(M D M E t)
menuDragMouseReleased(MenuDragMouseEvent)
MenuKeyListener menuKeyPressed(MenuKeyEvent)
menuKeyReleased(MenuKeyEvent)
( )
menuKeyTyped(MenuKeyEvent)
MenuListener menuCanceled(MenuEvent)
menuDeselected(MenuEvent)
menuSelected(MenuEvent)
Listener API Table -4-
Listener or Adapter Listener Method Deskripsi
MouseListener mouseClicked(MouseEvent)
mouseEntered(MouseEvent)
mouseExited(MouseEvent)
mousePressed(MouseEvent)
mouseReleased(MouseEvent)
MouseMotionListener mouseDragged(MouseEvent)
MouseMotionAdapter, mouseMoved(MouseEvent)
MouseInputAdapter
p p
MouseWheelListener popupMenuCanceled(PopupMenuEvent)
MouseAdapter popupMenuWillBecomeInvisible(PopupMenuEvent)
popupMenuWillBecomeVisible(PopupMenuEvent)
PropertyChangeListener propertyChange(PropertyChangeEvent)
TableColumnModelListener columnAdded(TableColumnModelEvent)
columnMoved(TableColumnModelEvent)
columnRemoved(TableColumnModelEvent)
columnMarginChanged(ChangeEvent)
columnSelectionChanged(ListSelectionEvent)
TableModelListener tableChanged(TableModelEvent)
Membangun
g Aplikasi
p GUI
dengan Netbeans
The Palette
The Design Area
The Source Editor
The Property Editor
The Inspector
4. Studi Kasus Membangun
A lik i GUI
Aplikasi
Studi Kasus Aplikasi
p GUI
1. Aplikasi Konversi Suhu
4. Aplikasi
p Biodata Mahasiswa
Aplikasi
p Konversi Suhu
JTextField1: Kosongi
JLabel1: Celcius
JLabel2: Fahrenheit
JButton1: Convert
5. Mengubah
g Nama Variable dari
Setiap GUI Component (Change
Variable Name)
JTextField1: celciusTextField
JLabel1: celciusLabel
JLabel2: fahrenheitLabel
JButton1: convertButton
6. Rapikan Tampilan Frame
Program Kita (Potong Yang Tidak
P l )
Perlu)
7. Buat Event untuk Convert
Button
panggil method
class dan method baru
Aplikasi Penentu Nilai Mahasiswa
Fitur Tambahan:
1. Error dialog muncul ketika
input nilai bukan numerik, nilai
tidak antara 0-100, atau isian
kosong
2. Konfirmasi ketika keluar
aplikasi
Aplikasi Biodata Organisasi
if(yaTebal.getText().equals(
if(yaTebal getText() equals(“Ya”)){
Ya )){
hasilTextArea.setFont(tebal);
}else{
hasilTextArea.setFont(tipis);
}
Sistem ATM
• Kembangkan aplikasi Bank yang
sudah pernah kita bangun
bangun, menjadi
Sistem ATM yg berbasis ke GUI
• Gunakan class Bank.java sebagai
class
l controll yg membantu
b proses
melihat saldo, mengambil uang dan
menyimpan
y p uangg
• Gunakan perpindahan frame untuk
MenuLogin dan MenuUtama
• Gunakan
G k dialogdi l
(JOptionPane.showInputDialog)
untuk mengambil data pada
Menyimpan Uang dan Mengambil
Uang
Konversi Kurs Mata Uang
Konversi Kurs Mata Uang
Lengkap
1 USD = 13800 RP 1 EUR = 12737 RP 1 JPY = 99 RP
Text to Speech
• Searching di Google dengan
keyword “Free
Free TTS jar”
jar
• Download library dan
masukkan freetts.jar ke
dalam direktori libraries
dengan klik kanan add
jar/folder
• Buat user interface design,
dan buat event pada tombol
S k Text
Speak T yang berisi
b i i logic
l i
code untuk mengeluarkan
suara dari text ((hanya
y pperlu
4 baris code)
Tugas
g Terstruktur
1. Buat program apapun berbasis GUI, yang UNIK !
2 Gunakan
2. G k apapun yang ada d baik
b ik library,
lib third
thi d party
t
GUI
3 Buat laporan dalam bentuk ppt,
3. ppt dan sajikan di mana
letak UNIKnya ☺
gg ((24-05-2016))
4. Deadline: 1 minggu
5. Kirimkan melalui email ke
[email protected] dengan subject:
[TTS_OOP] NAMA - NIM