个人学习KeyListener、MouseListener、WindowListener

 

 
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事件实现拖拽绘画矩形,就是虽然画出来了,但是不对准确的在指定位置绘画。在学习过程中,自己明白了如何在不同类中调用同一个对象,对静态方法返回类的对象和静态类变量有了一个更深刻的了解,我觉得这是我收获最大的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值