Массовый обработчик событий - Java
Формулировка задачи:
Всем привет. Может кто ни будь знает как создать "Массовый обработчик событий", или что-то типа того или подскажет как еще решить проблему.
У меня есть сетка GridPane 10*10 заполнена Label(на морской бой), и я хочу обработать все нажатия на метки одним обработчиком а не создавать 100. (или не одним, но группу меток!)
Спасибо
Решение задачи: «Массовый обработчик событий»
textual
Листинг программы
main_pane.my_map.elementAt(39).setOnMouseClicked(ae -> main_pane.my_map.elementAt(39).setText("AA"));
main_pane.my_map.elementAt(35).setOnMouseClicked(ae -> main_pane.my_map.elementAt(35).setText("AA"));
for(index =0; index<100; index++) {
main_pane.my_map.elementAt(index).setOnMousePressed(ae -> main_pane.my_map.elementAt(index).setText(""+index));
if(index == 36 || index == 37 || index == 38)
{ main_pane.my_map.elementAt(index).setOnMousePressed(ae -> main_pane.my_map.elementAt(index).setStyle("-fx-background-color: blue;"));
main_pane.my_map.elementAt(index).setText(""+index);
main_pane.my_map.elementAt(36).setText("36");
}
else {
main_pane.my_map.elementAt(4).setOnMousePressed(ae -> main_pane.my_map.elementAt(4).setText("EL"));
main_pane.my_map.elementAt(5).setOnMousePressed(ae -> main_pane.my_map.elementAt(5).setText("EL2"));
main_pane.my_map.elementAt(32).setText("32");
main_pane.my_map.elementAt(index).setText(""+index);
main_pane.my_map.elementAt(31).setText(""+index);
}
if(index ==32) {
main_pane.my_map.elementAt(36).setText("36");
main_pane.my_map.elementAt(37).setOnMousePressed(ae -> main_pane.my_map.elementAt(37).setText("37"));
}
switch(index) {
case 40 : main_pane.my_map.elementAt(index).setOnMousePressed(ae -> main_pane.my_map.elementAt(index).setStyle("-fx-background-color: blue;")); break;
case 41 : main_pane.my_map.elementAt(index).setOnMousePressed(ae -> main_pane.my_map.elementAt(index).setStyle("-fx-background-color: blue;")); break;
case 42 : main_pane.my_map.elementAt(index).setOnMousePressed(ae -> main_pane.my_map.elementAt(index).setStyle("-fx-background-color: blue;")); break;
default : main_pane.my_map.elementAt(3).setOnMousePressed(ae -> main_pane.my_map.elementAt(3).setText("def"));
}
main_pane.my_map.elementAt(38).setOnMousePressed(ae -> main_pane.my_map.elementAt(38).setStyle("-fx-background-color: red;")); break;
}
main_pane.my_map.elementAt(34).setOnMousePressed(ae -> main_pane.my_map.elementAt(34).setStyle("-fx-background-color: gray;"));