在我的JavaFX项目中,我必须使用MouseEvent绘制基本行,我选择使用Polyline进行绘制,但它不能正常工作。无法找到问题,这里是MouseEvent代码:
if (event.getButton() == MouseButton.SECONDARY) {
Polyline line = new Polyline();
main.getChildren().add(line);
line.getPoints().add(event.getX());
line.getPoints().add(event.getY());
line.setScaleX(0);
line.setScaleY(0);
line.setStroke(Color.CORAL);
line.setStrokeWidth(4);
} else if (event.getEventType() == MouseEvent.MOUSE_DRAGGED) {
if (event.getButton() == MouseButton.SECONDARY) {
Polyline line = new Polyline();
for (Node s: main.getChildren()) {
if (s instanceof Polyline) {
line.getPoints().add(event.getX());
line.getPoints().add(event.getY());
}
}
main.getChildren().add(line);
}
}
答案 0 :(得分:1)
它无法工作,因为每次调用鼠标事件时都会创建一个新的PolyLine对象。您需要在开头创建一个PolyLine,并将所有点添加到此PolyLine。使用您的代码,每个点都是一个新的PolyLine。顺便说一句。我不确定添加x和y坐标是否合适,请尝试使用:
line.getPoints().addAll(event.getX(),event.getY());
希望这会有所帮助:)