/*
* 由于鼠标是任何组件都具备(所有组件都可用鼠标监听,即都可被鼠标操作),所以去Component类中找,发现方法:
*
* public void addMouseListener(MouseListener l)添加指定的鼠标侦听器,以接收发自此组件的鼠标事件。如果侦听
* 器 l 为 null,则不会抛出异常并且不执行动作。
*
* 点进MouseListener,发现其内有5个方法,那么必须有适配器,即MouseAdapter,原理与作用同WindowAdapter,这里不再说明。
*/
package demo;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class MouseListenerDemo {
/*
* 将程序所涉及的组件先用成员变量定义出来。先明确程序需要多少组件。真正new的时候,对这些组件初始化。
*/
private Frame f ;
private TextField tf;
private Button but;
public MouseListenerDemo() {
init();//该自定义函数用于对组件初始化
}
private void init() {
f = new Frame("演示鼠标监听");
f.setBounds(400, 200, 500, 400);
f.setLayout(new FlowLayout());
tf = new TextField(15);//该构造函数创建一个文本框,共15列,TextField共有4个构造函数,详见API
but = new Button("一个按钮");
f.add(tf);
f.add(but);
myEvent();
f.setVisible(true);
}
private void myEvent() {
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
//在Button上添加鼠标监听器。
but.addMouseListener(new MouseAdapter() {
//这里同WindowAdapter,想实现什么功能就复写什么方法,这里我们想实现点击鼠标就进入的功能,所以复写mouseEntered方法。
int count = 1;//【注意】count不要定义在mouseEntered方法内,那样每操作一次鼠标,count都被初始化为1,不会自增
@Override
public void mouseEntered(MouseEvent e) {
//System.out.println("mouse enter..."+count++);
/*
* 这里有个现象,就是鼠标碰到按钮,还没点击,就输出mouse enter...1,那是因为MouseListener接口中5个方法(详见API)
* 分别对应鼠标进入、离开、按下、释放、按下并释放的动作,如mouseEntered方法就是鼠标进入到组件上时调用,即鼠标
* 碰到Button就调用,所以出现该现象。
*/
tf.setText("mouse enter..."+count++);//setText()方法是TextField类特有方法,用于在文本框中添加文字
/*
* 鼠标每碰到按钮,在文本框中就会出现"mouse enter..."+count++对应的内容,如果想让鼠标点击并释放才触发效果,可以复写
* mouseClicked()方法
*/
/*
* 【需求】鼠标双击才触发效果,其余操作均不触发
* 发现mouseListener接口内的5个方法没有对应双击的,那么从5个方法的参数MouseEvent入手,发现其内可以通过getClickCount()
* 方法获取鼠标点击次数,那么就加个if判断,只有点击2次才触发效果
* 将这里复写的方法改为mouseClicked(),其内代码为:
* if(e.getClickCount()==2)
* tf.setText("mouse double click..."+count++);
* 即可实现需求
*/
}
});
}
public static void main(String[] args){
new MouseListenerDemo();
}
}
25-GUI-05-GUI(鼠标事件)
最新推荐文章于 2023-06-05 14:20:41 发布