MouseMotion и MouseMotionListener не работают - PullRequest
0 голосов
/ 01 февраля 2012

ОК, поэтому я делал абсолютно нормальное приложение и у меня были проблемы с MouseMotion и MouseMotionListener: они вообще не вызывались в моем Canvas. Я думал, что это было чем-то, что я добавил Canvas в кадр, но я создал эту тестовую программу и был очень удивлен:

import java.applet.Applet;
import java.awt.event.MouseMotionListener;
import java.awt.event.MouseEvent;

import java.awt.Graphics;

public class testapp extends Applet implements MouseMotionListener {
    int x = 40;
    public void mouseMoved(MouseEvent e) {
        showStatus("mouse moved");
    }
    public void mouseDragged(MouseEvent e) {
        showStatus("mouse dragged");
        x++;
        repaint();
    }

    public void paint(Graphics g) {
        g.drawString("Hello World!", 40, x);   //x SHOULD move it down! ugh...
    }
}

Итак, я запустил это, используя замечательный BlueJ runlet для апплетов, и x не увеличивается, когда я нажимаю и тащу свою мышь! То же самое происходит, когда я реализую MouseListener и пытаюсь увеличить переменную внутри одного из реализованных методов.

Должен ли я перезагрузить компьютер? Моя версия JDK не работает? (У меня Java 7 на случай, если это известная ошибка)

Прямо сейчас, я очень запутался, и у меня есть задание, для которого нужны методы, чтобы работать завтра, поэтому любая помощь очень ценится. Спасибо!

Ответы [ 2 ]

2 голосов
/ 01 февраля 2012

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

   public void init(){
        addMouseMotionListener(this);   
   }
2 голосов
/ 01 февраля 2012

Вы не можете просто реализовать Слушатель. Вы также должны зарегистрировать его. Ваш Апплет действительно не знает, что MouseListener даже существует на данный момент.

Так как это домашняя работа, пожалуйста, просмотрите http://docs.oracle.com/javase/tutorial/uiswing/events/mouselistener.html.

...