博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
个人学习KeyListener、MouseListener、WindowListener
阅读量:2256 次
发布时间:2019-05-09

本文共 4909 字,大约阅读时间需要 16 分钟。

 
 
 
 
 
import java.awt.*;import javax.swing.*;public class MyPanel extends JPanel{	RectClass rectClass = null;	public MyPanel(){		rectClass = RectClass.returnRectClass();	}	public void paint(Graphics g){		super.paint(g);				this.drawRect(rectClass.getX(), rectClass.getY(), rectClass.getWidth(), rectClass.getHeight(), g);	}	public void drawRect(int x1, int y1, int x2, int y2,Graphics g){		g.fillRect(x1, y1, x2, y2);		this.repaint();	}	//创建MyPanel对象,return函数方便其他函数调用。	private static MyPanel mypanel = new MyPanel();	public static MyPanel returnMyPanel(){		return mypanel;	}	}import java.awt.Cursor;import java.awt.event.*;public class MouseListenerClass implements MouseListener{	MyPanel mypanel = null;	RectClass rectClass = null;	private int  mousePressX = 0;	private int  mousePressY = 0;	public MouseListenerClass(){		mypanel = MyPanel.returnMyPanel();		rectClass = RectClass.returnRectClass();	}	@Override	public void mouseClicked(MouseEvent arg0) {		// TODO Auto-generated method stub		System.out.println("鼠标按下:x = "+arg0.getX() + " y = "+arg0.getY());	}	@Override	public void mouseEntered(MouseEvent arg0) {		// TODO Auto-generated method stub		System.out.println("鼠标进入");		mypanel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR ));	}	@Override	public void mouseExited(MouseEvent arg0) {		// TODO Auto-generated method stub		System.out.println("鼠标出来");	}	@Override	public void mousePressed(MouseEvent arg0) {		// TODO Auto-generated method stub		System.out.println("鼠标按下");		mousePressX = arg0.getX();		mousePressY = arg0.getY();		rectClass.setX(mousePressX);		rectClass.setY(mousePressY);			}	@Override	public void mouseReleased(MouseEvent arg0) {		// TODO Auto-generated method stub		System.out.println("鼠标松开");		rectClass.setWidth(arg0.getX()-mousePressX);		rectClass.setHeight(arg0.getY()-mousePressY);	}		}import java.awt.event.KeyEvent;import java.awt.event.KeyListener;public class KeyListenerClass implements KeyListener{	@Override	public void keyPressed(KeyEvent arg0) {		// TODO Auto-generated method stub		System.out.println("按键按下");		System.out.println("按下的是:"+arg0.getKeyChar());	}	@Override	public void keyReleased(KeyEvent arg0) {		// TODO Auto-generated method stub		System.out.println("按键松开");	}	@Override	public void keyTyped(KeyEvent arg0) {		// TODO Auto-generated method stub		System.out.println("");	}}import java.awt.event.*;public class WindowsListenerClass implements WindowListener{	@Override	public void windowActivated(WindowEvent e) {		// TODO Auto-generated method stub		System.out.println("调用WindowActivate方法");	}	@Override	public void windowClosed(WindowEvent e) {		// TODO Auto-generated method stub		System.out.println("调用windowClosed方法");	}	@Override	public void windowClosing(WindowEvent e) {		// TODO Auto-generated method stub		System.out.println("调用windowClosing方法");	}	@Override	public void windowDeactivated(WindowEvent e) {		// TODO Auto-generated method stub		System.out.println("调用windowDeactivated方法");	}	@Override	public void windowDeiconified(WindowEvent e) {		// TODO Auto-generated method stub		System.out.println("调用windowDeiconified方法");	}	@Override	public void windowIconified(WindowEvent e) {		// TODO Auto-generated method stub		System.out.println("调用windowIconified方法");	}	@Override	public void windowOpened(WindowEvent e) {		// TODO Auto-generated method stub		System.out.println("调用windowOpened方法");	}	}public class RectClass {	private int x = 0;	private int y = 0;	private int width = 0;	private int height = 0;	private static RectClass rectClass = new RectClass();	public int getX() {		return x;	}	public void setX(int x) {		this.x = x;	}	public int getY() {		return y;	}	public void setY(int y) {		this.y = y;	}	public int getWidth() {		return width;	}	public void setWidth(int width) {		this.width = width;	}	public int getHeight() {		return height;	}	public void setHeight(int height) {		this.height = height;	}		public static RectClass returnRectClass(){		return rectClass;	}	}import javax.swing.*;public class MyTest01 extends JFrame{	MyPanel mypanel = null;	MouseListenerClass mouseListenerClass = null;	KeyListenerClass keyListenerClass = null;	WindowsListenerClass windowsListenerClass = null;	public static void main(String[] args){		MyTest01 mytest01 = new MyTest01();	}	public MyTest01(){		mypanel = MyPanel.returnMyPanel();		keyListenerClass = new KeyListenerClass();		mouseListenerClass = new MouseListenerClass();		windowsListenerClass = new WindowsListenerClass();		this.add(mypanel);		this.addKeyListener(keyListenerClass);		this.addMouseListener(mouseListenerClass);		this.addWindowListener(windowsListenerClass);		this.setSize(400,300);		this.setLocation(400,400);		this.setVisible(true);		this.setDefaultCloseOperation(EXIT_ON_CLOSE);	}}

 

在学习的过程中,自己首先实现了在面板上添加各个监听事件,对各个事件的用法有了一个大概的了解。然后让鼠标进入面板区域后变为小手,接着通过利用keyListener事件实现拖拽绘画矩形,就是虽然画出来了,但是不对准确的在指定位置绘画。在学习过程中,自己明白了如何在不同类中调用同一个对象,对静态方法返回类的对象和静态类变量有了一个更深刻的了解,我觉得这是我收获最大的。

转载地址:http://vsrdb.baihongyu.com/

你可能感兴趣的文章
安卓自动化测试工具robotium android的简介及安装
查看>>
android tabhost 每个item的选中改变背景,和标题
查看>>
解决三星android拍照时返回null问题
查看>>
centos下安装卸载命令rpm,make install使用方法
查看>>
Linux操作系统命令行下编辑常用的快捷键
查看>>
linux用什么命令可以查看内存使用的情况详细信息
查看>>
Android sdcard媒体文件更新(程序控制刷新MediaStore数据库)详解
查看>>
android不用xml文件,动态写Animation,注:Animation并不会真正移动控件,需要调用onAnimationEnd
查看>>
Java网络编程(一) 建立TCP连接
查看>>
Java网络编程(二) 连续发送数据
查看>>
Java网络编程(三) UDP通信
查看>>
Java网络编程(四) 通过MulticastSocket实现广播
查看>>
树莓派3b下如何安装ubuntu
查看>>
activity的四种启动模式区别_launchmode图文详解
查看>>
HttpClient已过时,访问网络用HttpURLConnection
查看>>
adb操作命令详解及大全
查看>>
ANDROID全局异常处理
查看>>
android studio gradle配置详解
查看>>
android studio gradle配置详解进阶篇
查看>>
ANDROID 推送到底哪家强
查看>>