java 监听桌面鼠标事件,鼠标事件的监听和使用
鼠標操作是圖形操作系統最常用操作,用戶使用鼠標單擊,雙擊,右擊,拖動等操作實現與軟件的交互。 鼠標事件監聽器 鼠標事件監聽器由MouseListener接口和MouseMotionListener接口定義,分別定義鼠標捕獲不同的鼠標操作方法。 MouseListener監聽器方法說明 mouseClicked(MouseEvent e) 處理鼠標單擊事件方法
mouseEntered(MouseEvent e) 鼠標進入組件區域時執行方法 mouseExited(MouseEvent e) 鼠標離開組件區域執行方法 mousePressed(MouseEvent e) 按下鼠標按鍵時執行方法 mouseRelease(MouseEvent e) 釋放鼠標按鍵時執行方法
MouseListener監聽器的方法,基本滿足大多數程序需求。
MouseMotionListener接口定義兩個有關鼠標移動和拖動事件的處理方法。 MouseMotionListener監聽器方法說明
mouseMoved(MouseEvent e) 處理鼠標移動事件的方法 mouseDragged(MouseEvent e) 處理鼠標拖動事件的方法 鼠標事件處理 兩個鼠標事件監聽器中的方法都定義了MouseEvent類型的形參,MouseEvent類是鼠標事件類,是被監聽器捕獲的用戶操作所生成的事件對象,該實例對象包含了許多鼠標事件發生時的參數信息。例如鼠標的坐標位置,鼠標的按鍵等。
常用方法有: getButton() 返回更改了狀態的鼠標按鍵
getClickCount() 返回與此事件關聯的鼠標單擊次數
getLocationOnScreen() 返回鼠標相對于屏幕的絕對x,y坐標
getPoint() 返回事件相對于源組件的x,y坐標
translatePoint() 通過將事件坐標加上指定x,y偏移量,將事件坐標平移到新位置 以下代碼,演示了兩個接口的作用,通過讀代碼,就會理解到各自方法的作用:
import?javax.swing.*;
import?java.awt.event.*;
public?class?MyMouse?extends?JFrame?{
public?JLabel?jl?=?new?JLabel("鼠標暫無操作");
public?MyMouse()?{
setBounds(100,?100,?350,?80);
getContentPane().add("South",?jl);
addMouseListener(new?MouseListener()?{
public?void?mouseClicked(MouseEvent?arg0)?{
jl.setText("鼠標在界面中單擊了"?+?jl.getText()?+?arg0.getClickCount()
+?"次");
}
public?void?mouseEntered(MouseEvent?arg0)?{
jl.setText("鼠標進入了窗體界面");
}
public?void?mouseExited(MouseEvent?arg0)?{
jl.setText("鼠標離開了窗體界面");
}
public?void?mousePressed(MouseEvent?arg0)?{
jl.setText("鼠標在窗體界面中按下了鍵"?+?arg0.getButton());
}
public?void?mouseReleased(MouseEvent?arg0)?{
jl.setText("鼠標在窗體界面中釋放了鍵"?+?arg0.getButton());
}
});
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public?static?void?main(String[]?args)?{
MyMouse?test?=?new?MyMouse();
test.setVisible(true);
}
}
import javax.swing.*;
import java.awt.event.*;
public class MyMouse extends JFrame {
public JLabel jl = new JLabel("鼠標暫無操作");
public MyMouse() {
setBounds(100, 100, 350, 80);
getContentPane().add("South", jl);
addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent arg0) {
jl.setText("鼠標在界面中單擊了" + jl.getText() + arg0.getClickCount()
+ "次");
}
public void mouseEntered(MouseEvent arg0) {
jl.setText("鼠標進入了窗體界面");
}
public void mouseExited(MouseEvent arg0) {
jl.setText("鼠標離開了窗體界面");
}
public void mousePressed(MouseEvent arg0) {
jl.setText("鼠標在窗體界面中按下了鍵" + arg0.getButton());
}
public void mouseReleased(MouseEvent arg0) {
jl.setText("鼠標在窗體界面中釋放了鍵" + arg0.getButton());
}
});
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
MyMouse test = new MyMouse();
test.setVisible(true);
}
}
以下代碼,演示了MouseMotionListener類,組件在界面中,可以拖動:
import?javax.swing.*;
import?java.awt.FlowLayout;
import?java.awt.event.*;
public?class?MyMouse?extends?JFrame?{
public?JButton?jb?=?new?JButton("鼠標可拖動按鈕");
public?JTextField?jt?=?new?JTextField();
public?MyMouse()?{
jb.setBounds(100,?100,?330,?175);
jt.setColumns(20);
setBounds(100,?100,?350,?280);
getContentPane().setLayout(new?FlowLayout());
getContentPane().add(jb);
getContentPane().add(jt);
addMouseMotionListener(new?MouseMotionListener()?{
/**
*?處理鼠標拖動事件*?*/
public?void?mouseDragged(MouseEvent?arg0)?{
mouseMoved(arg0);
jb.setLocation(arg0.getPoint());
}
/**
*?處理鼠標移動事件*?*/
public?void?mouseMoved(MouseEvent?arg0)?{
jt.setText(arg0.getPoint().toString());
}
});
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public?static?void?main(String[]?args)?{
MyMouse?test?=?new?MyMouse();
test.setVisible(true);
}
}
import javax.swing.*;
import java.awt.FlowLayout;
import java.awt.event.*;
public class MyMouse extends JFrame {
public JButton jb = new JButton("鼠標可拖動按鈕");
public JTextField jt = new JTextField();
public MyMouse() {
jb.setBounds(100, 100, 330, 175);
jt.setColumns(20);
setBounds(100, 100, 350, 280);
getContentPane().setLayout(new FlowLayout());
getContentPane().add(jb);
getContentPane().add(jt);
addMouseMotionListener(new MouseMotionListener() {
/**
* 處理鼠標拖動事件
* */
public void mouseDragged(MouseEvent arg0) {
mouseMoved(arg0);
jb.setLocation(arg0.getPoint());
}
/**
* 處理鼠標移動事件
* */
public void mouseMoved(MouseEvent arg0) {
jt.setText(arg0.getPoint().toString());
}
});
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
MyMouse test = new MyMouse();
test.setVisible(true);
}
}
總結
以上是生活随笔為你收集整理的java 监听桌面鼠标事件,鼠标事件的监听和使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C/C++ _strupr_s 函数 –
- 下一篇: Qt下继承于QObject创建的线程