2016-06-11 3 views
-1

Я пытаюсь написать Mouse класс (реализующий MouseListener и MouseMotionListener), содержащий mousePressed() и mouseMoved(). Я хочу, чтобы можно было обнаружить движение мыши, пока мышь не работает. Я могу обнаружить каждый отдельно, но не в одно и то же время. Например:Регистрация MouseListener и MouseMotionListener одновременно

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); 
    } 
} 

Как вы должны видеть, «прессованная» и «Перемещенные» оба распечатаны, но после того, как мыши нажата, «Перемещенные» не печатается, пока мышь не будет отпущена. Как бы я сделал это так, чтобы он это сделал?

ответ

4

From the Java API:

недействительный mouseDragged (MouseEvent е)

Вызывается, когда нажата кнопка мыши на компоненте, а затем вытащила.

недействительным mouseMoved (MouseEvent е)

Вызывается, когда курсор мыши был перемещен на компонент, но ни одна из кнопок не была нажата.

mouseMoved События запускаются только при нажатии кнопок.

+0

Ничего себе, сейчас я чувствую себя немым. Благодаря! – RobotKarel314

+1

@ RobotKarel314 Я писал код Java почти десять лет, и я все равно поднимаю соответствующие страницы API каждый раз, когда начинаю работать над чем-то новым. Научитесь любить документацию. Это удивительно легко читать и часто ссылается на примеры. – 1279343

2

Как вы увидите, «Нажатые» и «Перемещенные» распечатываются, но после нажатия мыши «Перемещено» не печатается до тех пор, пока мышь не будет отпущена.

При нажатии мыши событие, которое необходимо обработать, - это событие mouseDragged.

+0

Господи, я помог вам в нескольких вопросах в прошлом, и я сначала ответил на этот вопрос, и я даже не получил благодарности. Удачи вам в будущих вопросах. – camickr

Смежные вопросы