Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Как добавить обработчик нажатия мыши?


Автор: andruxai 3.1.2014, 09:45
Всем привет.  Есть программа которая берёт автоматически точку в заданой области и кликает по ней, и как только движущая точка станет на эти координаты то мы получаем новую точку и так бесконечно.Нужно чтоб когда рандомом было задано координаты движения, можна было б их изменить с помощю нажатия кнопки мыши на новую точку. Подскажте начинающему как добавить MouseListener чтоб переменным xr и yr передавались значения координат нажатия мыши.
Код программы:
Код

import java.awt.AWTException;
import java.awt.Color;
import java.awt.Container;
import java.awt.Point;
import java.awt.Robot;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.event.MouseEvent;

class Zoro{
    
    Robot r;
    Point pkon;
    public int getx(){return xr;}
    public int gety(){return yr;}
    public int setx(int w){xr=w;return xr;}
    public int sety(int w){yr=w;return yr;}
    int k1=0;
    int k=0;
   int xr=0;int yr=0;
    int amin=828;int amax=995;int bmin=599;int bmax=690;
    public void zoro(){
     try {
            r = new Robot();
        } catch (AWTException ex) {
        }
     
     xr=((int)(Math.random()*(amax-amin+1)+amin));
     yr=((int)(Math.random()*(bmax-bmin+1)+bmin));
     r.mouseMove(xr, yr);
     r.mousePress(InputEvent.BUTTON1_MASK);
     r.mouseRelease(InputEvent.BUTTON1_MASK);
     pkon=new Point(xr,yr);
     System.out.println(pkon);
     k++;
     System.out.println(k);
    }
} 
 class myFrame extends JFrame {
    
     int x=0;int y=0;
     Point poin;
     Point p;
     
     Zoro m= new Zoro();
        public myFrame() {
            setTitle("Test");
            JPanel panel = new JPanel();
            final JButton bt1 = new JButton("Start");
            panel.add(bt1);
            bt1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
     
                    System.out.println("Start");
                    new Thread(new Runnable() {
                        @Override
                        public void run() {
                            m.zoro();
                           for(;;){ Color col = new Color(90, 90, 90);
                             for (int i =824; i <= 997; i++) {
                                     Color c1 = m.r.getPixelColor(i, 595);
                                     if (c1.equals(col)) {x=i;}}
                             for (int j =594; j < 700; j++) {
                                     Color c1 = m.r.getPixelColor(823, j);
                                     if (c1.equals(col)) {y=j; 
                                     p=new Point(x,y);
                                     if((x==m.getx())&(y==m.gety())/*p.equals(m.pkon)*/) m.zoro();
                                     }}
                                     
                            }
                           }}).start();
                }
            });
            Container pane = getContentPane();
            pane.add(panel);
            
            pack();
        }
    }
     
    public class MiniMap {
        public static void main(String[] args) {
            myFrame frame = new myFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.show();
        }
    }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)