⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mousemotioneventtest.java

📁 java编程百例
💻 JAVA
字号:
package ch02.section04;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/*
 * MouseMotionEventTest是一个容器内,继承了JPenel,
 * 实现了MouseMotionListener接口
 */
public class MouseMotionEventTest
    extends JPanel
    implements MouseMotionListener {
  //声明一个标签
  BlankArea blankArea;
  //声明一个文本区域
  JTextArea textArea;
  static final String newline = "\n";

  public MouseMotionEventTest() {
    super(new GridBagLayout());
    GridBagLayout gridbag = (GridBagLayout) getLayout();
    GridBagConstraints c = new GridBagConstraints();

    c.fill = GridBagConstraints.BOTH;
    c.gridwidth = GridBagConstraints.REMAINDER;
    c.weightx = 1.0;
    c.weighty = 1.0;

    c.insets = new Insets(1, 1, 1, 1);
    blankArea = new BlankArea(new Color(0.98f, 0.97f, 0.85f));
    gridbag.setConstraints(blankArea, c);
    add(blankArea);

    c.insets = new Insets(0, 0, 0, 0);
    textArea = new JTextArea();
    textArea.setEditable(false);
    JScrollPane scrollPane = new JScrollPane(textArea,
                                             JScrollPane.
                                             VERTICAL_SCROLLBAR_ALWAYS,
                                             JScrollPane.
                                             HORIZONTAL_SCROLLBAR_AS_NEEDED);
    scrollPane.setPreferredSize(new Dimension(200, 75));
    gridbag.setConstraints(scrollPane, c);
    add(scrollPane);

    //为容器注册鼠标移动事件监听
    blankArea.addMouseMotionListener(this);
    addMouseMotionListener(this);

    setPreferredSize(new Dimension(450, 450));
    setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
  }

  public void mouseMoved(MouseEvent e) {
    saySomething("Mouse moved", e);
  }

  public void mouseDragged(MouseEvent e) {
    saySomething("Mouse dragged", e);
  }

  void saySomething(String eventDescription, MouseEvent e) {
    textArea.append(eventDescription
                    + " (" + e.getX() + "," + e.getY() + ")"
                    + " detected on "
                    + e.getComponent().getClass().getName()
                    + newline);
    textArea.setCaretPosition(textArea.getDocument().getLength());
  }

  private static void createAndShowGUI() {
    //将JFrame设置成更好的视觉效果
    JFrame.setDefaultLookAndFeelDecorated(true);

    //创建一个标题为"MouseMotionEventTest"的JFrame
    JFrame frame = new JFrame("MouseMotionEventTest");
    //设置frame的关闭方法
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //Create and set up the content pane.
    JComponent newContentPane = new MouseMotionEventTest();
    newContentPane.setOpaque(true); //content panes must be opaque
    frame.setContentPane(newContentPane);

    //显示窗口
    frame.pack();
    frame.setVisible(true);
  }

  public static void main(String[] args) {

    javax.swing.SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        createAndShowGUI();
      }
    });
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -