从String获取输入以模拟鼠标单击

时间:2013-10-10 07:02:54

标签: java

所以我有一个Java程序将屏幕分成8x8网格,从a1 - > H8。该程序采用2个字母输入,例如,如果我键入a1,则鼠标应单击a1的位置。我有两个问题

1)我想知道,我实际上是否必须这样做:

if(input == a1) //点击a1的位置

64次?或者有更好的方法吗?

2)我应该用什么来实际点击鼠标?有没有办法点击一个位置而不实际移动鼠标?

3 个答案:

答案 0 :(得分:0)

使用awt.Robot类来模拟点击。

答案 1 :(得分:0)

回答问题1。

您可以使用ArrayList来存储a1 to h8的所有值。

然后你可以编写一个if条件进行检查。

ArrayList<String> list = new ArrayList<String>();
list.add("a1");
list.add("a2");
list.add("a3");
list.add("a4");
String input ="a1";     
if(list.contains(input))
    //click location of a1
else
    //else part

另一种方法是使用Array

String[] arr = new String[]{"a1","a2","a3","a4"};
for(int i=0;i<arr.length;i++)
{
    if(arr[i]!=null && arr[i].equals(input))
        //click location of a1
}

答案 2 :(得分:0)

首先:

The program is to take a 2 letter input,

你的程序需要一个字母和一个数字而不是两个字母,你需要小心你如何说出这样的事情,因为它可能影响某人试图处理解决方案的方式,尽管没有大事 :)

其次:不知道这是否是最佳方式,但你可能会创建网格方块名称(a1,a2,a3等)的ArrayList,然后当你收到用户的输入迭代列表直到输入匹配ArrayList中的一个条目,一旦找到,就可以使用robot来创建单击,或者手动将onClickEvent激活给一个监听器。如果在列表中找不到与用户输入匹配的条目,则返回引用无效引用的错误。

另外,为了避免一次一个地手动输入每个网格对数组的引用,尝试使用char ASCII值,并循环创建列表,类似于下面:

    char c = 97;
    char n = 49;
    String s = Character.toString(c) + Character.toString(n);
    System.out.println(s);

    myArrray.add(s);

通过以正确的方式成功循环上述内容,您将保存逐个添加每个网格参考。