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