2013-10-10 2 views
0

Итак, у меня есть Java-программа, которая разбивает экран на сетку 8x8, начиная с a1 -> h8. Программа должна принимать 2-буквенный ввод, например, если я набираю a1, тогда мышь должна щелкнуть по местоположению a1. У меня 2 вопросаПолучение ввода от String для имитации щелчков мыши

1) Мне было интересно, я на самом деле нужно сделать это:

если (вход == a1) // нажмите местоположение a1

64 раз? Или есть лучший способ?

2) Что я должен использовать, чтобы на самом деле делать щелчки мыши? И есть ли способ щелкнуть местоположение без фактического перемещения мыши?

+0

Записать текущую позицию мыши, использовать «Робот» для перемещения и щелчка, вернуть мышь в начальную позицию? – MadProgrammer

+0

Я не получил ваш первый балл. –

+0

Я имею в виду, действительно ли мне приходится записывать инструкцию if для каждого местоположения сетки? или есть лучший способ? sry я новичок – Rolodecks

ответ

0

Во-первых:

The program is to take a 2 letter input, 

Ваша программа занимает буквы и цифры, в отличие от двух букв, вы должны быть осторожны, как вы так говорите, что это может повлиять на то, как кто-то пытается справиться с решением, а не biggy, хотя :)

Во-вторых: Не знаю, если это лучший способ, но вы могли бы создать ArrayList из ваших квадратных квадратов имен (a1, a2, a3 и т. Д.), А затем, когда вы получите вход от пользователя, итерации по списку, пока вход не будет соответствовать запись в ArrayList, когда-либо найденная либо использует робота для создания клика, либо вручную запускает onClickEvent слушателю. Если вы не найдете записи в списке, соответствующем пользовательскому вводу, тогда верните ошибку со ссылкой на недопустимую ссылку.

Кроме того, чтобы избежать ручного ввода каждой ссылки сетки на массив по одному, попробуйте использовать полукокс значение ASCII, и зацикливание, чтобы создать список, подобный ниже:

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

    myArrray.add(s); 

Успешно зацикливание выше в правильном порядке вы сохраните добавление каждой ссылки на сетку по одному.

0

использование awt.Robot класс для имитации клика.

0

Ответ на Ваш вопрос 1.

Вы можете использовать ArrayList, который будет хранить все значения от a1 to h8.

Тогда вы можете написать условие, если вы хотите проверить.

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 
} 
Смежные вопросы