一个JavaMulististar例子,带有addMouseListener, mousePressed, mouseReleased, mouseEntered, mouseExited, mouseClicked和MouseEvent

・7 分钟阅读

以下源代码来自Sun Microsystems,并演示如何实现MouseListener,包括以下MouseListener方法,这些方法都采用MouseEvent

  • addMouseListener
  • mousePressed
  • mouseReleased
  • mouseEntered
  • mouseExited
  • mouseClicked

下面是例子Java源代码:

/**
 * Copyright (c) 1995 - 2008 Sun Microsystems, Inc. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * - Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 *
 * - Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 *
 * - Neither the name of Sun Microsystems nor the names of its
 * contributors may be used to endorse or promote products derived
 * from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\"AS
 * IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
/**
 * MouseEventDemo.java
 */
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class MouseEventDemo extends JPanel implements MouseListener {
 BlankArea blankArea;
 JTextArea textArea;
 static final String NEWLINE = System.getProperty(\"line.separator\");
 public static void main(String[] args) {
 /** Use an appropriate Look and Feel */
 try {
 // UIManager.setLookAndFeel(\"com.sun.java.swing.plaf.windows.WindowsLookAndFeel\");
 // UIManager.setLookAndFeel(\"com.sun.java.swing.plaf.gtk.GTKLookAndFeel\");
 UIManager.setLookAndFeel(\"javax.swing.plaf.metal.MetalLookAndFeel\");
 } catch (UnsupportedLookAndFeelException ex) {
 ex.printStackTrace();
 } catch (IllegalAccessException ex) {
 ex.printStackTrace();
 } catch (InstantiationException ex) {
 ex.printStackTrace();
 } catch (ClassNotFoundException ex) {
 ex.printStackTrace();
 }
 /** Turn off metal\'s use of bold fonts */
 UIManager.put(\"swing.boldMetal\", Boolean.FALSE);
 // Schedule a job for the event dispatch thread:
 // creating and showing this application\'s GUI.
 javax.swing.SwingUtilities.invokeLater(new Runnable() {
 public void run() {
 createAndShowGUI();
 }
 });
 }
 /**
 * Create the GUI and show it. For thread safety, this method should be
 * invoked from the event dispatch thread.
 */
 private static void createAndShowGUI() {
 // Create and set up the window.
 JFrame frame = new JFrame(\"MouseEventDemo\");
 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 // Create and set up the content pane.
 JComponent newContentPane = new MouseEventDemo();
 newContentPane.setOpaque(true); // content panes must be opaque
 frame.setContentPane(newContentPane);
 // Display the window.
 frame.pack();
 frame.setVisible(true);
 }
 public MouseEventDemo() {
 super(new GridLayout(0, 1));
 blankArea = new BlankArea(Color.YELLOW);
 add(blankArea);
 textArea = new JTextArea();
 textArea.setEditable(false);
 JScrollPane scrollPane = new JScrollPane(textArea);
 scrollPane
 .setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
 scrollPane.setPreferredSize(new Dimension(200, 75));
 add(scrollPane);
 // Register for mouse events on blankArea and the panel.
 blankArea.addMouseListener(this);
 addMouseListener(this);
 setPreferredSize(new Dimension(450, 450));
 setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
 }
 void eventOutput(String eventDescription, MouseEvent e) {
 textArea.append(eventDescription +\" detected on\"
 + e.getComponent().getClass().getName() +\".\" + NEWLINE);
 textArea.setCaretPosition(textArea.getDocument().getLength());
 }
 public void mousePressed(MouseEvent e) {
 eventOutput(\"Mouse pressed (# of clicks:\" + e.getClickCount() +\")\", e);
 }
 public void mouseReleased(MouseEvent e) {
 eventOutput(\"Mouse released (# of clicks:\" + e.getClickCount() +\")\", e);
 }
 public void mouseEntered(MouseEvent e) {
 eventOutput(\"Mouse entered\", e);
 }
 public void mouseExited(MouseEvent e) {
 eventOutput(\"Mouse exited\", e);
 }
 public void mouseClicked(MouseEvent e) {
 eventOutput(\"Mouse clicked (# of clicks:\" + e.getClickCount() +\")\", e);
 }
}
Xn_warm profile image