0

所以我有一个 Java 程序,它把屏幕分成一个 8x8 的网格,从 a1 -> h8。该程序是采用 2 个字母的输入,例如,如果我输入 a1,那么鼠标应该在 a1 的位置单击。我有 2 个问题

1)我想知道,我真的必须这样做:

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

64次?还是有更好的方法?

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

4

3 回答 3

0

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

于 2013-10-10T07:06:22.140 回答
0

回答你问题1。

您可以使用ArrayListwhich 将存储来自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
}
于 2013-10-10T07:25:38.727 回答
0

首先:

The program is to take a 2 letter input,

你的程序需要一个字母和一个数字,而不是两个字母,你需要小心你如何表达这样的事情,因为它可能会影响某人尝试处理解决方案的方式,但没什么大不了的:)

其次:不知道这是否是最好的方法,但是您可能会创建一个包含网格正方形名称(a1、a2、a3 等)的 ArrayList,然后当您从用户那里收到输入时,遍历列表,直到输入与中的条目匹配ArrayList,一旦找到,要么使用机器人创建点击,要么手动触发 onClickEvent 到侦听器。如果您在列表中找不到与用户输入匹配的条目,则返回引用无效引用的错误。

此外,为避免每次手动输入对数组的每个网格引用,请尝试使用 char ASCII 值并循环创建列表,类似于以下内容:

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

    myArrray.add(s);

通过以正确的方式成功循环上述内容,您将节省一一添加每个网格引用。

于 2013-10-10T07:26:27.627 回答