Как добавить обработчик нажатия мыши?

Модератор: Absurd

Ответить
andruxa
Сообщения: 7
Зарегистрирован: 10 дек 2013, 16:36

03 янв 2014, 10:48

Всем привет. Есть программа которая берёт автоматически точку в заданой области и кликает по ней, и как только движущая точка станет на эти координаты то мы получаем новую точку и так бесконечно.Нужно чтоб когда рандомом было задано координаты движения, можна было б их изменить с помощю нажатия кнопки мыши на новую точку. Подскажте начинающему как добавить 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();
	    }
	}
Ответить