Обработка событий мыши - Java (241258)

Узнай цену своей работы

Формулировка задачи:

Подскажите, как правильно реализовать слушатель мышь в данном примере. После запуска появляется окно с тележкой, которая двигается от одно края к другому. Нужно чтобы по щелчку мышь тележка меняла направление.
Листинг программы
  1. package test;
  2. import java.applet.*;
  3. import java.awt.*;
  4. public class timer extends java.applet.Applet implements Runnable{
  5. //Описания
  6. volatile Thread mult = null; //поток для анимации
  7. int x; //координата
  8. //============ Динамика аплета ============//
  9. public void start(){
  10. mult = new Thread(this);
  11. mult.start(); //создать поток
  12. }
  13. public void run(){ //работа потока — анимация
  14. int h = 1; //шаг по координате x
  15. Thread threadCopy = Thread.currentThread(); //"запомнить" поток
  16. while (mult == threadCopy) //проверка отсутствия признака его остановки
  17. //изменение картинки
  18. {if (x == 150) h = -1; if (x == 10) h = 1;
  19. x = x + h;
  20. repaint(); //отобразить изменения в окне аплета
  21. //ожидание; в sleep() задается его время в мсек.
  22. try {mult.sleep(20);} catch(InterruptedException e) {}
  23. }
  24. }
  25. public synchronized void stop(){
  26. mult = null; //остановить работу потока
  27. notify();
  28. }
  29. //====== Рисование ======
  30. public void paint(Graphics g){
  31. g.drawLine(0,45,220,45); //рисуем поверхность
  32. g.drawOval(x,35,10,10); //рисуем заднее колесо
  33. g.drawOval(x+30,35,10,10); //рисуем переднее колесо
  34. g.drawRect(x-5,25,50,10); //рисуем корпус
  35. }
  36. }

Решение задачи: «Обработка событий мыши»

textual
Листинг программы
  1. package test;
  2. import com.sun.java.swing.plaf.motif.MotifButtonListener;
  3.  
  4. import java.applet.*;
  5. import java.awt.*;
  6. import java.awt.event.MouseEvent;
  7. import java.awt.event.MouseListener;
  8.  
  9. public class timer extends java.applet.Applet implements Runnable{
  10.     //Описания
  11.     volatile Thread mult = null; //поток для анимации
  12.     int x; //координата
  13.     int h; //шаг по координате x
  14.  
  15.     //============ Динамика аплета ============//
  16.  
  17.     public void start(){
  18.  
  19.         mult = new Thread(this);
  20.         mult.start(); //создать поток
  21.  
  22.     }
  23.  
  24.     public void run(){ //работа потока — анимация
  25.  
  26.         h = 1;
  27.         Thread threadCopy = Thread.currentThread(); //"запомнить" поток
  28.         addMouseListener(new MouseListener() {
  29.             @Override
  30.             public void mouseClicked(MouseEvent e) {
  31.                 if (h == 1) h = -1; else h = 1;
  32.             }
  33.  
  34.             @Override
  35.             public void mousePressed(MouseEvent e) {
  36.  
  37.             }
  38.  
  39.             @Override
  40.             public void mouseReleased(MouseEvent e) {
  41.  
  42.             }
  43.  
  44.             @Override
  45.             public void mouseEntered(MouseEvent e) {
  46.  
  47.             }
  48.  
  49.             @Override
  50.             public void mouseExited(MouseEvent e) {
  51.  
  52.             }
  53.         });
  54.         while (mult == threadCopy) //проверка отсутствия признака его остановки
  55.         //изменение картинки
  56.         {if (x == 150) h = -1;
  57.             if (x == 10) h = 1;
  58.             x = x + h;
  59.             repaint(); //отобразить изменения в окне аплета
  60.             //ожидание; в sleep() задается его время в мсек.
  61.             try {mult.sleep(20);} catch(InterruptedException e) {}
  62.         }
  63.     }
  64.  
  65.     @Override
  66.     public synchronized void addMouseListener(MouseListener l) {
  67.         super.addMouseListener(l);
  68.     }
  69.  
  70.     public synchronized void stop(){
  71.         mult = null; //остановить работу потока
  72.         notify();
  73.     }
  74.  
  75.     //====== Рисование ======
  76.  
  77.     public void paint(Graphics g){
  78.  
  79.         g.drawLine(0,45,220,45); //рисуем поверхность
  80.         g.drawOval(x,35,10,10); //рисуем заднее колесо
  81.         g.drawOval(x+30,35,10,10); //рисуем переднее колесо
  82.         g.drawRect(x-5,25,50,10); //рисуем корпус
  83.     }
  84. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.75 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут