Как добавить обработчик нажатия мыши?
Добавлено: 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();
}
}