Попробуйте:
public void mouseDragged(MouseEvent e)
{
mosX = e.getX();
mosY = e.getY();
repaint();
}
Проблема заключалась в том, что вы не обновляли свои координаты для события mouseDragged
.Также вместо того, чтобы звонить paint()
напрямую, вы должны позвонить repaint()
.Вызов repaint()
обеспечит автоматический вызов paint()
.
EDIT:
Чтобы нарисовать объект Canvas, переопределите paint()
объекта Canvas
.
myCanvas = new Canvas()
{
public void paint(Graphics g)
{
g.setColor(Color.green);
g.fillOval(mosX, mosY, 30, 30);
}
};
Теперь ваш метод mouseDragged становится следующим:
public void mouseDragged(MouseEvent e)
{
mosX = e.getX();
mosY = e.getY();
myCanvas.repaint();
}