【发布时间】:2019-10-25 07:49:19
【问题描述】:
我正在尝试将事件处理程序添加到画布,当条件满足时它会自行移除。
我尝试这样做,但我收到一条错误消息,提示变量可能尚未初始化。
EventHandler<MouseEvent> canvasHandler = e -> {
double x = e.getX();
double y = e.getY();
boolean last = false;
if (Math.abs(x - lastX) < 20f) x = lastX;
if (Math.abs(y - lastY) < 20f) y = lastY;
if (points.size() > 2) {
if (Math.abs(x - points.get(0).getKey()) < 20f && Math.abs(y - points.get(0).getValue()) < 20f) {
x = points.get(0).getKey();
y = points.get(0).getValue();
last = true;
}
}
points.add(new Pair<Double, Double>(x, y));
lastX = x;
lastY = y;
gc.lineTo(x, y);
if (!last)
gc.strokeOval(x - 5f, y - 5f, 10f, 10f);
else
canvas.removeEventHandler(MouseEvent.MOUSE_CLICKED, canvasHandler);
gc.stroke();
};
canvas.addEventHandler(MouseEvent.MOUSE_CLICKED, canvasHandler);
【问题讨论】:
标签: javafx lambda eventhandler