OOP: J Java GUI Romi Satria Wahono [email protected] http //romisatriawahono net http://romisatriawahono.net HP: 08780878-80480485 YM: YM romi_sw r mi s Romi Satria Wahono Lahir di Madiun, 2 Oktober 1974 SD Sompok Semarang (1987) SMPN 8 Semarang g (1990) SMA Taruna Nusantara, Nusantara, Magelang (1993) S1, S1 S2 dan S3 (on (on--leave) dari Department of Computer Sciences, Saitama University, University, Japan (1994(1994-2004) Core C C Competence: t Software S ft E i Engineering, Engineering i , eLearning L i System, Knowledge Management Founder dan Koordinator IlmuKomputer.Com l CEO PT Brainmatics Cipta p Informatika Materi 1. OOP Concepts: Concepts: 2. Java Fundamentals: Fundamentals: 3 3. Java Advanced: Advanced: 4. Java GUI: GUI: 5. Java GUI with Netbeans: Netbeans: K Konsep p dan d P Paradigma di Object ObjectObj t-Oriented Oi t d Memahami Sintaks dan Grammar Bahasa Java Eksepsi, Thread, Java API Swing, GUI Component, Event Handling Mengembangkan Aplikasi Berbasis GUI dengan Java J Java GUI Materi 1. 1 Konsep K G hi l User Graphical U Interface I t f (GUI) di Java d 2. Komponen Dasar Swing 3. Penanganan Kejadian (Event Handling) Konsep p Graphical p User Interface (GUI) di Java API untuk Aplikasi GUI di Java 1. AWT (Abstract Window Toolkit): Library dan komponen GUI (java.awt) yang pertama kali diperkenalkan oleh Java, Sun tidak merekomendasikan lagi l penggunaan komponen GUI dari AWT 2. Swing or JFC (Java Foundation Class): Library dan komponen GUI (javax.swing ((javax javax.swing) javax swing) swing) terbaru dari Java dan yang direkomendasikan Sun untuk pemrograman GUI. GUI Komponen Swing sebagian besar adalah turunan AWT dan lebih lengkap daripada AWT Fitur Swing K Komponen GUI Lengkap L k : button, b tt l tb , listbox, listbox combobox,, textarea, combobox textarea, dsb Pluggable Look Look--andand-Feel: Feel: tampilan GUI dapat diubah d a sesuai a d dengan ga kehendak da (tidak da pperlu mengikuti native OS) Data Transfer Antar Komponen: drag and drop, copy and paste I t Internationalization t l t : proses desain aplikasi l k yang memungkinkan aplikasi dijalankan sesuai dengan preferensi f tanpa rekompilasi l Localization a izati n: pproses e translasi t an a i te teks kee baha bahasaa lokal a dan menambahkan komponen lokal Komponen Swing Komponen Dasar Swing 1. Top Top--Level Container: kontainer dasar dimana komponen lainnya diletakkan (JFrame JFrame,, JDialog dan Applet Applet)) 2. Intermediate Container: Container: kontainer perantara dimana komponen lainnya diletakkan (JPanel, JPanell, JScrollPane JScrollPane, ll , JTabbedPane JTabbedPane,, JToolbar JToolbar, l , JSplitPane JSplitPane) l ) 3. Atomic Component: Component: komponen yang memiliki fungsi spesifik f dan menerima interaksi langsung dari user (JButton utton,, JLabel JLabel,, JTextArea JTextArea,, dsb) dsb) 4. Layout Manager: Manager: mengatur tata letak dan posisi komponen dalam kontainer (BorderLayout BorderLayout,, BoxLayout BoxLayout,, FlowLayout, FlowLayout l , GridBagLayout, GridBagLayout d , GridLayout) GridLayout d ) 5. Event Handling: Handling: menangani event yang dilakukan user (klik kl k mouse mouse,, ketik k k keyboard, k b d, perbesar keyboard b f frame, frame , dsb d dsb) b) Top--Level Container Top JFrame,, JDialog JFrame JDialog,, Applet Penggunaan Top Top--Level Container Komponen GUI akan ditampilkan sebagai bagian dari containment hierarchy (Susunan hirarki komponen yang menjadikan toptop-level container sebagai rootnya rootnya)) Setiap komponen GUI hanya dapat dimuat pada satu top--level container. Dan setiap top top top--level container pane y yang g berisi komponenkomponen p memiliki satu content p komponen GUI Kitaa dapa dapat menambahkan a a a menubar a pada top topp-level container.. Menubar secara konvensi ditempatkan di container topp-level container, tapi p di luar content ppane , dalam top kecuali pada look and feel MacOS yang memberi kita opsi penempatan lebih bebas Containment Hierarchy Aplikasi GUI berbasis Swing paling tidak memiliki satu containment hierarchy dengan JFrame sebagai rootnya Jika sebuah aplikasi memiliki satu window utama t d dua dan d dialog d l artinya t aplikasi l k tersebut t b t memiliki tiga containment hierarchy dan juga tiga toptop-level l l container Satu containment c ntainment hierarchy hie a chy memiliki memi iki Jframe Jf ame sebagai root, dan dua yang lain memiliki JDialog sebagai root Content Pane dan Menu Bar 1. Menambahkan content pane pada Jframe frame.getContentPane frame.getContentPane().add( g ().add(yellowLabel yellowLabel , y BorderLayout.CENTER); BorderLayout.CENTER ); 2. Menambahkan komponen p ppada content pane p JPanel contentPane = new JPanel JPanel(new (new BorderLayout()); BorderLayout()); contentPane.setBorder((someBorder ); contentPane.setBorder contentPane.add( contentPane.add t tP dd(someComponent dd( C t, BorderLayout.CENTER); BorderLayout.CENTER ); contentPane.add( contentPane add( contentPane.add add(anotherComponent , BorderLayout.PAGE_END); BorderLayout.PAGE_END ); frame.setContentPane((contentPane frame.setContentPane contentPane); ); 3. Menambahkan menu bar pada Jframe frame.setJMenuBar frame.setJMenuBar( a a (g greenMenuBar a );; Root Pane Setiap toptop-level container sebenarnya didukung oleh l h satu t intermediate i t di t container t i b bernama roott pane.. Root pane mengelola content pane, menu pane bar b dan d dua d kontainer k t i l i (layered lain (l d pane dan d glass l pane) Layered pane mengatur kedalaman l posisi komponen dengan menggunakan nilai depth (int (int)) Glass pane sering digunakan untuk menangkap kejadian j atau menempatkan p gambar ppada suatu g wilayah dimana terdapat satu atau banyak komponen p JFrame //1. Create the frame JFrame frame = new JFrame("Frame Beraksi"); //2. Optional: What happens when the frame closes? frame.setDefaultCloseOperation( frame setDefaultCloseOperation( frame.setDefaultCloseOperation setDefaultCloseOperation(JFrame.EXIT JFrame JFrame.EXIT_ EXIT_ N_CLOSE); N CLOSE); //3. Create components p and put p them in the frame //...create emptyLabel... emptyLabel... frame.getContentPane().add( frame.getContentPane ().add(emptyLabel emptyLabel , BorderLayout.CENTER BorderLayout.CENTER); ); //4. Size the frame frame.pack(); frame pack(); frame.pack pack(); //5. Show it frame.setVisible(true); frame.setVisible (true); FrameBeraksi.java import javax.swing javax.swing.*; .*; public l class l FrameBeraksi { public static void main(String[] args){ args){ JFrame frame f = new JFrame("Frame Beraksi"); frame.setDefaultCloseOperation((JFrame.EXIT_ON_CLOSE frame.setDefaultCloseOperation JFrame.EXIT_ON_CLOSE); ); JLabel emptyLabel = new JLabel("Frame Beraksi"); frame.getContentPane().add( frame.getContentPane ().add(emptyLabel emptyLabel); ); frame.setSize(400,200); frame.setSize(400,200); frame.setVisible(true); frame.setVisible (true); } } FrameBeraksi2.java import javax.swing javax.swing.*; .*; public l class l FrameBeraksi2 extends JFrame { public FrameBeraksi2() { super("Frame Beraksi 2"); setSize(300, setSize (300, 100); setDefaultCloseOperation((JFrame.EXIT_ON_CLOSE setDefaultCloseOperation JFrame.EXIT_ON_CLOSE); ); setVisible(true); setVisible (true); } public static void main(String[] arguments) { FrameBeraksi2 frame= f new FrameBeraksi2(); } } FrameBeraksi3.java import javax.swing.JFrame javax.swing.JFrame;; public bli class l F FrameBeraksi3 B k i3 extends t d JFrame JF { public FrameBeraksi3() { super("Frame super( Frame Beraksi 33"); ); setBounds(400, setBounds (400, 300, 10, 10); setVisible(true); setVisible (true); } ppublic static a void d main(String[] ma n(S ng[] arguments) a g m n ){ FrameBeraksi3 frame = new FrameBeraksi3(); for (int i = 10; i < 400; i++) { frame.setBounds(400 frame.setBounds (400 - (i/2), 300 - (i/2), i, i); } } } Atomic Component Fitur Standard JComponent Tool Tips: Tips: setToolTipText setToolTipText() () P t Painting and d Borders: Borders B d : setBorder(), setBorder tB d (), () paintComponent paintComponent() tC t() t() Pluggable Look and Feel: Feel: UIManager.setLookAndFeel() UIManager.setLookAndFeel() Properties:: putClientProperty Properties putClientProperty(), (), getClientProperty() getClientProperty() Layout:: setMinimumSize Layout setMinimumSize(), (), setMaximumSize setMaximumSize,, setAlignmentX() setAlignmentX () Drag and Drop: Drop: component .setDragEnabled .setDragEnabled(true) setDragEnabled(true) Double Buffering: Buffering: untuk menghaluskan gambar Key Bindings: Bindings: untuk mnemonics dan accelerators l JButton import javax.swing. javax swing.*; javax.swing public class ButtonBeraksi extends JFrame { ad = new JButton("Load"); JButton("Load"); ad ; JButton load JButton save = new JButton("Save"); JButton("Save"); public ButtonBeraksi() ButtonBeraksi() { super("Button Beraksi"); Beraksi"); setSize(140, setSize (140, 170); setDefaultCloseOperation((JFrame.EXIT_ON_CLOSE setDefaultCloseOperation JFrame JFrame.EXIT_ON_CLOSE); EXIT ON CLOSE); CLOSE); JPanel pane = new JPanel JPanel(); (); pane.add(load); pane.add p (load); pane.add(save); pane.add (save); add(pane); setVisible setVisible(true); l (true); } public static void main(String[] arguments) { ButtonBeraksi button = new ButtonBera } Layout Manager BorderLayoutBeraksi.java importt java.awt.*; t* Import java.awt.event java.awt.event.*; .*; import javax.swing.*; javax.swing.*; public bl class l BorderLayoutBeraksi d k extends d JFrame { JButton nButton = new JButton("North"); JButton("North"); JButton sButton = new JButton("South"); JButton("South"); JButton eButton = new JButton("East"); JButton("East"); JButton wButton = new JButton("West"); JButton("West"); JButton cButton = new JButton("Center"); JButton("Center"); JButton(( Center ); JButton public BorderLayoutBeraksi BorderLayoutBeraksi() () { super("Border Layout Beraksi"); Beraksi"); setSize(240, setSize(240, 280); setDefaultCloseOperation((JFrame.EXIT_ON_CLOS setDefaultCloseOperation E); setLayout(new setLayout (new BorderLayout()); BorderLayout()); add(nButton add( nButton,, BorderLayout.NORTH); BorderLayout.NORTH); add(sButton add( sButton,, BorderLayout.SOUTH BorderLayout.SOUTH); ); add(eButton add( eButton,, BorderLayout.EAST); BorderLayout.EAST); add(wButton add( wButton,, BorderLayout.WEST BorderLayout.WEST); ); add(cButton add( cButton,, BorderLayout.CENTER BorderLayout.CENTER); ); } public bl static void d main(String[] ( [] args args)) { BorderLayoutBeraksi frame = new BorderLayoutBeraksi(); BorderLayoutBeraksi (); Frame.setVisible(true); Frame.setVisible (true); } } BoxLayoutBeraksi.java importt java.awt.*; t * importt javax.swing javax.swing.*; .*; * public class BoxLayoutBeraksi extends JFrame { public BoxLayoutBeraksi() B xLay utBeraksi() BoxLayoutBeraksi utBeraksi() { super("BoxLayoutBeraksi super(" BoxLayoutBeraksi"); "); setSize(430, setSize(430, 150); setDefaultCloseOperation((JFrame.EXIT_ON_CLOSE setDefaultCloseOperation JFrame.EXIT_ON_CLOSE); ); JPanel commandPane = new JPanel JPanel(); (); BoxLayout horizontal = new BoxLayout((commandPane,BoxLayout.X AXIS); BoxLayout commandPane.setLayout(horizontal); commandPane.setLayout (horizontal); JButton subscribe = new JButton("Subscribe"); JButton("Subscribe"); JButton unsubscribe = new JButton("Unsubscribe"); JButton ("Unsubscribe");; JButton refresh = new JButton JButton("Refresh"); ("Refresh"); commandPane.add(subscribe); commandPane.add (subscribe); commandPane.add(unsubscribe); commandPane.add (unsubscribe); commandPane.add(refresh); commandPane.add (refresh); add(commandPane add( commandPane); ); } public bl static void d main(String[] ( [] args args)) { BoxLayoutBeraksi st = new BoxLayoutBeraksi(); BoxLayoutBeraksi (); } } FlowLayoutBeraksi.java importt java.awt.*; t * bImport bI t java.awt.event java.awt.event.*; t t.*; * import javax.swing javax.swing.*; .*; public class FlowLayoutBeraksi extends JFrame { JButton a = new JButton JButton("Alibi"); ("Alibi"); lb JButton b = new JButton("Burglar"); JButton("Burglar"); JButton c = new JButton("Corpse"); JButton("Corpse"); JButton d = new JButton("Deadbeat"); JButton("Deadbeat"); JButton e = new JButton JButton("Evidence"); ("Evidence"); public static void main(String[] args) args) { FlowLayoutBeraksi frame = new FlowLayoutBeraksi(); FlowLayoutBeraksi (); JButton f = new JButton("Fugitive"); JButton("Fugitive"); public FlowLayoutBeraksi FlowLayoutBeraksi() () { super("Flow Layout Beraksi"); Beraksi"); setSize(360, setSize(360, 120); setDefaultCloseOperation( p (JFrame.EXIT_ON_CLOSE JFrame.EXIT_ON_CLOSE); ); setDefaultCloseOperation FlowLayout lm = new FlowLayout FlowLayout((FlowLayout.LEFT); FlowLayout.LEFT); setLayout(lm); setLayout (lm); add(a); add(b); add(c); add(d); add(e); add(f); setVisible(true); setVisible (true); } public bl static t t void d main(String[] (St [] args args)) { FlowLayoutBeraksi frame = new FlowLayoutBeraksi(); FlowLayoutBeraksi (); } } CardLayoutBeraksi.java import javax.swing. javax swing.*; import java javax.swing java.awt. awt *; a CardLayoutBeraksi{ CardLayoutBeraksi a d ay a { class public static void main(String[] args){ args){ JFrame frame = new JFrame JFrame("Card ("Card Layout Beraksi Beraksi"); "); JPanel panel1 = new JPanel JPanel(); (); JPanel panel2 = new JPanel JPanel(); (); JButton button = new JButton("Button JButton("Button dalam panel ke 1"); JT tA t t JT tA ("T ( Ttdllk2 2")) JTextArea text = new JTextArea JTextArea("Text ("Text dalam panel ke 2"); ppanel1.add(button); ppanel2.add(text); JTabbedPane tab = new JTabbedPane JTabbedPane(); (); tab.add(panel1, tab.add (panel1, "Tab 1"); tab.add(panel2, tab.add(panel2, "Tab 2"); frame.getContentPane().add(tab,BorderLayout.NORTH frame.getContentPane().add( tab,BorderLayout.NORTH); ); frame.setDefaultCloseOperation((JFrame.EXIT_ON_CLOSE frame.setDefaultCloseOperation JFrame.EXIT_ON_CLOSE); ); frame frame.pack frame.pack(); pack(); frame.setVisible pack(); frame frame.setVisible(true); setVisible(true); setVisible(true); } } GridLayoutBeraksi.java importt java.awt.*; t * importt java.awt.event java.awt.event.*; t t.*; * import javax.swing javax.swing.*; .*; public bl class l GridLayoutBeraksi d k extends d JFrame { JButton marcia = new JButton("Marcia"); JButton carol = new JButton("Carol"); JButton("Carol"); JButton greg = new JButton("Greg"); JButton("Greg"); JButton jan = new JButton("Jan"); JButton("Jan"); JButton alice = new JButton("Alice"); JButton("Alice"); JButton(( Alice ); JButton JButton peter = new JButton JButton("Peter"); ("Peter"); JButton cindy = new JButton("Cindy"); JButton("Cindy"); JButton mike = new JButton JButton("Mike"); ("Mike"); JButton bobby = new JButton("Bobby"); JButton("Bobby"); public GridLayoutBeraksi GridLayoutBeraksi() () { super(" Grid Layout Beraksi "); setSize(260, setSize (260, 260); setDefaultCloseOperation((JFrame.EXIT_ON_CLOSE); setDefaultCloseOperation JFrame.EXIT_ON_CLOSE); JPanel pane = new JPanel JPanel(); (); GridLayout G idL t family f il = new GridLayout(3, GridLayout (3, 3, 10, 10); pane.setLayout(family); pane.setLayout(family); pane.add( pane.add dd((marcia); dd marcia i )); pane.add pane.add(carol); dd((carol); dd ( l) pane.add((greg pane.add greg); ); pane.add pane.add((jan jan); ); pane.add((alice pane.add alice); ); pane.add(peter); pane.add(peter); pane.add((cindy); pane.add cindy); pane.add(mike); pane.add(mike); pane.add(bobby); pane.add dd(b dd (b bb ) (bobby); } add(pane); setVisible(true); setVisible (true); public static void main(String[] args args)) { GridLayoutBeraksi frame = new G GridLayoutBeraksi GridLayoutBeraksi(); idL tB k i() i(); () } } Penanganan g Kejadian j (Event Handling) Event Event adalah kejadian atau peristiwa yang dilakukan oleh l h user terhadap t h d user interface i t f menggunakan k peralatan mouse dan keyboard Setiap objek dapat dinotifikasi f jika suatu event terjadi sehingga objek tersebut dapat memutukan apa yang harus h dilakukan l untuk menanggapi (menangani menangani)) event tersebut (event handling) Agar suatu objek dapat dinotifikasi tentang suatu j harus mendaftarkan diri sebagai g event event, objek listener ke sumber yg menghasilkan event, dan mengimplementasikan g p interface listener yg sesuai Proses Penanganan Event 1. Komponen harus didaftarkan sebagai pendengar (listener) dg menggunakan gg method addXXXListener addXXXListener() () JButton tombolSelesai = new JButton(“Selesai”); tombolSelesai.addActionListener(this); tombolSelesai.addActionListener (this); 2. Meng Meng--implementasi interface listener atau meng meng--extends class adapter (bisa juga dengan membuat inner class) 11. class l HelloGUI H ll implements l MouseListener{} MouseListener {} 2. class HelloGUI extends MouseAdapter{} MouseAdapter{} atau class HelloGUI extends JFrame JFrame{{ class handler extends MouseAdapter MouseAdapter{}} {}} 3. Menuliskan code penangan kejadian pada method class handler extends MouseAdapter{ MouseAdapter{ public void mouseClicked mouseClicked((MouseEvent e){ //code penangan kejadian }} Listener ((Semua Semua Komponen Swing) Listener Deskripsi ComponentListener Mendengarkan perubahan size, position, atau visibility dari komponen FocusListener Mendengarkan ketika komponen mendapatkan atau kehilangan g fokus keyboard KeyListener Mendengarkan penekanan tombol keyboard (hanya untuk komponen yang mendapat fokus keyboard) MouseListener Mendengarkan penekanan mouse, klik mouse, pelepasan mouse, dan pergerakan mouse MouseMotionListener Mendengarkan perubahan posisi kursor mouse pada komponen MouseWheelListener Mendengarkan pergerakan roda mouse pada komponen HierarchyListener Mendengarkan perubahan hirarki komponen karena kejadian yang berubah HierarchyBoundListener Mendengarkan perubahan hirarki komponen karena kejadian pergerakan dan perubahan ukuran Listener API Table -1Listener or Adapter Ad Listener Method h d ActionListener actionPerformed actionPerformed((ActionEvent) ActionEvent) AncestorListener ancestorAdded( ancestorAdded(AncestorEvent) AncestorEvent) ancestorMoved((AncestorEvent) ancestorMoved AncestorEvent) ancestorRemoved((AncestorEvent) ancestorRemoved AncestorEvent) CaretListener caretUpdate( caretUpdate(CaretEvent) CaretEvent) CellEditorListener editingStopped( editingStopped(ChangeEvent) ChangeEvent) editingCanceled((ChangeEvent) editingCanceled ChangeEvent) ChangeListener stateChanged( stateChanged(ChangeEvent) ChangeEvent) ComponentListener ComponentAdapter componentHidden(ComponentEvent) componentHidden( ComponentEvent) componentMoved((ComponentEvent componentMoved ComponentEvent)) componentResized((ComponentEvent) componentResized ComponentEvent) componentShown((ComponentEvent componentShown ContainerListener ContainerAdapter componentAdded( p (ContainerEvent ContainerEvent)) componentAdded componentRemoved((ContainerEvent) componentRemoved ContainerEvent) DocumentListener changedUpdate( changedUpdate(DocumentEvent) DocumentEvent) insertUpdate( p (DocumentEvent) DocumentEvent) insertUpdate removeUpdate((DocumentEvent) removeUpdate DocumentEvent) ExceptionListener exceptionThrown exceptionThrown(Exception) (Exception) D k Deskripsi Listener API Table -2Listener or Adapter Listener Method FocusListener FocusAdapter focusGained(FocusEvent focusGained( FocusEvent)) focusLost((FocusEvent focusLost FocusEvent)) HierarchyBoundsListener HierarchyBoundsAdapter ancestorMoved(HierarchyEvent ancestorMoved( HierarchyEvent)) ancestorResized((HierarchyEvent ancestorResized HierarchyEvent)) HierarchyListener hierarchyChanged( hierarchyChanged(HierarchyEvent HierarchyEvent)) HyperlinkListener hyperlinkUpdate( hyperlinkUpdate(HyperlinkEvent HyperlinkEvent)) InputMethodListener caretPositionChanged( caretPositionChanged(InputMethodEvent InputMethodEvent)) inputMethodTextChanged((InputMethodEvent inputMethodTextChanged InputMethodEvent)) InternalFrameListener InternalFrameAdapter internalFrameActivated(InternalFrameEvent internalFrameActivated( InternalFrameEvent)) internalFrameClosed((InternalFrameEvent internalFrameClosed InternalFrameEvent)) internalFrameClosing internalFrameClosing( lF Cl (InternalFrameEvent I InternalFrameEvent) lF E ) internalFrameDeactivated((InternalFrameEvent internalFrameDeactivated InternalFrameEvent)) internalFrameDeiconified((InternalFrameEvent internalFrameDeiconified InternalFrameEvent)) iinternalFrameIconified( internalFrameIconified t lF I ifi d( d(InternalFrameEvent) I t InternalFrameEvent lF E t) t) internalFrameOpened((InternalFrameEvent internalFrameOpened InternalFrameEvent)) ItemListener itemStateChanged( itemStateChanged(ItemEvent ItemEvent)) KeyListener KeyAdapter keyPressed(KeyEvent keyPressed( KeyEvent)) keyReleased((KeyEvent keyReleased KeyEvent)) keyTyped( keyTyped(KeyEvent Deskripsi Listener API Table -3Listener or Adapter Ad Listener Method h d ListDataListener contentsChanged contentsChanged((ListDataEvent) ListDataEvent) intervalAdded((ListDataEvent) intervalAdded ListDataEvent) iintervalRemoved( intervalRemoved t lR d(ListDataEvent d( Li ListDataEvent) tD t E t) t) ListSelectionListener valueChanged valueChanged((ListSelectionEvent) ListSelectionEvent) MenuDragMouseListener menuDragMouseDragged menuDragMouseDragged((MenuDragMouseEvent) MenuDragMouseEvent) menuDragMouseEntered((MenuDragMouseEvent) menuDragMouseEntered MenuDragMouseEvent) menuDragMouseExited((MenuDragMouseEvent) menuDragMouseExited MenuDragMouseEvent) menuDragMouseReleased((MenuDragMouseEvent) menuDragMouseReleased MenuDragMouseEvent) MenuKeyListener menuKeyPressed( menuKeyPressed(MenuKeyEvent) MenuKeyEvent) menuKeyReleased((MenuKeyEvent) menuKeyReleased MenuKeyEvent) menuKeyTyped((MenuKeyEvent) menuKeyTyped MenuKeyEvent) MenuListener menuCanceled menuCanceled((MenuEvent) MenuEvent) menuDeselected((MenuEvent) menuDeselected MenuEvent) menuSelected((MenuEvent) menuSelected MenuEvent) M MouseInputListener I Li MouseInputAdapter mouseClicked( mouseClicked Cli k d( d(MouseEvent M MouseEvent) E ) mouseEntered((MouseEvent) mouseEntered MouseEvent) mouseExited((MouseEvent) mouseExited MouseEvent) MouseEvent)) mousePressed((MouseEvent mousePressed mouseReleased((MouseEvent) mouseReleased MouseEvent) mouseDragged((MouseEvent) mouseDragged MouseEvent) mouseMoved((MouseEvent) mouseMoved MouseEvent) D k Deskripsi Listener API Table -4Listener or Adapter Listener Method MouseListener mouseClicked( mouseClicked(MouseEvent MouseEvent)) mouseEntered((MouseEvent mouseEntered MouseEvent)) mouseExited((MouseEvent mouseExited MouseEvent)) mousePressed((MouseEvent mousePressed MouseEvent)) mouseReleased((MouseEvent mouseReleased MouseEvent)) MouseMotionListener MouseMotionAdapter, MouseMotionAdapter p , MouseInputAdapter mouseDragged(MouseEvent mouseDragged( MouseEvent)) mouseMoved((MouseEvent mouseMoved MouseEvent)) MouseWheelListener MouseAdapter popupMenuCanceled(PopupMenuEvent popupMenuCanceled( PopupMenuEvent)) popupMenuWillBecomeInvisible((PopupMenuEvent popupMenuWillBecomeInvisible PopupMenuEvent)) popupMenuWillBecomeVisible((PopupMenuEvent popupMenuWillBecomeVisible PopupMenuEvent)) PropertyChangeListener propertyChange( propertyChange(PropertyChangeEvent PropertyChangeEvent)) TableColumnModelListener columnAdded( columnAdded(TableColumnModelEvent TableColumnModelEvent)) columnMoved((TableColumnModelEvent columnMoved TableColumnModelEvent)) columnRemoved((TableColumnModelEvent columnRemoved TableColumnModelEvent)) columnMarginChanged((ChangeEvent columnMarginChanged ChangeEvent)) columnSelectionChanged((ListSelectionEvent columnSelectionChanged ListSelectionEvent)) TableModelListener tableChanged( TableModelEvent)) tableChanged(TableModelEvent Deskripsi Listener API Table -5LListener ste e oor Adapter dapte LListener ste e Method et od TreeExpansionListener treeCollapsed(TreeExpansionEvent) treeExpanded(TreeExpansionEvent) TreeModelListener treeNodesChanged(TreeModelEvent) treeNodesInserted(TreeModelEvent) treeNodesRemoved(TreeModelEvent) treeStructureChanged(TreeModelEvent) TreeSelectionListener valueChanged(TreeSelectionEvent) TreeWillExpandListener treeWillCollapse(TreeExpansionEvent) treeWillExpand(TreeExpansionEvent) UndoableEditListener undoableEditHappened(UndoableEditEvent) VetoableChangeListener vetoableChange(PropertyChangeEvent) WindowFocusListener WindowAdapter ( ) windowGainedFocus(WindowEvent) windowLostFocus(WindowEvent) WindowListener WindowAdapter windowActivated(WindowEvent) windowClosed(WindowEvent) windowClosing(WindowEvent) d Cl (W d ) windowDeactivated(WindowEvent) windowDeiconified(WindowEvent) windowIconified(WindowEvent) windowOpened(WindowEvent) WindowStateListener WindowAdapter windowStateChanged(WindowEvent) Deskripsi Des ps Referensi -1 Sharon Zakhour et al, The Java Tutorial Fourth Edition,, http://java.sun.com/docs/books/tutorial Edition http //java sun com/docs/books/tutorial Deitel & Deitel, Java How to Program Sixth Edition Edition,, P t Hall, Prentice H ll 2004 Kathy Sierra & Bert Bates, Head First Java 2nd Edition,, O’Reilly, 2005 Edition Rogers g Cadenhead d d & Laura Lemay, y, Teach Yourself Java 6 in 21 Days, Days, Sams Publishing, 2007 Robert Lafore Lafore,, Data Structures and Algorithms in Java Second Edition, Edition, Sams Publishing, 2003 Referensi -2 Tim Pengembang JENI, JENI 11-6, Depdiknas, 2007 Abdul Kadir, Dasar Pemrograman Java 2, 2, Penerbit Andi, A d 2004 Indrajani dan Martin, Pemrograman Berbasis Objek dengan Java, Java, Elex Media Komputindo, 2007 LN Harnaningrum, Harnaningrum g , Algoritma g dan Pemrograman d g Java,, Graha Ilmu, Java Ilmu, 2009 Rachmad Hakim & Sutarto Sutarto,, Mastering Java, Java, Elex Media Komputindo Komputindo,, 2009