簡體   English   中英

同時注冊MouseListener和MouseMotionListener

[英]Register MouseListener and MouseMotionListener simultaneously

我正在嘗試編寫一個包含mousePressed()mouseMoved()Mouse類(實現MouseListenerMouseMotionListener mouseMoved() 我希望能夠在鼠標按下時檢測到鼠標的運動。 我可以分別檢測每個,但不能同時檢測。 例如:

import javax.swing.*;
import java.awt.event.*;
public class Test extends JPanel {
  public Test() {
     Mouse m = new Mouse();
     addMouseListener(m);
     addMouseMotionListener(m);
  }
  class Mouse implements MouseListener, MouseMotionListener{
     public void mousePressed(MouseEvent e) {
        System.out.println("Pressed");
     }
     public void mouseMoved(MouseEvent e) {
        System.out.println("Moved");
     }
     public void mouseDragged(MouseEvent e) {}
     public void mouseClicked(MouseEvent e) {}
     public void mouseEntered(MouseEvent e) {}
     public void mouseExited(MouseEvent e) {}
     public void mouseReleased(MouseEvent e) {}
   }
   public static void main(String[] args) {
     JFrame frame = new JFrame();
     frame.setSize(500, 500);
     frame.setLocationRelativeTo(null);
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     frame.setContentPane(new Test());
     frame.setVisible(true);
   }
}

如您所見,“ Pressed”和“ Moved”都被打印出來,但是一旦按下鼠標,在釋放鼠標之前就不會打印“ Moved”。 我將如何做到這一點呢?

通過Java API:

void mouseDragged(MouseEvent e)

在組件上按下鼠標鍵並拖動時調用。

void mouseMoved(MouseEvent e)

當鼠標光標移至組件上但未按下任何按鈕時調用。

僅在未按下任何按鈕時才觸發mouseMoved事件。

如您所見,“ Pressed”和“ Moved”都被打印出來,但是一旦按下鼠標,在釋放鼠標之前就不會打印“ Moved”。

當按下鼠標時,您需要處理的事件是mouseDragged事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM