oop - rekayasawebbl.files.wordpress.com · oop: jguijava gui romi satria wahono ... mengembangkan...

51
OOP: OOP: OOP: OOP: J GUI J GUI Java GUI Java GUI Romi Romi Satria Satria Wahono Wahono Romi Romi Satria Satria Wahono Wahono [email protected] [email protected] http //romisatriawahono net http //romisatriawahono net http://romisatriawahono.net http://romisatriawahono.net HP: 0878 HP: 0878- -80480485 80480485 YM YM r mi s r mi s YM: YM: romi_sw romi_sw

Upload: vohuong

Post on 13-Mar-2019

233 views

Category:

Documents


0 download

TRANSCRIPT

OOP:OOP:OOP:OOP:J GUIJ GUIJava GUIJava GUI

RomiRomi SatriaSatria WahonoWahonoRomiRomi SatriaSatria [email protected]@romisatriawahono.nethttp //romisatriawahono nethttp //romisatriawahono nethttp://romisatriawahono.nethttp://romisatriawahono.net

HP: 0878HP: 0878--8048048580480485YM YM r mi sr mi sYM: YM: romi_swromi_sw

Romi Satria WahonoRomi Satria Wahono

Lahir di Madiun, 2 Oktober 1974Lahir di Madiun, 2 Oktober 1974 SD Sompok SD Sompok Semarang (1987)Semarang (1987) SMPN 8SMPN 8 Semarang (1990)Semarang (1990)gg SMA Taruna NusantaraSMA Taruna Nusantara, Magelang (1993), Magelang (1993) S1 S2 dan S3 (onS1 S2 dan S3 (on leave) dari leave) dari Department Department of Computer of Computer S1, S2 dan S3 (onS1, S2 dan S3 (on--leave) dari leave) dari Department Department of Computer of Computer

Sciences, Sciences, Saitama UniversitySaitama University, Japan (1994, Japan (1994--2004)2004)C C t C C t S ft S ft E i iE i i L i L i Core Competence: Core Competence: Software Software EngineeringEngineering, eLearning , eLearning System, Knowledge ManagementSystem, Knowledge Management

ll Founder Founder dandan KoordinatorKoordinator IlmuKomputer.ComIlmuKomputer.Com CEO CEO PT Brainmatics Cipta InformatikaPT Brainmatics Cipta Informatikapp

MateriMateri

1.1. OOP ConceptsOOP Concepts::K p d P di Obj tK p d P di Obj t O i t d O i t d Konsep dan Paradigma ObjectKonsep dan Paradigma Object--Oriented Oriented

2.2. Java FundamentalsJava Fundamentals::Memahami Sintaks dan Grammar Bahasa JavaMemahami Sintaks dan Grammar Bahasa Java

33 Java AdvancedJava Advanced::3.3. Java AdvancedJava Advanced::Eksepsi, Thread, Java APIEksepsi, Thread, Java API

4.4. Java GUIJava GUI::Swing, GUI Component, Event HandlingSwing, GUI Component, Event Handling

5.5. Java GUI with NetbeansJava GUI with Netbeans::Mengembangkan Aplikasi Berbasis GUI dengan JavaMengembangkan Aplikasi Berbasis GUI dengan JavaMengembangkan Aplikasi Berbasis GUI dengan JavaMengembangkan Aplikasi Berbasis GUI dengan Java

J GUIJ GUIJava GUIJava GUI

MateriMateri

1 1 KK G hi l U I t f (GUI) G hi l U I t f (GUI) 1. 1. KonsepKonsep Graphical User Interface (GUI) Graphical User Interface (GUI) didi JavaJavadd

2. 2. KomponenKomponen DasarDasar SwingSwing3. Penanganan Kejadian (Event Handling)3. Penanganan Kejadian (Event Handling)

KonsepKonsep Graphical UserGraphical Userpp ppInterface (GUI) Interface (GUI) didi JavaJava

API untuk Aplikasi GUI di JavaAPI untuk Aplikasi GUI di Java

1. 1. AWTAWT (Abstract Window Toolkit):(Abstract Window Toolkit):Library Library dandan komponenkomponen GUI (java.awt) yang GUI (java.awt) yang pertama kali diperkenalkan oleh Java, Sun pertama kali diperkenalkan oleh Java, Sun tidak tidak

llmerekomendasikanmerekomendasikan lagilagi penggunaanpenggunaan komponenkomponenGUI GUI daridari AWTAWT

22. . Swing or JFC Swing or JFC (Java Foundation Class):(Java Foundation Class):Library Library dandan komponenkomponen GUI (GUI (javax swingjavax swing) ) terbaruterbaruLibrary Library dandan komponenkomponen GUI (GUI (javax.swingjavax.swing) ) terbaruterbarudaridari Java Java dandan yang yang direkomendasikandirekomendasikan Sun Sun untukuntukpemrogramanpemrograman GUI GUI KomponenKomponen Swing Swing sebagiansebagianpemrogramanpemrograman GUI. GUI. KomponenKomponen Swing Swing sebagiansebagianbesarbesar adalahadalah turunanturunan AWT AWT dandan lebihlebih lengkaplengkapdaripadadaripada AWTAWTdaripadadaripada AWTAWT

FiturFitur SwingSwingKK GUI GUI L kL k b tt b tt l tbl tb KomponenKomponen GUI GUI LengkapLengkap: button, : button, listboxlistbox, , comboboxcombobox, , textareatextarea, , dsbdsb

Pluggable LookPluggable Look--andand--FeelFeel: : tampilantampilan GUI GUI dapatdapatdiubahdiubah sesuaisesuai dengandengan kehendakkehendak ((tidaktidak perluperlud ad a aa d gad ga dada dada ppmengikutimengikuti native OS)native OS)

Data Transfer Data Transfer AntarAntar KomponenKomponen: drag and : drag and Data Transfer Data Transfer AntarAntar KomponenKomponen: drag and : drag and drop, copy and pastedrop, copy and pasteI t t l tI t t l t l kl k InternationalizationInternationalization: : prosesproses desaindesain aplikasiaplikasi yang yang memungkinkan aplikasi dijalankan sesuai dengan memungkinkan aplikasi dijalankan sesuai dengan

ff llpreferensipreferensi tanpatanpa rekompilasirekompilasi LocalizationLocalization: : prosesproses translasitranslasi teksteks keke bahasabahasa lokallokala izati na izati n p ep e t an a it an a i tete ee baha abaha a aa

dandan menambahkanmenambahkan komponenkomponen lokallokal

KomponenKomponen SwingSwingKomponenKomponen SwingSwing

KomponenKomponen DasarDasar SwingSwing1. 1. TopTop--Level Container: Level Container: kontainerkontainer dasardasar dimanadimana komponenkomponen

lainnyalainnya diletakkandiletakkan ((JFrameJFrame, , JDialogJDialog dandan AppletApplet))2. 2. Intermediate ContainerIntermediate Container: kontainer perantara dimana : kontainer perantara dimana

komponenkomponen lainnyalainnya diletakkandiletakkanll llll ll ll((JPanelJPanel, , JScrollPaneJScrollPane, , JTabbedPaneJTabbedPane, , JToolbarJToolbar, , JSplitPaneJSplitPane))

3. 3. Atomic ComponentAtomic Component: : komponenkomponen yang yang memilikimemiliki fungsifungsiffspesifikspesifik dandan menerimamenerima interaksiinteraksi langsunglangsung daridari user user

((JJBButtonutton, , JLabelJLabel, , JTextAreaJTextArea, , dsbdsb))4. 4. Layout ManagerLayout Manager: : mengaturmengatur tatatata letakletak dandan posisiposisi

komponenkomponen dalamdalam kontainerkontainer ((BorderLayoutBorderLayout, , BoxLayoutBoxLayout, , ll dd dd ))FlowLayoutFlowLayout, , GridBagLayoutGridBagLayout, , GridLayoutGridLayout))

5. 5. Event HandlingEvent Handling: : menanganimenangani event yang event yang dilakukandilakukan user user kl kkl k k kk k k b dk b d bb ff d bd b((klikklik mousemouse, , ketikketik keyboardkeyboard, , perbesarperbesar frameframe, , dsbdsb))

TopTop--Level ContainerLevel ContainerTopTop--Level ContainerLevel Container

JFrameJFrame, , JDialogJDialog, Applet, Applet

PenggunaanPenggunaan TopTop--Level ContainerLevel Container KomponenKomponen GUI GUI akanakan ditampilkanditampilkan sebagaisebagai bagianbagian daridari

containment hierarchy containment hierarchy ((SusunanSusunan hirarkihirarki komponenkomponencontainment hierarchy containment hierarchy ((SusunanSusunan hirarkihirarki komponenkomponenyang yang menjadikanmenjadikan toptop--level container level container sebagaisebagai rootnyarootnya))

SetiapSetiap komponenkomponen GUI GUI hanyahanya dapatdapat dimuatdimuat padapada satusatu SetiapSetiap komponenkomponen GUI GUI hanyahanya dapatdapat dimuatdimuat padapada satusatutoptop--level container. level container. Dan Dan setiapsetiap toptop--level container level container memilikimemiliki satusatu content pane content pane yang yang berisiberisi komponenkomponen--pp y gy g ppkomponenkomponen GUIGUI

Kita Kita dapatdapat menambahkanmenambahkan menubarmenubar padapada toptop--level level aa dapadapa a a aa a a aa padapada ppcontainercontainer. Menubar secara konvensi ditempatkan di . Menubar secara konvensi ditempatkan di dalamdalam toptop--level container, level container, tapitapi didi luarluar content pane , content pane , pp pp ppkecualikecuali padapada look and feel look and feel MacOSMacOS yang yang memberimemberi kitakitaopsiopsi penempatanpenempatan lebihlebih bebasbebas

Containment HierarchyContainment Hierarchy

AplikasiAplikasi GUI GUI berbasisberbasis Swing paling Swing paling tidaktidak AplikasiAplikasi GUI GUI berbasisberbasis Swing paling Swing paling tidaktidakmemilikimemiliki satusatu containment hierarchy containment hierarchy dengandenganJFrameJFrame sebagaisebagai rootnyarootnyaJFrameJFrame sebagaisebagai rootnyarootnya

JikaJika sebuahsebuah aplikasiaplikasi memilikimemiliki satusatu window window tt dd dd d l d l tt l kl k t b tt b tutamautama dandan duadua dialog dialog artinyaartinya aplikasiaplikasi tersebuttersebut

memilikimemiliki tigatiga containment hierarchy containment hierarchy dandan jugajugal ll ltigatiga toptop--level containerlevel container

SatuSatu containment hierarchy containment hierarchy memilikimemiliki JframeJframeSatuSatu c ntainment hie a chy c ntainment hie a chy memi ikimemi iki Jf ameJf amesebagaisebagai root, root, dandan duadua yang lain yang lain memilikimemilikiJDialogJDialog sebagaisebagai rootrootJDialogJDialog sebagaisebagai rootroot

Content Pane dan Menu BarContent Pane dan Menu Bar1.1. MenambahkanMenambahkan content pane content pane padapada JframeJframe

frame.getContentPaneframe.getContentPane().add(().add(yellowLabelyellowLabel , , gg yyBorderLayout.CENTERBorderLayout.CENTER););

2.2. Menambahkan komponen pada content pane Menambahkan komponen pada content pane JPanelJPanelp p pp p pcontentPanecontentPane = new = new JPanelJPanel(new (new BorderLayoutBorderLayout()); ()); contentPane.setBordercontentPane.setBorder((someBordersomeBorder ); );

t tP ddt tP dd(( C tC t contentPane.addcontentPane.add((someComponentsomeComponent , , BorderLayout.CENTERBorderLayout.CENTER); ); contentPane addcontentPane add((anotherComponentanotherComponent contentPane.addcontentPane.add((anotherComponentanotherComponent , , BorderLayout.PAGE_ENDBorderLayout.PAGE_END); ); frame.setContentPaneframe.setContentPane((contentPanecontentPane););

3.3. Menambahkan menu bar pada Jframe Menambahkan menu bar pada Jframe frame.setJMenuBarframe.setJMenuBar((greenMenuBargreenMenuBar ););a aa a g ag a ;;

Root PaneRoot Pane

SetiapSetiap toptop--level container level container sebenarnyasebenarnya didukungdidukungl hl h tt i t di t t i i t di t t i bb t t oleholeh satusatu intermediate container intermediate container bernamabernama root root

panepane.. Root pane Root pane mengelola content pane, menu mengelola content pane, menu b d b d dd k t ik t i l i (l d l i (l d dd l l bar dan bar dan duadua kontainerkontainer lain (layered pane lain (layered pane dandan glass glass pane)pane)

ll Layered pane Layered pane mengaturmengatur kedalamankedalaman posisiposisikomponenkomponen dengandengan menggunakanmenggunakan nilainilai depth (depth (intint))

Glass pane Glass pane seringsering digunakandigunakan untukuntuk menangkapmenangkapkejadiankejadian atauatau menempatkanmenempatkan gambargambar padapada suatusuatujj pp gg ppwilayahwilayah dimanadimana terdapatterdapat satusatu atauatau banyakbanyakkomponenkomponenpp

JFrameJFrame//1. Create the frame//1. Create the frameJFrame frame = new JFrame("Frame Beraksi");JFrame frame = new JFrame("Frame Beraksi");

//2. Optional: What happens when the frame closes?//2. Optional: What happens when the frame closes?frame setDefaultCloseOperationframe setDefaultCloseOperation((JFrame EXITJFrame EXIT N CLOSE); N CLOSE);frame.setDefaultCloseOperationframe.setDefaultCloseOperation((JFrame.EXITJFrame.EXIT_ N_CLOSE);_ N_CLOSE);

//3. Create components and put them in the frame//3. Create components and put them in the framep pp p//...create //...create emptyLabelemptyLabel......frame.getContentPaneframe.getContentPane().add(().add(emptyLabelemptyLabel , , BorderLayout.CENTERBorderLayout.CENTER););

//4. Size the frame//4. Size the frameframe packframe pack();();frame.packframe.pack();();

//5. Show it//5. Show itframe.setVisibleframe.setVisible(true);(true);

FrameBeraksi.javaFrameBeraksi.javaimport import javax.swingjavax.swing.*;.*;

l ll lpublic class public class FrameBeraksiFrameBeraksi {{public static void main(String[] public static void main(String[] argsargs){){

ffJFrame frame = new JFrame("Frame Beraksi");JFrame frame = new JFrame("Frame Beraksi");frame.setDefaultCloseOperationframe.setDefaultCloseOperation((JFrame.EXIT_ON_CLOSEJFrame.EXIT_ON_CLOSE););

JLabel emptyLabel = new JLabel("Frame Beraksi");JLabel emptyLabel = new JLabel("Frame Beraksi");frame.getContentPaneframe.getContentPane().add(().add(emptyLabelemptyLabel););

frame.setSizeframe.setSize(400,200);(400,200);frame.setVisibleframe.setVisible(true);(true);

}}}}

FrameBeraksi2.javaFrameBeraksi2.javaimport import javax.swingjavax.swing.*;.*;

l ll lpublic class FrameBeraksi2 extends public class FrameBeraksi2 extends JFrameJFrame {{public FrameBeraksi2() {public FrameBeraksi2() {super("Frame super("Frame BeraksiBeraksi 2");2");setSizesetSize(300, 100);(300, 100);setDefaultCloseOperationsetDefaultCloseOperation((JFrame.EXIT_ON_CLOSEJFrame.EXIT_ON_CLOSE); ); setVisiblesetVisible(true);(true);

}}public static void main(String[] arguments) {public static void main(String[] arguments) {

ffFrameBeraksi2 frame= new FrameBeraksi2();FrameBeraksi2 frame= new FrameBeraksi2();}}

}}

FrameBeraksi3.javaFrameBeraksi3.java import import javax.swing.JFramejavax.swing.JFrame;;

bli l F B k i3 t d bli l F B k i3 t d JFJF {{public class FrameBeraksi3 extends public class FrameBeraksi3 extends JFrameJFrame {{public FrameBeraksi3() {public FrameBeraksi3() {

super("Frame super("Frame BeraksiBeraksi 3");3");super( Frame super( Frame BeraksiBeraksi 3 );3 );setBoundssetBounds(400, 300, 10, 10);(400, 300, 10, 10);setVisiblesetVisible(true);(true);setVisiblesetVisible(true);(true);

}}public static void main(String[] arguments) {public static void main(String[] arguments) {p a d ma n(S ng[] a g m n ) {p a d ma n(S ng[] a g m n ) {

FrameBeraksi3 frame = new FrameBeraksi3();FrameBeraksi3 frame = new FrameBeraksi3();for (int i = 10; i < 400; i++) {for (int i = 10; i < 400; i++) {

frame.setBoundsframe.setBounds(400 (400 -- ((ii/2), 300 /2), 300 -- ((ii/2), /2), ii, , ii););}}

}}}}

Atomic ComponentAtomic ComponentAtomic ComponentAtomic Component

FiturFitur Standard Standard JComponentJComponent

Tool TipsTool Tips: : setToolTipTextsetToolTipText()()P t d B dP t d B d tB dtB d () () tC ttC t()() Painting and BordersPainting and Borders: : setBordersetBorder(), (), paintComponentpaintComponent()()

Pluggable Look and FeelPluggable Look and Feel:: UIManager.setLookAndFeelUIManager.setLookAndFeel()() PropertiesProperties: : putClientPropertyputClientProperty(), (), getClientPropertygetClientProperty()() LayoutLayout: : setMinimumSizesetMinimumSize(), (), setMaximumSizesetMaximumSize,, LayoutLayout: : setMinimumSizesetMinimumSize(), (), setMaximumSizesetMaximumSize,,

setAlignmentXsetAlignmentX()() Drag and DropDrag and Drop: component : component setDragEnabledsetDragEnabled(true)(true) Drag and DropDrag and Drop: component .: component .setDragEnabledsetDragEnabled(true)(true) Double BufferingDouble Buffering: : untukuntuk menghaluskanmenghaluskan gambargambar

ll Key BindingsKey Bindings: : untukuntuk mnemonics mnemonics dandan acceleratorsaccelerators

JButtonJButtonimport import javax swingjavax swing **import import javax.swingjavax.swing. ;. ;public class public class ButtonBeraksiButtonBeraksi extends extends JFrameJFrame {{

JButtonJButton load = new load = new JButtonJButton("Load");("Load");adad ad ;ad ;JButtonJButton save = new save = new JButtonJButton("Save");("Save");public public ButtonBeraksiButtonBeraksi() {() {

super("Button super("Button BeraksiBeraksi");");setSizesetSize(140, 170);(140, 170);setDefaultCloseOperationsetDefaultCloseOperation((JFrame EXIT ON CLOSEJFrame EXIT ON CLOSE););setDefaultCloseOperationsetDefaultCloseOperation((JFrame.EXIT_ON_CLOSEJFrame.EXIT_ON_CLOSE););JPanelJPanel pane = new pane = new JPanelJPanel();();pane.addpane.add(load);(load);pppane.addpane.add(save);(save);add(pane);add(pane);

llsetVisiblesetVisible(true);(true);}}public static void main(String[] arguments) {public static void main(String[] arguments) {public static void main(String[] arguments) {public static void main(String[] arguments) {

ButtonBeraksiButtonBeraksi button = new button = new ButtonBeraButtonBera}}

Layout ManagerLayout ManagerLayout ManagerLayout Manager

BorderLayoutBeraksi.javaBorderLayoutBeraksi.javat t * t t * bl d ( [] bl d ( [] ) {) {import java.awt.*; import java.awt.*;

Import Import java.awt.eventjava.awt.event.*;.*;import import javax.swingjavax.swing.*;.*;

bl lbl l d kd k dd

public static void main(String[] public static void main(String[] argsargs) {) {BorderLayoutBeraksiBorderLayoutBeraksi frame = newframe = new

BorderLayoutBeraksiBorderLayoutBeraksi();();public class public class BorderLayoutBeraksiBorderLayoutBeraksi extends extends JFrameJFrame {{JButtonJButton nButtonnButton = new = new JButtonJButton("North");("North");JButtonJButton sButtonsButton = new = new JButtonJButton("South");("South");

BorderLayoutBeraksiBorderLayoutBeraksi();();Frame.setVisibleFrame.setVisible(true);(true);}}

JButtonJButton eButtoneButton = new = new JButtonJButton("East");("East");JButtonJButton wButtonwButton = new = new JButtonJButton("West");("West");JButtonJButton cButtoncButton = new = new JButtonJButton("Center");("Center");

}}

JButtonJButton( Center );( Center );public public BorderLayoutBeraksiBorderLayoutBeraksi() {() {super("Border Layout super("Border Layout BeraksiBeraksi"); "); setSizesetSize(240, 280);(240, 280);

setDefaultCloseOperationsetDefaultCloseOperation((JFrame.EXIT_ON_CLOSJFrame.EXIT_ON_CLOSEE););

setLayoutsetLayout(new (new BorderLayoutBorderLayout());());add(add(nButtonnButton, , BorderLayout.NORTHBorderLayout.NORTH););add(add(sButtonsButton, , BorderLayout.SOUTHBorderLayout.SOUTH););add(add(eButtoneButton, , BorderLayout.EASTBorderLayout.EAST););add(add(wButtonwButton, , BorderLayout.WESTBorderLayout.WEST););add(add(cButtoncButton, , BorderLayout.CENTERBorderLayout.CENTER); }); }

BoxLayoutBeraksi.javaBoxLayoutBeraksi.javat t * t t t * t ** bl d ( [] bl d ( [] ) {) {import java.awt.*; import import java.awt.*; import javax.swingjavax.swing.*;.*;

public class public class BoxLayoutBeraksiBoxLayoutBeraksi extends extends JFrameJFrame {{public public B xLay utBeraksiB xLay utBeraksi() {() {

public static void main(String[] public static void main(String[] argsargs) {) {BoxLayoutBeraksiBoxLayoutBeraksi stst = new= newBoxLayoutBeraksiBoxLayoutBeraksi();();public public BoxLayoutBeraksiBoxLayoutBeraksi() {() {

super("super("BoxLayoutBeraksiBoxLayoutBeraksi"); "); setSizesetSize(430, 150);(430, 150);setDefaultCloseOperationsetDefaultCloseOperation((JFrame.EXIT_ON_CLOSEJFrame.EXIT_ON_CLOSE););JPanelJPanel commandPanecommandPane = new = new JPanelJPanel();();

BoxLayoutBeraksiBoxLayoutBeraksi();();}}

}}JPanelJPanel commandPanecommandPane = new = new JPanelJPanel();();BoxLayoutBoxLayout horizontal = newhorizontal = newBoxLayoutBoxLayout((commandPane,BoxLayout.XcommandPane,BoxLayout.X AXIS);AXIS);commandPane.setLayoutcommandPane.setLayout(horizontal);(horizontal);commandPane.setLayoutcommandPane.setLayout(horizontal);(horizontal);JButtonJButton subscribe = new subscribe = new JButtonJButton("Subscribe");("Subscribe");JButtonJButton unsubscribe = newunsubscribe = newJButtonJButton("Unsubscribe");("Unsubscribe");;;JButtonJButton refresh = new refresh = new JButtonJButton("Refresh");("Refresh");commandPane.addcommandPane.add(subscribe);(subscribe);commandPane.addcommandPane.add(unsubscribe);(unsubscribe);commandPane.addcommandPane.add(refresh);(refresh);add(add(commandPanecommandPane););}}

FlowLayoutBeraksi.javaFlowLayoutBeraksi.javat t * t t * bI tbI t t tt t ** bl t t d (St [] bl t t d (St [] ) {) {import java.awt.*; import java.awt.*; bImportbImport java.awt.eventjava.awt.event.*;.*;

import import javax.swingjavax.swing.*;.*;public class public class FlowLayoutBeraksiFlowLayoutBeraksi extends extends JFrameJFrame {{

l bl b

public static void main(String[] public static void main(String[] argsargs) {) {FlowLayoutBeraksiFlowLayoutBeraksi frame = newframe = newFlowLayoutBeraksiFlowLayoutBeraksi();();

}}JButtonJButton a = new a = new JButtonJButton("Alibi");("Alibi");JButtonJButton b = new b = new JButtonJButton("Burglar");("Burglar");JButtonJButton c = new c = new JButtonJButton("Corpse");("Corpse");

}}}}

JButtonJButton d = new d = new JButtonJButton("Deadbeat");("Deadbeat");JButtonJButton e = new e = new JButtonJButton("Evidence");("Evidence");public static void main(String[] public static void main(String[] argsargs) {) {FlowLayoutBeraksiFlowLayoutBeraksi frame = newframe = newFlowLayoutBeraksiFlowLayoutBeraksi();();JButtonJButton f = new f = new JButtonJButton("Fugitive");("Fugitive");public public FlowLayoutBeraksiFlowLayoutBeraksi() {() {

super("Flow Layout super("Flow Layout BeraksiBeraksi"); "); setSizesetSize(360, 120);(360, 120);setDefaultCloseOperationsetDefaultCloseOperation((JFrame.EXIT_ON_CLOSEJFrame.EXIT_ON_CLOSE););ppFlowLayoutFlowLayout lm = new lm = new FlowLayoutFlowLayout((FlowLayout.LEFTFlowLayout.LEFT); ); setLayoutsetLayout(lm);(lm);add(a); add(b); add(c); add(d);add(a); add(b); add(c); add(d);add(e); add(f);add(e); add(f);setVisiblesetVisible(true);(true);

}}

CardLayoutBeraksi.javaCardLayoutBeraksi.javaimport import javax swingjavax swing * import java awt ** import java awt *import import javax.swingjavax.swing. ; import java.awt. ;. ; import java.awt. ;

class class CardLayoutBeraksiCardLayoutBeraksi{{aa a d ay aa d ay apublic static void main(String[] public static void main(String[] argsargs){){

JFrameJFrame frame = new frame = new JFrameJFrame("Card Layout ("Card Layout BeraksiBeraksi");");JPanelJPanel panel1 = new panel1 = new JPanelJPanel(); (); JPanelJPanel panel2 = new panel2 = new JPanelJPanel();();JButtonJButton button = new button = new JButtonJButton("Button ("Button dalamdalam panel panel keke 1");1");JT JT tAtA t t JT t t JT tAtA ("T t d l l k 2")("T t d l l k 2")JT JT tAtA t t JT t t JT tAtA ( T t d l l k 2 )( T t d l l k 2 )JTextAreaJTextArea text = new text = new JTextAreaJTextArea("Text ("Text dalamdalam panel panel keke 2");2");panel1.add(button); panel2.add(text);panel1.add(button); panel2.add(text);p pp pJTabbedPaneJTabbedPane tab = new tab = new JTabbedPaneJTabbedPane();();tab.addtab.add(panel1, "Tab 1"); (panel1, "Tab 1"); tab.addtab.add(panel2, "Tab 2");(panel2, "Tab 2");ffframe.getContentPaneframe.getContentPane().add(().add(tab,BorderLayout.NORTHtab,BorderLayout.NORTH););frame.setDefaultCloseOperationframe.setDefaultCloseOperation((JFrame.EXIT_ON_CLOSEJFrame.EXIT_ON_CLOSE););frame packframe pack(); (); frame setVisibleframe setVisible(true);(true);frame.packframe.pack(); (); frame.setVisibleframe.setVisible(true);(true);

}}}}

GridLayoutBeraksi.javaGridLayoutBeraksi.javat t * t t t * t t tt t ** G idL tG idL t f il f il import java.awt.*; import import java.awt.*; import java.awt.eventjava.awt.event.*;.*;

import import javax.swingjavax.swing.*;.*;

bl lbl l d kd k dd

GridLayoutGridLayout family = newfamily = newGridLayoutGridLayout(3, 3, 10, 10);(3, 3, 10, 10);

pane.setLayoutpane.setLayout(family);(family);dddd(( ii ) ) dddd( l)( l)public class public class GridLayoutBeraksiGridLayoutBeraksi extends extends JFrameJFrame {{

JButton marcia = new JButton("Marcia");JButton marcia = new JButton("Marcia");JButtonJButton carol = new carol = new JButtonJButton("Carol");("Carol");

pane.addpane.add((marciamarcia); ); pane.addpane.add(carol);(carol);pane.addpane.add((greggreg); ); pane.addpane.add((janjan););pane.addpane.add((alicealice); ); pane.addpane.add(peter);(peter);pane.addpane.add((cindycindy); ); pane.addpane.add(mike);(mike);

dddd(b bb )(b bb )JButtonJButton greggreg = new = new JButtonJButton("Greg");("Greg");JButtonJButton janjan = new = new JButtonJButton("Jan");("Jan");JButtonJButton alicealice = new = new JButtonJButton("Alice");("Alice");

pane.addpane.add(bobby);(bobby);

add(pane);add(pane);setVisiblesetVisible(true);(true);

}}JButtonJButton( Alice );( Alice );JButtonJButton peter = new peter = new JButtonJButton("Peter");("Peter");JButtonJButton cindycindy = new = new JButtonJButton("Cindy");("Cindy");

}}

public static void main(String[] public static void main(String[] argsargs) {) {GridLayoutBeraksiGridLayoutBeraksi frame = newframe = newG idL tB k iG idL tB k i()()JButtonJButton mike = new mike = new JButtonJButton("Mike");("Mike");

JButtonJButton bobby = new bobby = new JButtonJButton("Bobby");("Bobby");

GridLayoutBeraksiGridLayoutBeraksi();();}}

}}

public public GridLayoutBeraksiGridLayoutBeraksi() {() {super(" Grid Layout super(" Grid Layout BeraksiBeraksi ");");setSizesetSize(260, 260);(260, 260);setDefaultCloseOperationsetDefaultCloseOperation((JFrame.EXIT_ON_CLOSEJFrame.EXIT_ON_CLOSE););JPanelJPanel pane = new pane = new JPanelJPanel();();

PenangananPenanganan KejadianKejadiangg jj(Event Handling)(Event Handling)

EventEvent

Event Event adalahadalah kejadiankejadian atauatau peristiwaperistiwa yang yang dilakukandilakukanl hl h t h dt h d i t f i t f kkoleholeh user user terhadapterhadap user interface user interface menggunakanmenggunakan

peralatanperalatan mousemouse dandan keyboardkeyboardff SetiapSetiap objekobjek dapatdapat dinotifikasidinotifikasi jikajika suatusuatu event event

terjaditerjadi sehinggasehingga objekobjek tersebuttersebut dapatdapat memutukanmemutukanhh llapaapa yang yang harusharus dilakukandilakukan untukuntuk menanggapimenanggapi

((menanganimenangani) event ) event tersebuttersebut (event handling)(event handling) Agar Agar suatusuatu objekobjek dapatdapat dinotifikasidinotifikasi tentangtentang suatusuatu

event, event, objekobjek harusharus mendaftarkanmendaftarkan diridiri sebagaisebagai event event jj gglistenerlistener keke sumbersumber ygyg menghasilkanmenghasilkan event, event, dandanmengimplementasikanmengimplementasikan interface listener interface listener ygyg sesuaisesuaig pg p ygyg

ProsesProses PenangananPenanganan EventEvent1. 1. KomponenKomponen harusharus didaftarkandidaftarkan sebagaisebagai pendengarpendengar (listener) dg(listener) dg

menggunakanmenggunakan method method addXXXListeneraddXXXListener() () ggggJButton tombolSelesai = new JButton(“Selesai”); JButton tombolSelesai = new JButton(“Selesai”); tombolSelesai.addActionListenertombolSelesai.addActionListener(this);(this);

2. 2. MengMeng--implementasiimplementasi interface listener interface listener atauatau mengmeng--extends class extends class adapter adapter ((bisabisa jugajuga dengandengan membuatmembuat inner class)inner class)1 l 1 l H llH ll l l {}{}1. class 1. class HelloGUIHelloGUI implements implements MouseListenerMouseListener{}{}2. class 2. class HelloGUIHelloGUI extends extends MouseAdapterMouseAdapter{} {} atauatauclass class HelloGUIHelloGUI extends extends JFrameJFrame{ class handler extends { class handler extends MouseAdapterMouseAdapter{}}{}}class class HelloGUIHelloGUI extends extends JFrameJFrame{ class handler extends { class handler extends MouseAdapterMouseAdapter{}}{}}

3. 3. MenuliskanMenuliskan code code penanganpenangan kejadiankejadian padapada method class handler method class handler extendsextendsextendsextendsMouseAdapterMouseAdapter{ {

public void public void mouseClickedmouseClicked((MouseEventMouseEvent e){e){//code //code penanganpenangan kejadiankejadian }}}}

Listener (Listener (SemuaSemua KomponenKomponen Swing)Swing)ListenerListener DeskripsiDeskripsi

ComponentListenerComponentListener MendengarkanMendengarkan perubahanperubahan size, position, size, position, atauatau visibilityvisibility

daridari komponenkomponendaridari komponenkomponen

FocusListenerFocusListener MendengarkanMendengarkan ketikaketika komponenkomponen mendapatkanmendapatkan atauatau

kehilangankehilangan fokusfokus keyboardkeyboardgg

KeyListenerKeyListener Mendengarkan penekanan tombol keyboard (hanyaMendengarkan penekanan tombol keyboard (hanya

untukuntuk komponenkomponen yang yang mendapatmendapat fokusfokus keyboard)keyboard)

MouseListenerMouseListener MendengarkanMendengarkan penekananpenekanan mouse, mouse, klikklik mouse,mouse,

pelepasanpelepasan mouse, mouse, dandan pergerakanpergerakan mousemouse

MouseMotionListenerMouseMotionListener Mendengarkan perubahan posisi kursor mouse padaMendengarkan perubahan posisi kursor mouse padaMouseMotionListenerMouseMotionListener Mendengarkan perubahan posisi kursor mouse padaMendengarkan perubahan posisi kursor mouse pada

komponenkomponen

MouseWheelListenerMouseWheelListener Mendengarkan pergerakan roda mouse padaMendengarkan pergerakan roda mouse pada

komponenkomponen

HierarchyListenerHierarchyListener Mendengarkan perubahan hirarki komponen karenaMendengarkan perubahan hirarki komponen karena

kejadiankejadian yangyang berubahberubahkejadiankejadian yang yang berubahberubah

HierarchyBoundListenerHierarchyBoundListener Mendengarkan perubahan hirarki komponen karenaMendengarkan perubahan hirarki komponen karena

kejadian pergerakan dan perubahan ukurankejadian pergerakan dan perubahan ukuran

Listener API Table Listener API Table --11--AdAd h dh d D kD kListener or AdapterListener or Adapter Listener MethodListener Method DeskripsiDeskripsi

ActionListenerActionListener actionPerformedactionPerformed((ActionEventActionEvent))

AncestorListenerAncestorListener ancestorAddedancestorAdded((AncestorEventAncestorEvent))

ancestorMovedancestorMoved((AncestorEventAncestorEvent))

ancestorRemovedancestorRemoved((AncestorEventAncestorEvent))

CaretListenerCaretListener caretUpdatecaretUpdate((CaretEventCaretEvent))

CellEditorListenerCellEditorListener editingStoppededitingStopped((ChangeEventChangeEvent))

editingCancelededitingCanceled((ChangeEventChangeEvent))

ChangeListenerChangeListener stateChangedstateChanged((ChangeEventChangeEvent))

ComponentListenerComponentListener

ComponentAdapterComponentAdapter

componentHiddencomponentHidden((ComponentEventComponentEvent))

componentMovedcomponentMoved((ComponentEventComponentEvent))ComponentAdapterComponentAdapter componentMovedcomponentMoved((ComponentEventComponentEvent))

componentResizedcomponentResized((ComponentEventComponentEvent))

componentShowncomponentShown((ComponentEventComponentEvent

ContainerListenerContainerListener componentAddedcomponentAdded((ContainerEventContainerEvent))

ContainerAdapterContainerAdapter

pp (( ))

componentRemovedcomponentRemoved((ContainerEventContainerEvent))

DocumentListenerDocumentListener changedUpdatechangedUpdate((DocumentEventDocumentEvent))

insertUpdateinsertUpdate((DocumentEventDocumentEvent))pp

removeUpdateremoveUpdate((DocumentEventDocumentEvent))

ExceptionListenerExceptionListener exceptionThrownexceptionThrown(Exception)(Exception)

Listener API Table Listener API Table --22--Listener or AdapterListener or Adapter Listener MethodListener Method DeskripsiDeskripsiListener or AdapterListener or Adapter Listener MethodListener Method DeskripsiDeskripsi

FocusListenerFocusListener

FocusAdapterFocusAdapter

focusGainedfocusGained((FocusEventFocusEvent))

focusLostfocusLost((FocusEventFocusEvent))

(( ))HierarchyBoundsListenerHierarchyBoundsListener

HierarchyBoundsAdapterHierarchyBoundsAdapter

ancestorMovedancestorMoved((HierarchyEventHierarchyEvent))

ancestorResizedancestorResized((HierarchyEventHierarchyEvent))

HierarchyListenerHierarchyListener hierarchyChangedhierarchyChanged((HierarchyEventHierarchyEvent))

HyperlinkListenerHyperlinkListener hyperlinkUpdatehyperlinkUpdate((HyperlinkEventHyperlinkEvent))

InputMethodListenerInputMethodListener caretPositionChangedcaretPositionChanged((InputMethodEventInputMethodEvent))

inputMethodTextChangedinputMethodTextChanged((InputMethodEventInputMethodEvent))inputMethodTextChangedinputMethodTextChanged((InputMethodEventInputMethodEvent))

InternalFrameListenerInternalFrameListener

InternalFrameAdapterInternalFrameAdapter

internalFrameActivatedinternalFrameActivated((InternalFrameEventInternalFrameEvent))

internalFrameClosedinternalFrameClosed((InternalFrameEventInternalFrameEvent))

lF CllF Cl ((I lF EI lF E ))internalFrameClosinginternalFrameClosing((InternalFrameEventInternalFrameEvent))

internalFrameDeactivatedinternalFrameDeactivated((InternalFrameEventInternalFrameEvent))

internalFrameDeiconifiedinternalFrameDeiconified((InternalFrameEventInternalFrameEvent))

i t lF I ifi di t lF I ifi d((I t lF E tI t lF E t))internalFrameIconifiedinternalFrameIconified((InternalFrameEventInternalFrameEvent))

internalFrameOpenedinternalFrameOpened((InternalFrameEventInternalFrameEvent))

ItemListenerItemListener itemStateChangeditemStateChanged((ItemEventItemEvent))

KeyListenerKeyListener

KeyAdapterKeyAdapter

keyPressedkeyPressed((KeyEventKeyEvent))

keyReleasedkeyReleased((KeyEventKeyEvent))

keyTypedkeyTyped((KeyEventKeyEvent

Listener API Table Listener API Table --33--AdAd h dh d D kD kListener or AdapterListener or Adapter Listener MethodListener Method DeskripsiDeskripsi

ListDataListenerListDataListener contentsChangedcontentsChanged((ListDataEventListDataEvent))

intervalAddedintervalAdded((ListDataEventListDataEvent))

i t lR di t lR d((Li tD t E tLi tD t E t))intervalRemovedintervalRemoved((ListDataEventListDataEvent))

ListSelectionListenerListSelectionListener valueChangedvalueChanged((ListSelectionEventListSelectionEvent))

MenuDragMouseListenerMenuDragMouseListener menuDragMouseDraggedmenuDragMouseDragged((MenuDragMouseEventMenuDragMouseEvent))

menuDragMouseEnteredmenuDragMouseEntered((MenuDragMouseEventMenuDragMouseEvent))

menuDragMouseExitedmenuDragMouseExited((MenuDragMouseEventMenuDragMouseEvent))

menuDragMouseReleasedmenuDragMouseReleased((MenuDragMouseEventMenuDragMouseEvent))

MenuKeyListenerMenuKeyListener menuKeyPressedmenuKeyPressed((MenuKeyEventMenuKeyEvent))

menuKeyReleasedmenuKeyReleased((MenuKeyEventMenuKeyEvent))

menuKeyTypedmenuKeyTyped((MenuKeyEventMenuKeyEvent))

MenuListenerMenuListener menuCanceledmenuCanceled((MenuEventMenuEvent))

menuDeselectedmenuDeselected((MenuEventMenuEvent))

menuSelectedmenuSelected((MenuEventMenuEvent))

M I LiM I Li Cli k dCli k d((M EM E ))MouseInputListenerMouseInputListener

MouseInputAdapterMouseInputAdapter

mouseClickedmouseClicked((MouseEventMouseEvent))

mouseEnteredmouseEntered((MouseEventMouseEvent))

mouseExitedmouseExited((MouseEventMouseEvent))

mousePressedmousePressed((MouseEventMouseEvent))(( ))

mouseReleasedmouseReleased((MouseEventMouseEvent))

mouseDraggedmouseDragged((MouseEventMouseEvent))

mouseMovedmouseMoved((MouseEventMouseEvent))

Listener API Table Listener API Table --44--Listener or AdapterListener or Adapter Listener MethodListener Method DeskripsiDeskripsi

MouseListenerMouseListener mouseClickedmouseClicked((MouseEventMouseEvent))

mouseEnteredmouseEntered((MouseEventMouseEvent))

mouseExitedmouseExited((MouseEventMouseEvent))

mousePressedmousePressed((MouseEventMouseEvent))

mouseReleasedmouseReleased((MouseEventMouseEvent))

MouseMotionListenerMouseMotionListener

MouseMotionAdapterMouseMotionAdapter,,

mouseDraggedmouseDragged((MouseEventMouseEvent))

mouseMovedmouseMoved((MouseEventMouseEvent))pp

MouseInputAdapterMouseInputAdapter

(( ))

MouseWheelListenerMouseWheelListener

MouseAdapterMouseAdapter

popupMenuCanceledpopupMenuCanceled((PopupMenuEventPopupMenuEvent))

popupMenuWillBecomeInvisiblepopupMenuWillBecomeInvisible((PopupMenuEventPopupMenuEvent))MouseAdapterMouseAdapter popupMenuWillBecomeInvisiblepopupMenuWillBecomeInvisible((PopupMenuEventPopupMenuEvent))

popupMenuWillBecomeVisiblepopupMenuWillBecomeVisible((PopupMenuEventPopupMenuEvent))

PropertyChangeListenerPropertyChangeListener propertyChangepropertyChange((PropertyChangeEventPropertyChangeEvent))

TableColumnModelListenerTableColumnModelListener columnAddedcolumnAdded((TableColumnModelEventTableColumnModelEvent))

columnMovedcolumnMoved((TableColumnModelEventTableColumnModelEvent))

columnRemovedcolumnRemoved((TableColumnModelEventTableColumnModelEvent))

columnMarginChangedcolumnMarginChanged((ChangeEventChangeEvent))

columnSelectionChangedcolumnSelectionChanged((ListSelectionEventListSelectionEvent))

TableModelListenerTableModelListener tableChangedtableChanged((TableModelEventTableModelEvent))

Listener API Table Listener API Table --55--Listener or Adapter Listener Method DeskripsiL ste e o dapte L ste e et od Des ps

TreeExpansionListener treeCollapsed(TreeExpansionEvent)

treeExpanded(TreeExpansionEvent)

TreeModelListener treeNodesChanged(TreeModelEvent)TreeModelListener treeNodesChanged(TreeModelEvent)

treeNodesInserted(TreeModelEvent)

treeNodesRemoved(TreeModelEvent)

treeStructureChanged(TreeModelEvent)

TreeSelectionListener valueChanged(TreeSelectionEvent)

TreeWillExpandListener treeWillCollapse(TreeExpansionEvent)

treeWillExpand(TreeExpansionEvent)

UndoableEditListener undoableEditHappened(UndoableEditEvent)

VetoableChangeListener vetoableChange(PropertyChangeEvent)

WindowFocusListener windowGainedFocus(WindowEvent)

WindowAdapter

( )

windowLostFocus(WindowEvent)

WindowListener

WindowAdapter

windowActivated(WindowEvent)

windowClosed(WindowEvent)

d Cl (W d )windowClosing(WindowEvent)

windowDeactivated(WindowEvent)

windowDeiconified(WindowEvent)

windowIconified(WindowEvent)

windowOpened(WindowEvent)

WindowStateListener

WindowAdapter

windowStateChanged(WindowEvent)

Referensi Referensi --11--

Sharon Zakhour et al, Sharon Zakhour et al, The Java Tutorial Fourth The Java Tutorial Fourth EditionEdition http //java sun com/docs/books/tutorial http //java sun com/docs/books/tutorialEditionEdition, http://java.sun.com/docs/books/tutorial, http://java.sun.com/docs/books/tutorial

Deitel & Deitel, Deitel & Deitel, Java How to ProgramJava How to Program Sixth EditionSixth Edition, , P t H ll 2004P t H ll 2004Prentice Hall, 2004Prentice Hall, 2004

Kathy Sierra & Bert Bates, Kathy Sierra & Bert Bates, Head First Java 2nd Head First Java 2nd EditionEdition, O’Reilly, 2005, O’Reilly, 2005

Rogers Cadenhead & Laura Lemay, Rogers Cadenhead & Laura Lemay, Teach Yourself Teach Yourself g d d y,g d d y,Java 6 in 21 DaysJava 6 in 21 Days, Sams Publishing, 2007, Sams Publishing, 2007

Robert Robert LaforeLafore Data Structures and Algorithms in Data Structures and Algorithms in Robert Robert LaforeLafore, , Data Structures and Algorithms in Data Structures and Algorithms in Java Second EditionJava Second Edition, , SamsSams Publishing, 2003 Publishing, 2003

Referensi Referensi --22--

Tim Pengembang JENI, Tim Pengembang JENI, JENI 1JENI 1--66, Depdiknas, , Depdiknas, 2007200720072007

Abdul Kadir, Abdul Kadir, Dasar Pemrograman Java 2Dasar Pemrograman Java 2, Penerbit , Penerbit A d 2004A d 2004Andi, 2004Andi, 2004

Indrajani dan Martin, Indrajani dan Martin, Pemrograman Berbasis Objek Pemrograman Berbasis Objek dengan Javadengan Java, Elex Media Komputindo, 2007, Elex Media Komputindo, 2007

LN LN HarnaningrumHarnaningrum, , AlgoritmaAlgoritma dandan PemrogramanPemrogramangg ,, gg dd ggJavaJava, , GrahaGraha IlmuIlmu, 2009, 2009

RachmadRachmad Hakim & Hakim & SutartoSutarto Mastering JavaMastering Java ElexElex RachmadRachmad Hakim & Hakim & SutartoSutarto, , Mastering JavaMastering Java, , ElexElexMedia Media KomputindoKomputindo, 2009, 2009