免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2664 | 回复: 0
打印 上一主题 下一主题

java获取窗口鼠标坐标以及键盘按键 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-05 15:41 |只看该作者 |倒序浏览
Java中的鼠标和键盘事件
1、使用MouseListener借口处理鼠标事件
鼠标事件有5种:按下鼠标键,释放鼠标键,点击鼠标键,鼠标进入和鼠标退出
鼠标事件类型是MouseEvent,主要方法有:
getX(),getY() 获取鼠标位置
getModifiers() 获取鼠标左键或者右键
getClickCount() 获取鼠标被点击的次数
getSource() 获取鼠标发生的事件源
事件源获得监视器的方法是addMouseListener(),移去监视器的方法是removeMouseListener()
处理事件源发生的时间的事件的接口是MouseListener 接口中有如下的方法
mousePressed(MouseEvent) 负责处理鼠标按下事件
mouseReleased(MouseEvent) 负责处理鼠标释放事件
mouseEntered(MouseEvent) 负责处理鼠标进入容器事件
mouseExited(MouseEvent) 负责处理鼠标离开事件
mouseClicked(MouseEvent) 负责处理点击事件
2、使用MouseMotionListener接口处理鼠标事件
事件源发生的鼠标事件有2种:拖动鼠标和鼠标移动
鼠标事件的类型是MouseEvent
事件源获得监视器的方法是addMouseMotionListener()
处理事件源发生的事件的接口是MouseMotionListener 接口中有如下的方法
mouseDragged() 负责处理鼠标拖动事件
mouseMoved() 负责处理鼠标移动事件
3、控制鼠标的指针形状
setCursor(Cursor.getPreddfinedCursor(Cursor.鼠标形状定义)) 鼠标形状定义见(书 P 210)
4、键盘事件
键盘事件源使用addKeyListener 方法获得监视器
键盘事件的接口是KeyListener 接口中有3个方法
public void keyPressed(KeyEvent e) 按下键盘按键
public void keyReleased(KeyEvent e) 释放键盘按键
public void keyTypde(KeyEvent e) 按下又释放键盘按键


package mouseenvent;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Mouse extends JFrame implements MouseListener{
    JPanel jp = new JPanel();
    JLabel statusbar = new JLabel();
    static final long serialVersionUID=0;
public Mouse(){
     setTitle("Mouse Event");
     getContentPane().add(jp,BorderLayout.CENTER);
     getContentPane().add(statusbar, BorderLayout.SOUTH);
     jp.addMouseListener(this);
     
}

public static void main(String[] args){
     Mouse frame = new Mouse();
     frame.setSize(500,500);
     frame.setVisible(true);
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public void mousePressed(MouseEvent e){
     int x = e.getX();
     int y = e.getY();
     String s = "鼠标在坐标"+"("+x+","+y+")"+"处按下";
     statusbar.setText(s);
     }

public void mouseReleased(MouseEvent e){
     int x = e.getX();
     int y = e.getY();
     String s = "鼠标在坐标"+"("+x+","+y+")"+"处释放";
     statusbar.setText(s);
}

public void mouseClicked(MouseEvent e){
     int x = e.getX();
     int y = e.getY();
     String s = "鼠标在坐标"+"("+x+","+y+")"+"处点击";
     statusbar.setText(s);
}

public void mouseEntered(MouseEvent e){
     int x = e.getX();
     int y = e.getY();
     String s = "鼠标在坐标"+"("+x+","+y+")"+"处进入";
     statusbar.setText(s);
}

public void mouseExited(MouseEvent e){
     int x = e.getX();
     int y = e.getY();
     String s = "鼠标在坐标"+"("+x+","+y+")"+"处离开";
     statusbar.setText(s);
}
}
package mouseenvent;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class MouseMotion extends JFrame implements MouseMotionListener{
    static final long serialVersionUID=0;
    JLabel bar = new JLabel();
    JTextField text = new JTextField();
    public MouseMotion(){
         setTitle("Mouse Event");
         getContentPane().add(text,BorderLayout.NORTH);
         getContentPane().add(bar, BorderLayout.SOUTH);
         addMouseMotionListener(this);
    }
    public void mousePressed(MouseEvent e){
        int x = e.getX();
        int y = e.getY();
        String s = "x = "+x+"y = "+y;
        bar.setText(s);
        text.setText(s);
    }
    public void mouseDragged(MouseEvent e){
        int x = e.getX();
        int y = e.getY();
        String s = "x = "+x+" y = "+y;
        bar.setText(s);
        text.setText(s);
    }
    public void mouseMoved(MouseEvent e){
        int x = e.getX();
        int y = e.getY();
        String s = "x = "+x+" y = "+y;
        bar.setText(s);
        text.setText(s);
    }
    public static void main(String args[])throws Exception{
        MouseMotion mouse = new MouseMotion();
        mouse.setSize(500,500);
        mouse.setVisible(true);
        mouse.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}
package mouseenvent;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
public class Key extends JFrame implements KeyListener{
    JLabel bar ;
    public Key(){
        bar = new JLabel();
        getContentPane().add(bar,BorderLayout.CENTER);
        addKeyListener(this);
    }
    public void keyPressed(KeyEvent e){
        char c = e.getKeyChar();
        String s = c+"" ;
        bar.setText(s);
    }
    public void keyReleased(KeyEvent e){
        char c = e.getKeyChar();
    }
    public void keyTyped(KeyEvent e){
        char c = e.getKeyChar();
    }
    public static void main(String args[])throws Exception{
        Key key = new Key();
        key.setSize(500,500);
        key.setVisible(true);
        key.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }
}


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/80678/showart_2140170.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP