Kĩ thuật lập trình - Chương 18: Mouse, keyboard, sounds, and images

Name the five methods of the MouseListener interface. Can a class implement MouseMotionListener but not MouseListener? What are the units and the origin for the coordinates returned by the MouseEvent’s getX and getY methods? How many methods does the KeyListener interface specify?

ppt22 trang | Chia sẻ: huyhoang44 | Lượt xem: 515 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Kĩ thuật lập trình - Chương 18: Mouse, keyboard, sounds, and images, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Mouse, Keyboard, Sounds, and ImagesCopyright © 2011 by Maria Litvin, Gary Litvin, and Skylight Publishing. All rights reserved.Java MethodsObject-Oriented Programmingand Data StructuresMaria Litvin ● Gary Litvin2nd AP edition  with GridWorld1Objectives:Learn how to handle mouse and keyboard events in Java.Implement a simple drawing editor application.Learn the basics of playing sounds and displaying images in applets and applications.2Mouse EventsMouse events are captured by an object which is a MouseListener and possibly a MouseMotionListener.A mouse listener is often attached to a JPanel component.It is not uncommon for a panel to serve as its own mouse listener: public MyPanel() { ... addMouseListener(this); addMouseMotionListener(this); // optional3Mouse Events (cont’d)The MouseListener interface defines five methods:void mousePressed (MouseEvent e)void mouseReleased (MouseEvent e)void mouseClicked (MouseEvent e)void mouseEntered (MouseEvent e)void mouseExited (MouseEvent e)One click and release causes several calls. Using only mouseReleased is usually a safe bet.Called when the mouse cursor enters/exits component’s visible area4Mouse Events (cont’d)Mouse listener methods receive a MouseEvent object as a parameter.A mouse event can provide the coordinates of the event and other information: public void mousePressed (MouseEvent e) { int x = e.getX(); int y = e.getY(); int b = e.getButton(); }5Mouse Events (cont’d)The MouseMotionListener interface adds two methods:void mouseMoved (MouseEvent e)void mouseDragged (MouseEvent e)These methods are often used together with MouseListener methods (the same class implements both interfaces).Called when the mouse has moved with a button held down6Keyboard EventsKeyboard events are captured by an object which is a KeyListener.The object to which a key listener is attached must first obtain keyboard “focus.” This is done by calling the component’s requestFocus method.A component (for example, a JPanel) can serve as its own key listener: addKeyListener(this);7Keyboard Events (cont’d)The KeyListener interface defines three methods:void keyPressed (KeyEvent e)void keyReleased (KeyEvent e)void keyTyped (KeyEvent e)One key pressed and released causes several events.8Keyboard Events (cont’d)Use keyTyped to capture character keys (that is, keys that correspond to printable characters).e.getKeyChar() returns a char, the typed character: public void keyTyped (KeyEvent e) { char ch = e.getKeyChar(); if (ch == ‘A’) ... }9Keyboard Events (cont’d)Use keyPressed or keyReleased to handle “action” keys, such as cursor keys, , function keys, and so on.e.getKeyCode() returns and int, the key’s “virtual code.”The KeyEvent class defines constants for various virtual keys. For example:VK_LEFT, VK_RIGHT, VK_UP, VK_DOWNVK_HOME, VK_END, VK_PAGE_UP, ...etc.Cursor keysHome, etc.10Keyboard Events (cont’d)e.isShiftDown(), e.isControlDown(), e.isAltDown() return the status of the respective modifier keys.e.getModifiers() returns a bit pattern that represents the status of all modifier keys.KeyEvent defines “mask” constants CTRL_MASK, ALT_MASK, SHIFT_MASK, and so on.11Playing Audio ClipsThe JApplet class has a method getAudioClip that returns an AudioClip object.import java.applet.AudioClip;... AudioClip tune = getAudioClip ( URLPath, relativePathName); ... tune.play();There may be a slight delay. The audio clip is actually loaded only when you call its play method for the first time.12Playing Audio Clips (cont’d)URLPath is the path part of the URL where the audio clip file is located. getDocumentBase() is often used for this parameter.getDocumentBase() returns the path part of the absolute URL of this applet’s HTML file: AudioClip bells = getAudioClip ( getDocumentBase(), “sounds/Bells.wav");13ImagesThe JApplet class has a method getImage that returns an Image object.import java.awt.Image; ... private Image picture; ... picture = getImage (getDocumentBase(), "flower.gif"); ... public void paintComponent(Graphics g) { ... if (picture != null) g.drawImage (picture, x, y, this); }ImageObserver (often null)14Images (cont’d)In applications, it may be easier to work with Swing’s ImageIcon objects:import javax.swing.ImageIcon; ... private ImageIcon picture; ... picture = new ImageIcon ("flower.gif"); ... public void paintComponent (Graphics g) { ... if (picture != null) picture.drawIcon (this, g, x, y); }The component on which this icon is displayed (usually this)15Images (cont’d)Icons can be placed on JButtons, JLabels, JMenuItems, etc:Icon’s getImage method returns its image (an Image object).import javax.swing.ImageIcon; ... ImageIcon arrow = new ImageIcon ("rightarrow.gif"); JButton next = new JButton(“Next”, arrow);16The Drawing Editor Program17Drawing Editor (cont’d)Allows to move and shape objects on “canvas” using the mouse and the cursor keys.Here the shapes are circles (“balloons”).Uses JColorChooser to pick a color.18Drawing Editor (cont’d)You write the whole program; there is a detailed step-by-step plan in the book (Section 18.4).ControlPanelDrawingPanelBalloonBalloonDraw19Review:Name the five methods of the MouseListener interface.Can a class implement MouseMotionListener but not MouseListener?What are the units and the origin for the coordinates returned by the MouseEvent’s getX and getY methods?How many methods does the KeyListener interface specify?20Review (cont’d):Which KeyListener’s method is used to capture an action key event?Which KeyEvent’s method returns the actual character typed?Which KeyEvent’s methods return the status of modifier keys?When do we need a requestFocus() call?21Review (cont’d):What does an applet’s getDocumentBase() method return?Which class was written earlier: Image or ImageIcon?How can we display an icon on a panel (a JPanel object)?How can we display an icon on a button (a JButton object)?22

Các file đính kèm theo tài liệu này:

  • pptch18_3726.ppt
Tài liệu liên quan