Presentation is loading. Please wait.

Presentation is loading. Please wait.

Event-Driven Programming CSCI 201L Jeffrey Miller, Ph.D. HTTP :// WWW - SCF. USC. EDU /~ CSCI 201 USC CSCI 201L.

Similar presentations


Presentation on theme: "Event-Driven Programming CSCI 201L Jeffrey Miller, Ph.D. HTTP :// WWW - SCF. USC. EDU /~ CSCI 201 USC CSCI 201L."— Presentation transcript:

1 Event-Driven Programming CSCI 201L Jeffrey Miller, Ph.D. HTTP :// WWW - SCF. USC. EDU /~ CSCI 201 USC CSCI 201L

2 Outline USC CSCI 201L2/23 ▪E▪Event-Driven Programming Overview ▪E▪Event-Driven Programming Example ▪A▪Adapter Classes ▪P▪Program

3 Event-Driven Programming Overview ▪The code we have written so far executed deterministically from top to bottom, calling methods and utilizing other classes ›We utilized user input to determine code that was executed in some cases, but we had prompted the user and waited for a response ▪In GUI programming, the code that gets called is based on events, such as a user clicking or a user typing something ›We don’t know the order in which users will perform the actions though ›We need to associate an action with a method USC CSCI 201L3/23 Event-Driven Programming Overview

4 Fired Events Source ObjectUser ActionEvent Type Fired JButtonClick the buttonActionEvent JTextFieldPress enter keyActionEvent JComboBoxSelect an itemItemEvent, ActionEvent JListSelect one or more itemsListSelectionEvent JCheckBoxClick a check boxItemEvent, ActionEvent JRadioButtonClick a radio buttonItemEvent, ActionEvent JMenuItemSelect a menu itemActionEvent JScrollBarMove the scroll barAdjustmentEvent JSliderMove the slider barChangeEvent WindowOpen, closing, closed, iconify, deiconify, activate, deactive the window WindowEvent ContainerComponent added or removed from the containerContainerEvent Component Mouse pressed, released, clicked, entered, or exitedMouseEvent Mouse moved or draggedMouseEvent Key pressed or releasedKeyEvent Component moved, resized, hidden, or shownComponentEvent Component gained or lost focusFocusEvent USC CSCI 201L4/23 Event-Driven Programming Overview Note: If a component can fire an event, any subclass of the component can fire the same type of event  Every Component can fire a MouseEvent, KeyEvent, FocusEvent, and ComponentEvent since Component is the superclass of GUI components

5 Listeners ▪Java uses a delegation-based model for event handling ›A source object fires an event ›An object interested in the event, called a listener, handles it A listener must be an instance of a listener interface and must be registered with a source component ›From the last lecture, we saw 25 JButton button2 = new JButton("2"); 26 button2.addActionListener(new ButtonClicked("first", outerPanel)); ›And then 35 class ButtonClicked implements ActionListener { 36 private String numberString; 37 private JPanel jp; 38 public ButtonClicked(String numberString, JPanel jp) { 39 this.numberString = numberString; 40 this.jp = jp; 41 } 42 public void actionPerformed(ActionEvent ae) { 43 CardLayout cl = (CardLayout)jp.getLayout(); 44 cl.show(jp, numberString); 45 } 46 } USC CSCI 201L5/23 Event-Driven Programming Overview

6 Fired Events Event ClassListener InterfaceListener Methods ActionEventActionListeneractionPerformed(ActionEvent) ItemEventItemListeneritemStateChanged(ItemEvent) MouseEvent MouseListener mousePressed(MouseEvent) mouseReleased(MouseEvent) mouseEntered(MouseEvent) mouseExited(MouseEvent) mouseClicked(MouseEvent) MouseMotionListener mouseDragged(MouseEvent) mouseMoved(MouseEvent) KeyEventKeyListener keyPressed(KeyEvent) keyReleased(KeyEvent) keyTyped(KeyEvent) WindowEventWindowListener windowClosing(WindowEvent) windowOpened(WindowEvent) windowIconified(WindowEvent) windowDeiconified(WindowEvent) windowClosed(WindowEvent) windowActivated(WindowEvent) windowDeactivated(WindowEvent) ContainerEventContainerListener componentAdded(ContainerEvent) componentRemoved(ContainerEvent) ComponentEventComponentListener componentMoved(ComponentEvent) componentHidden(ComponentEvent) componentResized(ComponentEvent) componentShown(ComponentEvent) FocusEventFocusListener focusGained(FocusEvent) focusLost(FocusEvent) AdjustmentEventAdjustmentListeneradjustmentValueChanged(AdjustmentEvent) ChangeEventChangeListenerstateChanged(ChangeEvent) ListSelectionEventListSelectionListenervalueChanged(ListSelectionEvent) USC CSCI 201L6/23 Event-Driven Programming Overview

7 Outline USC CSCI 201L7/23 ▪E▪Event-Driven Programming Overview ▪E▪Event-Driven Programming Example ▪A▪Adapter Classes ▪P▪Program

8 GUI with Events USC CSCI 201L8/23 Event-Driven Programming Example Create the following GUI

9 Event-Driven Programming Example 1 import java.awt.event.ActionEvent; 2 import java.awt.event.ActionListener; 3 4 import javax.swing.BoxLayout; 5 import javax.swing.JButton; 6 import javax.swing.JFrame; 7 import javax.swing.JLabel; 8 import javax.swing.JPanel; 9 import javax.swing.JTextField; 10 11 public class Test extends JFrame { 12 private JTextField num1TF, num2TF, totalTF; 13 private JLabel number1Label, number2Label; 14 private JButton concatenateButton; 15 public Test() { 16 super("Event-Driven Programming Example"); 17 number1Label = new JLabel("Number 1"); 18 num1TF = new JTextField("", 15); 19 number2Label = new JLabel("Number 2"); 20 num2TF = new JTextField("", 15); 21 totalTF = new JTextField("", 20); 22 concatenateButton = new JButton("Concatenate"); 23 concatenateButton.addActionListener( 24 new ConcatenateAdapter(num1TF, num2TF, totalTF)); 25 26 JPanel row1Panel = new JPanel(); 27 row1Panel.add(number1Label); 28 row1Panel.add(num1TF); 29 30 JPanel row2Panel = new JPanel(); 31 row2Panel.add(number2Label); 32 row2Panel.add(num2TF); 33 34 JPanel row3Panel = new JPanel(); 35 row3Panel.add(concatenateButton); 36 37 JPanel row4Panel = new JPanel(); 38 row4Panel.add(totalTF); USC CSCI 201L9/23 Event-Driven Programming Example 39 JPanel verticalPanel = new JPanel(); 40 verticalPanel.setLayout(new BoxLayout(verticalPanel, BoxLayout.Y_AXIS)); 41 verticalPanel.add(row1Panel); 42 verticalPanel.add(row2Panel); 43 verticalPanel.add(row3Panel); 44 verticalPanel.add(row4Panel); 45 46 add(verticalPanel); 47 setSize(250, 175); 48 setLocationRelativeTo(null); 49 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 50 setVisible(true); 51 } 52 53 public static void main(String args[]) { 54 Test t = new Test(); 55 } 56 } 57 58 class ConcatenateAdapter implements ActionListener { 59 private JTextField num1TF, num2TF, totalTF; 60 public ConcatenateAdapter(JTextField num1TF, JTextField num2TF, JTextField totalTF) { 61 this.num1TF = num1TF; 62 this.num2TF = num2TF; 63 this.totalTF = totalTF; 64 } 65 66 public void actionPerformed(ActionEvent ae) { 67 totalTF.setText(num1TF.getText() + num2TF.getText()); 68 } 69 }

10 Event-Driven Programming Example 1 import java.awt.event.ActionEvent; 2 import java.awt.event.ActionListener; 3 4 import javax.swing.BoxLayout; 5 import javax.swing.JButton; 6 import javax.swing.JFrame; 7 import javax.swing.JLabel; 8 import javax.swing.JPanel; 9 import javax.swing.JTextField; 10 11 public class Test extends JFrame { 12 private JTextField num1TF, num2TF, totalTF; 13 private JLabel number1Label, number2Label; 14 private JButton concatenateButton; 15 public Test() { 16 super("Event-Driven Programming Example"); 17 number1Label = new JLabel("Number 1"); 18 num1TF = new JTextField("", 15); 19 number2Label = new JLabel("Number 2"); 20 num2TF = new JTextField("", 15); 21 totalTF = new JTextField("", 20); 22 concatenateButton = new JButton("Concatenate"); 23 concatenateButton.addActionListener( 24 new ConcatenateAdapter(num1TF, num2TF, totalTF)); 25 26 JPanel row1Panel = new JPanel(); 27 row1Panel.add(number1Label); 28 row1Panel.add(num1TF); 29 30 JPanel row2Panel = new JPanel(); 31 row2Panel.add(number2Label); 32 row2Panel.add(num2TF); 33 34 JPanel row3Panel = new JPanel(); 35 row3Panel.add(concatenateButton); 36 37 JPanel row4Panel = new JPanel(); 38 row4Panel.add(totalTF); USC CSCI 201L10/23 Event-Driven Programming Example 39 JPanel verticalPanel = new JPanel(); 40 verticalPanel.setLayout(new BoxLayout(verticalPanel, BoxLayout.Y_AXIS)); 41 verticalPanel.add(row1Panel); 42 verticalPanel.add(row2Panel); 43 verticalPanel.add(row3Panel); 44 verticalPanel.add(row4Panel); 45 46 add(verticalPanel); 47 setSize(250, 175); 48 setLocationRelativeTo(null); 49 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 50 setVisible(true); 51 } 52 53 public static void main(String args[]) { 54 Test t = new Test(); 55 } 56 57 class ConcatenateAdapter implements ActionListener { 58 private JTextField num1TF, num2TF, totalTF; 59 public ConcatenateAdapter(JTextField num1TF, JTextField num2TF, JTextField totalTF) { 60 this.num1TF = num1TF; 61 this.num2TF = num2TF; 62 this.totalTF = totalTF; 63 } 64 65 public void actionPerformed(ActionEvent ae) { 66 totalTF.setText(num1TF.getText() + num2TF.getText()); 67 } 68 } 69 }

11 Event-Driven Programming Example 1 import java.awt.event.ActionEvent; 2 import java.awt.event.ActionListener; 3 4 import javax.swing.BoxLayout; 5 import javax.swing.JButton; 6 import javax.swing.JFrame; 7 import javax.swing.JLabel; 8 import javax.swing.JPanel; 9 import javax.swing.JTextField; 10 11 public class Test extends JFrame { 12 private JTextField num1TF, num2TF, totalTF; 13 private JLabel number1Label, number2Label; 14 private JButton concatenateButton; 15 public Test() { 16 super("Event-Driven Programming Example"); 17 number1Label = new JLabel("Number 1"); 18 num1TF = new JTextField("", 15); 19 number2Label = new JLabel("Number 2"); 20 num2TF = new JTextField("", 15); 21 totalTF = new JTextField("", 20); 22 concatenateButton = new JButton("Concatenate"); 23 concatenateButton.addActionListener( 24 new ConcatenateAdapter()); 25 26 JPanel row1Panel = new JPanel(); 27 row1Panel.add(number1Label); 28 row1Panel.add(num1TF); 29 30 JPanel row2Panel = new JPanel(); 31 row2Panel.add(number2Label); 32 row2Panel.add(num2TF); 33 34 JPanel row3Panel = new JPanel(); 35 row3Panel.add(concatenateButton); 36 37 JPanel row4Panel = new JPanel(); 38 row4Panel.add(totalTF); USC CSCI 201L11/23 Event-Driven Programming Example 39 JPanel verticalPanel = new JPanel(); 40 verticalPanel.setLayout(new BoxLayout(verticalPanel, BoxLayout.Y_AXIS)); 41 verticalPanel.add(row1Panel); 42 verticalPanel.add(row2Panel); 43 verticalPanel.add(row3Panel); 44 verticalPanel.add(row4Panel); 45 46 add(verticalPanel); 47 setSize(250, 175); 48 setLocationRelativeTo(null); 49 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 50 setVisible(true); 51 } 52 53 public static void main(String args[]) { 54 Test t = new Test(); 55 } 56 57 class ConcatenateAdapter implements ActionListener { 65 public void actionPerformed(ActionEvent ae) { 66 Test.this.totalTF.setText(Test.this.num1TF.getText() + Test.this.num2TF.getText()); 67 } 68 } 69 }

12 Event-Driven Programming Example 1 import java.awt.event.ActionEvent; 2 import java.awt.event.ActionListener; 3 4 import javax.swing.BoxLayout; 5 import javax.swing.JButton; 6 import javax.swing.JFrame; 7 import javax.swing.JLabel; 8 import javax.swing.JPanel; 9 import javax.swing.JTextField; 10 11 public class Test extends JFrame { 12 private JTextField num1TF, num2TF, totalTF; 13 private JLabel number1Label, number2Label; 14 private JButton concatenateButton; 15 public Test() { 16 super("Event-Driven Programming Example"); 17 number1Label = new JLabel("Number 1"); 18 num1TF = new JTextField("", 15); 19 number2Label = new JLabel("Number 2"); 20 num2TF = new JTextField("", 15); 21 totalTF = new JTextField("", 20); 22 concatenateButton = new JButton("Concatenate"); 23 concatenateButton.addActionListener( 24 new ConcatenateAdapter()); 25 26 JPanel row1Panel = new JPanel(); 27 row1Panel.add(number1Label); 28 row1Panel.add(num1TF); 29 30 JPanel row2Panel = new JPanel(); 31 row2Panel.add(number2Label); 32 row2Panel.add(num2TF); 33 34 JPanel row3Panel = new JPanel(); 35 row3Panel.add(concatenateButton); 36 37 JPanel row4Panel = new JPanel(); 38 row4Panel.add(totalTF); USC CSCI 201L12/23 Event-Driven Programming Example 39 JPanel verticalPanel = new JPanel(); 40 verticalPanel.setLayout(new BoxLayout(verticalPanel, BoxLayout.Y_AXIS)); 41 verticalPanel.add(row1Panel); 42 verticalPanel.add(row2Panel); 43 verticalPanel.add(row3Panel); 44 verticalPanel.add(row4Panel); 45 46 add(verticalPanel); 47 setSize(250, 175); 48 setLocationRelativeTo(null); 49 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 50 setVisible(true); 51 } 52 53 public static void main(String args[]) { 54 Test t = new Test(); 55 } 56 57 class ConcatenateAdapter implements ActionListener { 65 public void actionPerformed(ActionEvent ae) { 66 totalTF.setText(num1TF.getText() + num2TF.getText()); 67 } 68 } 69 }

13 Event-Driven Programming Example 1 import java.awt.event.ActionEvent; 2 import java.awt.event.ActionListener; 3 4 import javax.swing.BoxLayout; 5 import javax.swing.JButton; 6 import javax.swing.JFrame; 7 import javax.swing.JLabel; 8 import javax.swing.JPanel; 9 import javax.swing.JTextField; 10 11 public class Test extends JFrame { 12 private JTextField num1TF, num2TF, totalTF; 13 private JLabel number1Label, number2Label; 14 private JButton concatenateButton; 15 public Test() { 16 super("Event-Driven Programming Example"); 17 number1Label = new JLabel("Number 1"); 18 num1TF = new JTextField("", 15); 19 number2Label = new JLabel("Number 2"); 20 num2TF = new JTextField("", 15); 21 totalTF = new JTextField("", 20); 22 concatenateButton = new JButton("Concatenate"); 23 class ConcatenateAdapter implements ActionListener { 24 public void actionPerformed(ActionEvent ae) { 25 Test.this.totalTF.setText(Test.this.num1TF.getText() + Test.this.num2TF.getText()); 26 } 27 } 28 concatenateButton.addActionListener( 29 new ConcatenateAdapter()); 30 USC CSCI 201L13/23 Event-Driven Programming Example 31 JPanel row1Panel = new JPanel(); 32 row1Panel.add(number1Label); 33 row1Panel.add(num1TF); 34 35 JPanel row2Panel = new JPanel(); 36 row2Panel.add(number2Label); 37 row2Panel.add(num2TF); 38 39 JPanel row3Panel = new JPanel(); 40 row3Panel.add(concatenateButton); 41 42 JPanel row4Panel = new JPanel(); 43 row4Panel.add(totalTF); 44 JPanel verticalPanel = new JPanel(); 45 verticalPanel.setLayout(new BoxLayout(verticalPanel, BoxLayout.Y_AXIS)); 46 verticalPanel.add(row1Panel); 47 verticalPanel.add(row2Panel); 48 verticalPanel.add(row3Panel); 49 verticalPanel.add(row4Panel); 50 51 add(verticalPanel); 52 setSize(250, 175); 53 setLocationRelativeTo(null); 54 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 55 setVisible(true); 56 } 57 58 public static void main(String args[]) { 59 Test t = new Test(); 60 } 61 }

14 Event-Driven Programming Example 1 import java.awt.event.ActionEvent; 2 import java.awt.event.ActionListener; 3 4 import javax.swing.BoxLayout; 5 import javax.swing.JButton; 6 import javax.swing.JFrame; 7 import javax.swing.JLabel; 8 import javax.swing.JPanel; 9 import javax.swing.JTextField; 10 11 public class Test extends JFrame { 12 private JTextField num1TF, num2TF, totalTF; 13 private JLabel number1Label, number2Label; 14 private JButton concatenateButton; 15 public Test() { 16 super("Event-Driven Programming Example"); 17 number1Label = new JLabel("Number 1"); 18 num1TF = new JTextField("", 15); 19 number2Label = new JLabel("Number 2"); 20 num2TF = new JTextField("", 15); 21 totalTF = new JTextField("", 20); 22 concatenateButton = new JButton("Concatenate"); 23 class ConcatenateAdapter implements ActionListener { 24 public void actionPerformed(ActionEvent ae) { 25 totalTF.setText(num1TF.getText() + num2TF.getText()); 26 } 27 } 28 concatenateButton.addActionListener( 29 new ConcatenateAdapter()); 30 USC CSCI 201L14/23 Event-Driven Programming Example 31 JPanel row1Panel = new JPanel(); 32 row1Panel.add(number1Label); 33 row1Panel.add(num1TF); 34 35 JPanel row2Panel = new JPanel(); 36 row2Panel.add(number2Label); 37 row2Panel.add(num2TF); 38 39 JPanel row3Panel = new JPanel(); 40 row3Panel.add(concatenateButton); 41 42 JPanel row4Panel = new JPanel(); 43 row4Panel.add(totalTF); 44 JPanel verticalPanel = new JPanel(); 45 verticalPanel.setLayout(new BoxLayout(verticalPanel, BoxLayout.Y_AXIS)); 46 verticalPanel.add(row1Panel); 47 verticalPanel.add(row2Panel); 48 verticalPanel.add(row3Panel); 49 verticalPanel.add(row4Panel); 50 51 add(verticalPanel); 52 setSize(250, 175); 53 setLocationRelativeTo(null); 54 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 55 setVisible(true); 56 } 57 58 public static void main(String args[]) { 59 Test t = new Test(); 60 } 61 }

15 Event-Driven Programming Example 1 import java.awt.event.ActionEvent; 2 import java.awt.event.ActionListener; 3 4 import javax.swing.BoxLayout; 5 import javax.swing.JButton; 6 import javax.swing.JFrame; 7 import javax.swing.JLabel; 8 import javax.swing.JPanel; 9 import javax.swing.JTextField; 10 11 public class Test extends JFrame { 12 private JTextField num1TF, num2TF, totalTF; 13 private JLabel number1Label, number2Label; 14 private JButton concatenateButton; 15 public Test() { 16 super("Event-Driven Programming Example"); 17 number1Label = new JLabel("Number 1"); 18 num1TF = new JTextField("", 15); 19 number2Label = new JLabel("Number 2"); 20 num2TF = new JTextField("", 15); 21 totalTF = new JTextField("", 20); 22 concatenateButton = new JButton("Concatenate"); 23 concatenateButton.addActionListener(new ActionListener() { 24 public void actionPerformed(ActionEvent ae) { 25 totalTF.setText(num1TF.getText() + num2TF.getText()); 26 } 27 }); 28 USC CSCI 201L15/23 Event-Driven Programming Example 29 JPanel row1Panel = new JPanel(); 30 row1Panel.add(number1Label); 31 row1Panel.add(num1TF); 32 33 JPanel row2Panel = new JPanel(); 34 row2Panel.add(number2Label); 35 row2Panel.add(num2TF); 36 37 JPanel row3Panel = new JPanel(); 38 row3Panel.add(concatenateButton); 39 40 JPanel row4Panel = new JPanel(); 41 row4Panel.add(totalTF); 42 JPanel verticalPanel = new JPanel(); 43 verticalPanel.setLayout(new BoxLayout(verticalPanel, BoxLayout.Y_AXIS)); 44 verticalPanel.add(row1Panel); 45 verticalPanel.add(row2Panel); 46 verticalPanel.add(row3Panel); 47 verticalPanel.add(row4Panel); 48 49 add(verticalPanel); 50 setSize(250, 175); 51 setLocationRelativeTo(null); 52 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 53 setVisible(true); 54 } 55 56 public static void main(String args[]) { 57 Test t = new Test(); 58 } 59 }

16 Outline USC CSCI 201L16/23 ▪E▪Event-Driven Programming Overview ▪E▪Event-Driven Programming Example ▪A▪Adapter Classes ▪P▪Program

17 Listeners ▪The listeners are all interfaces, which means all of the methods in them are abstract ›Even if you only need one of the methods, you will still need to implement all of them, though methods you don’t need would have empty bodies USC CSCI 201L17/23 Adapter Classes 1 public class Test extends JFrame { 2 public Test() { 3 super("Event-Driven Programming Example"); 4 5 addWindowListener(new WindowListener() { 6 public void windowDeiconified(WindowEvent we) { 7 8 } 9 public void windowIconified(WindowEvent we) { 10 11 } 12 public void windowActivated(WindowEvent we) { 13 14 } 15 public void windowDeactivated(WindowEvent we) { 16 17 } 18 public void windowOpened(WindowEvent we) { 19 System.out.println("opened"); 20 } 21 public void windowClosing(WindowEvent we) { 22 23 } 24 public void windowClosed(WindowEvent we) { 25 System.out.println("closed"); 26 System.exit(1); 27 } 28 }); 29 setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 30 setSize(250, 175); 31 setLocationRelativeTo(null); 32 setVisible(true); 33 } 34 35 public static void main(String args[]) { 36 Test t = new Test(); 37 } 38 }

18 Adapters ▪Java provides support classes, called adapters, which provide default implementations for all the methods in corresponding listener interfaces ›The default implementation of a method is an empty body with the method signature ›Adapter only exist for interfaces that have more than one method. Why? USC CSCI 201L18/23 Adapter Classes

19 USC CSCI 201L19/23 Adapter Classes Event ClassListener InterfaceAdapter ClassListener Methods ActionEventActionListeneractionPerformed(ActionEvent) ItemEventItemListeneritemStateChanged(ItemEvent) MouseEvent MouseListenerMouseAdapter mousePressed(MouseEvent) mouseReleased(MouseEvent) mouseEntered(MouseEvent) mouseExited(MouseEvent) mouseClicked(MouseEvent) MouseMotionListenerMouseMotionAdapter mouseDragged(MouseEvent) mouseMoved(MouseEvent) KeyEventKeyListenerKeyAdapter keyPressed(KeyEvent) keyReleased(KeyEvent) keyTyped(KeyEvent) WindowEventWindowListenerWindowAdapter windowClosing(WindowEvent) windowOpened(WindowEvent) windowIconified(WindowEvent) windowDeiconified(WindowEvent) windowClosed(WindowEvent) windowActivated(WindowEvent) windowDeactivated(WindowEvent) ContainerEventContainerListenerContainerAdapter componentAdded(ContainerEvent) componentRemoved(ContainerEvent) ComponentEventComponentListenerComponentAdapter componentMoved(ComponentEvent) componentHidden(ComponentEvent) componentResized(ComponentEvent) componentShown(ComponentEvent) FocusEventFocusListenerFocusAdapter focusGained(FocusEvent) focusLost(FocusEvent) AdjustmentEventAdjustmentListeneradjustmentValueChanged(AdjustmentEvent) ChangeEventChangeListenerstateChanged(ChangeEvent) ListSelectionEventListSelectionListenervalueChanged(ListSelectionEvent)

20 Adapter Example ▪With an adapter, we only need to override the methods that we want to use instead of all the methods in the listener USC CSCI 201L20/23 Adapter Classes 1 public class Test extends JFrame { 2 public Test() { 3 super("Event-Driven Programming Example"); 4 5 addWindowListener(new WindowAdapter() { 6 public void windowOpened(WindowEvent we) { 7 System.out.println("opened"); 8 } 9 public void windowClosed(WindowEvent we) { 10 System.out.println("closed"); 11 System.exit(1); 12 } 13 }); 14 setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 15 setSize(250, 175); 16 setLocationRelativeTo(null); 17 setVisible(true); 18 } 19 20 public static void main(String args[]) { 21 Test t = new Test(); 22 } 23 }

21 Outline USC CSCI 201L21/23 ▪E▪Event-Driven Programming Overview ▪E▪Event-Driven Programming Example ▪A▪Adapter Classes ▪P▪Program

22 Program ▪Write a program that has three text fields for reading the loan amount, annual interest rate, and number of years from the user. When the user clicks the Calculate button or hits the Enter key, calculate the amount of the loan after the number of years assuming no money is paid to the principal. Print this value in a label. ›KeyEvent has a method called getKeyChar() ›KeyListener has a method called keyTyped(KeyEvent) USC CSCI 201L22/23 Program

23 ▪Write a program to concatenate two strings together from two text fields into a third text field when the Concatenate button is clicked. USC CSCI 201L23/23 Program


Download ppt "Event-Driven Programming CSCI 201L Jeffrey Miller, Ph.D. HTTP :// WWW - SCF. USC. EDU /~ CSCI 201 USC CSCI 201L."

Similar presentations


Ads by Google