所以我有一个Java程序将屏幕分成8x8网格,从a1 - > H8。该程序采用2个字母输入,例如,如果我键入a1,则鼠标应单击a1的位置。我有两个问题
1)我想知道,我实际上是否必须这样做:
if(input == a1) //点击a1的位置
64次?或者有更好的方法吗?
2)我应该用什么来实际点击鼠标?有没有办法点击一个位置而不实际移动鼠标?
答案 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);
通过以正确的方式成功循环上述内容,您将保存逐个添加每个网格参考。