Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Week 3: Introduction • Last meeting we discussed Advantages of using subprograms How subprograms work How you write them How you call them What happens when they are called Using parameters with subprograms Allow "communication" with the subprogram Recursive subprograms University of Pittsburgh Computer Science 1 Week 3: Introduction Ex. Towers of Hanoi Procedural abstraction Can use a subprogram without having to know details of its implementation Data abstraction Can use a new data type without having to know details of its implementation Object-oriented programming Encapsulation of data and operations Inheritance Polymorphism University of Pittsburgh Computer Science 2 Week 3: Adding a Graphical Interface • In the past two weeks we have seen how to make things easier for the programmer But the USER of the program is the main concern Early programs interacted with the user through the command line and the console User runs program by typing some command Input is typed from the keyboard onto console Output is shown on console Not very user-friendly! University of Pittsburgh Computer Science 3 Week 3: Adding a Graphical Interface As more "regular" people started using computers, the user-interface had to be improved People at Xerox and Apple began developing ways for a "mouse" to be used with a program Graphics abilities on computers were improved, and could be used in conjunction with the "mouse" Now most production software has a GUI (Graphical User Interface) to go with it Let's see a little bit of how this is done University of Pittsburgh Computer Science 4 Week 3: Graphical Components • Graphical Components Objects in a program that work primarily in a graphical way Windows – Used to contain and manipulate the other graphical components, and for drawing Buttons – User "pushes" button by clicking the mouse – Button responds by executing a subprogram Dialog Boxes – Some graphical information is shown to the user – User types in a response – User's response is processed University of Pittsburgh Computer Science 5 Week 3: Java Buttons • Let's look in more detail at a Button What do we need in order to use one? Must be in some window Must be created and initialized A subprogram to handle the "click" must be implemented and associated with the button Download SimpleButton.java Compile and run it Let's look at the code University of Pittsburgh Computer Science 6 Week 3: Java Buttons • Remember what we needed Must be in some window In Java a JFrame is a window Note that the main class extends JFrame The button will be inside this window Must be created and initialized Button variable is declared in the data area Button object is created in the constructor A subprogram to handle the "click" must be implemented and associated with the button Let's talk more about this one University of Pittsburgh Computer Science 7 Week 3: Event-Driven Programming • Older computer programs were the initiators of activities Program prompts, user responds • Event-driven programs have the opposite approach Program waits for user to initiate an activity, then responds to it If user does nothing, program just idles Programmer must code ways that program will react to user's actions University of Pittsburgh Computer Science 8 Week 3: Event-Driven Programming • In Java, event-driven programming is handled in three parts: Events: These are generated due to the user's actions – ActionEvent: some action has occurred – MouseEvent: mouse has done something – WindowEvent: something has happened to window Event generators: The components/activities that cause the events to be generated – Button has been clicked – Mouse has been moved – Window has been closed University of Pittsburgh Computer Science 9 Week 3: Event-Driven Programming Event handlers (listeners) Subprograms that execute in response to an event Programmer indicates here what program should do when event occurs Must be linked to the event-generator University of Pittsburgh Computer Science 10 Week 3: Event-Driven Programming Button is clicked in window, generating an ActionEvent ActionEvent is sent as a parameter to the handling subprogram to process Handling subprogram executes, responding to the event that occurred University of Pittsburgh Computer Science actionPerformed(ActionEvent e) { code to respond to event } 11 Week 3: Event-Driven Programming • Look again at SimpleButton.java Event: ActionEvent Event generator: button click Event listener: ButtonHandler (ActionListener) Note where it is linked to the button Note what is done to handle click University of Pittsburgh Computer Science 12 Week 3: Java Buttons • Let's add another button to our program Let's have this button change the title of our window to whatever we want it to be What do we need to do to do this? Create another button variable and object – Call it button2 – Add the variable right after button1 (same line) – Create the object below button1: button2 = new JButton("Change Title"); Link our new button to a listener (handler) – Let's use the same one as for the first button button2.addActionListener(bhandler); University of Pittsburgh Computer Science 13 Week 3: Java Buttons Tell our window about the new button so it can handle its display – Let's make the buttons WEST and EAST – Change button1 from CENTER to WEST, then add button2: c.add(button2, BorderLayout.EAST); Write the code to handle the button – We must test to see if button2 generated the event – If so, execute the code to handle it else if (e.getSource() == button2) { String newTitle = JOptionPane.showInputDialog( SimpleButton.this, "New Title?"); SimpleButton.this.setTitle(newTitle); } University of Pittsburgh Computer Science 14 Week 3: Java Buttons • What else can a button do? How about a toggle button Click it once to "turn something on" Click it again to "turn it off" Similar to the power switch on your remote Let's use it to turn on and off the button that we just made University of Pittsburgh Computer Science 15 Week 3: Java Buttons How can we make a toggle button? We need to keep track of the button's current "state" – Is the button on or off? – We can do this with a boolean variable, titleOn » Remember that boolean variables have two values, true or false Each time button is clicked, change to the opposite state and execute the appropriate action – If on, turn off; If off, turn on – We'll initialize it to on (true) Add new button variable and create new object – For text, we'll put "Turn off Title Changer" initially – Link it to same listener as other two buttons – Put it in SOUTH of the window's layout University of Pittsburgh Computer Science 16 Week 3: Java Buttons Add code to handler for new button – What do we do here? – If titleOn, turn it off and change button text – If not titleOn, turn it on and change button text if (titleOn) { button2.setVisible(false); button3.setText("Turn Title On"); titleOn = false; } else { button2.setVisible(true); button3.setText("Turn Title Off"); titleOn = true; } – Let's look at and run ToggleButton.java University of Pittsburgh Computer Science 17 Week 3: Other Java Components • Java has MANY GUI Components Menu Allows selection from list of options Pull-down and pop-up menus can be created CheckBox Allows something to be selected or not Label Allows text to be displayed in different fonts and colors TextArea Allows user to input text and can detect changes University of Pittsburgh Computer Science 18 Week 3: Mouse Events • Key to all GUIs is the mouse • What are some useful things to know about the mouse? Where is it? X and Y coordinates Is a mouse button pressed? If so is it over anything that requires an action? Is it moving/has it moved? Is it "dragging" anything along with it? University of Pittsburgh Computer Science 19 Week 3: Mouse Events • Java events involving the mouse are MouseEvents Two different listeners for ease of handling MouseListener handles/implements – – – – – mousePressed mouseReleased mouseClicked mouseEntered mouseExited MouseMotionListener handles/implements – mouseMoved – mouseDragged University of Pittsburgh Computer Science 20 Week 3: Mouse Events • Let's look at an example Download, compile and run Mousey.java • What does the code do? Getting a bit more complicated A separate Panel class is created for the graphics It is in this class that most of the work is done We have theShape to store the rectangle We have theColors to store the different background colors We add a MouseListener and a MouseMotionListener University of Pittsburgh Computer Science 21 Week 3: Mouse Events • Look at the subprograms mousePressed Indicate the mouse has been pressed Get the current location of the mouse If it's within the shape, select the shape If not, change the background color (and unselect the shape, if it had been selected) mouseReleased Indicate the mouse has been released University of Pittsburgh Computer Science 22 Week 3: Mouse Events mouseMoved Show current location of the mouse Note that this event occurs each time mouse is moved even the slightest bit Thus it occurs hundreds/thousands of times as you are using a GUI program – However in many applications it is ignored mouseDragged Mouse is move WHILE button is held down Note when this occurs mouseMoved does not If the shape has been selected – Get the new location of the mouse – Reposition the shape to the new location University of Pittsburgh Computer Science 23 Week 3: Simple Java Graphics • What is going on with the shape? It is a Rectangle2D, predefined in Java This shape can be drawn graphically in various ways (ex. filled or just outline) To "move" it we really just change it's "frame" with a new upper left corner There are some interesting things we can do See if it contains a point See if it intersects another shape – Can be useful for games, other graphical applications There are other shapes that we can use as well University of Pittsburgh Computer Science 24 Week 3: Summary • This week we discussed Graphical interfaces Simple graphical components in Java Implementing Java buttons Events and event-driven programming Using the mouse and its related events Simple graphics in Java University of Pittsburgh Computer Science 25