也就是说如何用编程实现控制鼠标指针移动到方框(该方框就是指那些网站中输入帐户密码的方框,也或者是用于搜索的方框)中,并按下左键激活它。
是用robot类还是用swing?robot好像要知道屏幕坐标(x,y)的,我想要是屏幕的尺寸不同了,运行代码起来会不会同样可以命中那个方框。具体请回答……
谢谢大家!
是用robot类还是用swing?robot好像要知道屏幕坐标(x,y)的,我想要是屏幕的尺寸不同了,运行代码起来会不会同样可以命中那个方框。具体请回答……
谢谢大家!
robot有个方法是可以让鼠标move到具体的xy坐标的,问题是我怎么才能get那个方框的坐标呢?
要是自身程序里的组件的坐标就很容易····
2、如果是awt控件~~给你点例子可能会有用;
package processmouse;import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;public class ProcessMouse extends Applet{
//声明整形变量,用于保存鼠标位置
int iX,iY;
//声明保存坐标数据的数组
public static int[]x1 = new int[1];
public static int[]x2 = new int[1];
public static int[]y1 = new int[1];
public static int[]y2 = new int[1];
//声明字符串变量,用于说明鼠标动作
String strMsg,strPosition;
boolean ifClick = false;
boolean ifReleased = true;
Image img;
int index=0;
//Applet的初始化方法
public void init(){
img = getImage(getCodeBase(),"pic/s_656813.jpg");
strMsg = "";
strPosition = "";
//激活鼠标事件
enableEvents(AWTEvent.MOUSE_EVENT_MASK);
//下面的语句为激活鼠标移动事件
enableEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK);
}
//处理鼠标事件
public void processMouseEvent(MouseEvent e){
//点击鼠标按钮
if(e.getID()==e.MOUSE_CLICKED){
strMsg = "鼠标被点击!";
iX = e.getX();
iY = e.getY();
index++;
ifClick = true;
repaint();
}
//鼠标键被按下
if(e.getID()==e.MOUSE_PRESSED){
strMsg = "鼠标被按下!";
iX = e.getX();
iY = e.getY();
ifClick = true;
ifReleased = false;
ArrayBusiness ab = new ArrayBusiness();
x1 = ab.addElement(x1,e.getX());
y1 = ab.addElement(y1,e.getY());
repaint();
}
//鼠标被释放
if(e.getID()==e.MOUSE_RELEASED){
strMsg = "鼠标被释放!";
iX = e.getX();
iY = e.getY();
ArrayBusiness ab = new ArrayBusiness();
x2 = ab.addElement(x2,e.getX());
y2 = ab.addElement(y2,e.getY());
ifReleased = true;
repaint();
}
//鼠标进入Applet
if(e.getID()==e.MOUSE_ENTERED){
strMsg = "鼠标已进入!";
iX = e.getX();
iY = e.getY();
//repaint();
}
//鼠标移出Applet
if(e.getID()==e.MOUSE_EXITED){
strMsg = "鼠标已移出!";
iX = e.getX();
iY = e.getY();
//repaint();
}
}
//处理鼠标移动事件
public void processMouseMotionEvent(MouseEvent e){
//按住鼠标键,拖动鼠标
if(e.getID()==e.MOUSE_DRAGGED){
strMsg = "鼠标被拖拽!";
iX = e.getX();
iY = e.getY();
//repaint();
}
//鼠标移动
if(e.getID()==e.MOUSE_MOVED){
strMsg = "鼠标被移动!";
iX = e.getX();
iY = e.getY();
//repaint();
}
}
public void paint(Graphics g){
strPosition = "位置在:x="+iX+" y="+iY;
//g.setFont(new Font("TimesRoman",Font.PLAIN,18));
g.drawString(strMsg+" "+strPosition,10,50);
//g.drawString(strPosition,iX,iY);
//g.drawImage(img,iX,iY,100,100,this);
if(ifClick&&ifReleased){
for(int i = 0; i < x1.length; i++){
if(y2[i] > y1[i]&&x2[i] > x1[i]) {
g.draw3DRect(x1[i],y1[i],Math.abs(x2[i]-x1[i]),Math.abs(y2[i]-y1[i]),true);
}
if(y2[i] > y1[i]&&x2[i] < x1[i]) {
g.draw3DRect(x2[i],y1[i],Math.abs(x2[i]-x1[i]),Math.abs(y2[i]-y1[i]),true);
}
if(y2[i] < y1[i]&&x1[i] < x2[i]) {
g.draw3DRect(x1[i],y2[i],Math.abs(x2[i]-x1[i]),Math.abs(y2[i]-y1[i]),true);
}
if(y2[i] < y1[i]&&x1[i] > x2[i]) {
g.draw3DRect(x2[i],y2[i],Math.abs(x2[i]-x1[i]),Math.abs(y2[i]-y1[i]),true);
}
}
}
}
}