1. Trang chủ
  2. » Công Nghệ Thông Tin

Lecture Java methods: Object-oriented programming and data structures (2nd AP edition): Chapter 18 - Maria Litvin, Gary Litvin

22 15 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 235,71 KB

Nội dung

Chapter 18 - Mouse, keyboard, sounds, and images. This is essentially a “learning by doing” chapter. Not much theory here. This chapter also introduces bit-wise logical operators in the context of identifying the status of keyboard modifier keys (Alt, Shift, Ctrl).

Java Methods Object-Oriented Programming and Data Structures 2nd AP edition with GridWorld Maria Litvin ● Gary Litvin   Chapter     Mouse, Keyboard, Sounds, and Images Copyright © 2011 by Maria Litvin, Gary Litvin, and Skylight Publishing All rights reserved Objectives: • 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 18­2 Mouse Events • Mouse 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); // optional 18­3 Mouse 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) Called when the mouse cursor enters/exits component’s visible area • One click and release causes several calls Using only mouseReleased is usually a safe bet 18­4 Mouse 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(); } 18­5 Mouse Events (cont’d) • The MouseMotionListener interface adds two methods: void mouseMoved (MouseEvent e) void mouseDragged (MouseEvent e) Called when the mouse has moved with a button held down • These methods are often used together with MouseListener methods (the same class implements both interfaces) 18­6 Keyboard Events • Keyboard 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); 18­7 Keyboard 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 18­8 Keyboard 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’) } 18­9 Keyboard 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_DOWN Cursor keys VK_HOME, VK_END, VK_PAGE_UP, etc Home, etc 18­10 Keyboard 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 18­11 Playing Audio Clips • The JApplet class has a method getAudioClip that returns an AudioClip object import java.applet.AudioClip; AudioClip tune = getAudioClip ( URLPath, relativePathName); There may be a slight tune.play(); delay The audio clip is actually loaded only when you call its play method for the first time 18­12 Playing 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"); 18­13 Images • The 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) { ImageObserver (often null) if (picture != null) g.drawImage (picture, x, y, this); } 18­14 Images (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) 18­15 Images (cont’d) • Icons can be placed on JButtons, JLabels, JMenuItems, etc: import javax.swing.ImageIcon; ImageIcon arrow = new ImageIcon ("rightarrow.gif"); JButton next = new JButton(“Next”, arrow); • Icon’s getImage method returns its image (an Image object) 18­16 The Drawing Editor Program 18­17 Drawing 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 18­18 Drawing Editor (cont’d) BalloonDraw ControlPanel DrawingPanel Balloon • You write the whole program; there is a detailed step-by-step plan in the book (Section 18.4) 18­19 Review: • 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? 18­20 Review (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 we need a requestFocus() call? 18­21 Review (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)? 18­22 ... 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 18? ?2 Mouse... (an Image object) 18? ?16 The Drawing Editor Program 18? ?17 Drawing Editor (cont’d) • Allows to move and shape objects on “canvas” using the mouse and the cursor keys • Here the shapes are circles... pick a color 18? ?18 Drawing Editor (cont’d) BalloonDraw ControlPanel DrawingPanel Balloon • You write the whole program; there is a detailed step-by-step plan in the book (Section 18. 4) 18? ?19 Review:

Ngày đăng: 04/11/2020, 23:17

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN