Предполагая, что это действительно
GridPane.getRowIndex(token17) == middleRow
или
GridPane.getColumnIndex(token17) == middleCol
, вызывающее проблему:
GridPane.getRowIndex
и GridPane.getColumnIndex
возвращают тип ссылки Integer
.Для Node
s, которым не присвоен индекс строки / столбца, возвращается null
.Тем не менее, эти узлы могут быть потомками GridPane
, если использовать строку / столбец по умолчанию 0
.
Использование операнда Integer
и int
для ==
приводит к тому же байт-коду, что иявный вызов метода intValue()
для значения Integer
.Вызов этого метода для null
приводит к полученному исключению.
else if (GridPane.getRowIndex(token17).intValue() == middleRow
&& GridPane.getColumnIndex(token17).intValue() == middleCol) {
...
}
Использование следующего метода для преобразования Integer
в int
должно решить проблему:
public static int toIndex(Integer value) {
return value == null ? 0 : value.intValue();
}
else if (toIndex(GridPane.getRowIndex(token17)) == middleRow
&& toIndex(GridPane.getColumnIndex(token17)) == middleCol) {
...
}