Java的事件驱动入门(四)——捕捉鼠标事件

效果

在这里插入图片描述

前言

编写一个程序,在面板中显示一条信息,可以用鼠标移动这条信息。信息会随着鼠标的移动而移动,信息总是显示在鼠标的指针处。

代码

package Test;

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;

public class MoveMessageDemo extends JFrame {
    public MoveMessageDemo(){
//        创建一个MovableMessagePanle实例去移动一条信息
        MovableMessagePanel p=new MovableMessagePanel("Welcome to Java");
//        将这条信息放在frame里面
        setLayout(new BorderLayout());
        add(p);
    }

    public static void main(String[] args) {
        MoveMessageDemo frame=new MoveMessageDemo();
        frame.setTitle("MoveMessage");
        frame.setSize(200,100);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    //内部类,可移动信息的绘制
    static class MovableMessagePanel extends JPanel {
        private String message = "Welcome to Java";
        private int x = 20;
        private int y = 20;

        //构造一个panel绘制信息
        public MovableMessagePanel(String s) {
            message = s;
            addMouseMotionListener(new MouseMotionAdapter() {
                //           处理鼠标移动事件
                public void mouseDragged(MouseEvent e) {
//            获取新的位置信息并且重新绘制在屏幕上
                    x = e.getX();
                    y = e.getY();
                    repaint();
                }
            });
        }

        protected void paintComponent(Graphics g) {
            super.paintComponents(g);
            g.drawString(message, x, y);
           
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值