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);
}
}
[火星人 ] Java獲取窗口滑鼠坐標以及鍵盤按鍵已經有4026次圍觀