Обработка событий мыши - Java (241258)
Формулировка задачи:
Подскажите, как правильно реализовать слушатель мышь в данном примере. После запуска появляется окно с тележкой, которая двигается от одно края к другому. Нужно чтобы по щелчку мышь тележка меняла направление.
package test; import java.applet.*; import java.awt.*; public class timer extends java.applet.Applet implements Runnable{ //Описания volatile Thread mult = null; //поток для анимации int x; //координата //============ Динамика аплета ============// public void start(){ mult = new Thread(this); mult.start(); //создать поток } public void run(){ //работа потока — анимация int h = 1; //шаг по координате x Thread threadCopy = Thread.currentThread(); //"запомнить" поток while (mult == threadCopy) //проверка отсутствия признака его остановки //изменение картинки {if (x == 150) h = -1; if (x == 10) h = 1; x = x + h; repaint(); //отобразить изменения в окне аплета //ожидание; в sleep() задается его время в мсек. try {mult.sleep(20);} catch(InterruptedException e) {} } } public synchronized void stop(){ mult = null; //остановить работу потока notify(); } //====== Рисование ====== public void paint(Graphics g){ g.drawLine(0,45,220,45); //рисуем поверхность g.drawOval(x,35,10,10); //рисуем заднее колесо g.drawOval(x+30,35,10,10); //рисуем переднее колесо g.drawRect(x-5,25,50,10); //рисуем корпус } }
Решение задачи: «Обработка событий мыши»
textual
Листинг программы
package test; import com.sun.java.swing.plaf.motif.MotifButtonListener; import java.applet.*; import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; public class timer extends java.applet.Applet implements Runnable{ //Описания volatile Thread mult = null; //поток для анимации int x; //координата int h; //шаг по координате x //============ Динамика аплета ============// public void start(){ mult = new Thread(this); mult.start(); //создать поток } public void run(){ //работа потока — анимация h = 1; Thread threadCopy = Thread.currentThread(); //"запомнить" поток addMouseListener(new MouseListener() { @Override public void mouseClicked(MouseEvent e) { if (h == 1) h = -1; else h = 1; } @Override public void mousePressed(MouseEvent e) { } @Override public void mouseReleased(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseExited(MouseEvent e) { } }); while (mult == threadCopy) //проверка отсутствия признака его остановки //изменение картинки {if (x == 150) h = -1; if (x == 10) h = 1; x = x + h; repaint(); //отобразить изменения в окне аплета //ожидание; в sleep() задается его время в мсек. try {mult.sleep(20);} catch(InterruptedException e) {} } } @Override public synchronized void addMouseListener(MouseListener l) { super.addMouseListener(l); } public synchronized void stop(){ mult = null; //остановить работу потока notify(); } //====== Рисование ====== public void paint(Graphics g){ g.drawLine(0,45,220,45); //рисуем поверхность g.drawOval(x,35,10,10); //рисуем заднее колесо g.drawOval(x+30,35,10,10); //рисуем переднее колесо g.drawRect(x-5,25,50,10); //рисуем корпус } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д