if (shouldDraw = !shouldDraw)
Это не делает if(shouldDraw != shoundDraw)
.Я думаю, это то, что вас смущает.Вместо этого он делает отрицание на shouldDraw
и проверяет, каков был результат.
Итак, функциональность такова, что если shouldDraw
когда-либо false
входил в это условие, он будет установлен вtrue
, и блок if
будет выполнен.Если shouldDraw
перешел в условие как истинное, оно будет отменено, и будет выполнен блок else.
Это будет по существу переключать shouldDraw
между true
и false
при каждом выполненииActionListener
, который заставит курсор мигать.