要实现橡皮筋效果,可以使用JavaFX的Canvas和MouseEvent来实现。下面是一个示例代码:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class RubberBandEffect extends Application {
private double startX, startY, endX, endY;
private boolean isDrawing;
@Override
public void start(Stage primaryStage) {
Canvas canvas = new Canvas(400, 400);
GraphicsContext gc = canvas.getGraphicsContext2D();
Pane root = new Pane(canvas);
canvas.setOnMousePressed(event -> {
startX = event.getX();
startY = event.getY();
isDrawing = true;
});
canvas.setOnMouseDragged(event -> {
if (isDrawing) {
endX = event.getX();
endY = event.getY();
redraw(gc);
}
});
canvas.setOnMouseReleased(event -> {
isDrawing = false;
});
Scene scene = new Scene(root, 400, 400);
primaryStage.setScene(scene);
primaryStage.show();
}
private void redraw(GraphicsContext gc) {
gc.clearRect(0, 0, gc.getCanvas().getWidth(), gc.getCanvas().getHeight());
gc.setStroke(Color.BLACK);
gc.setLineWidth(1);
gc.strokeRect(startX, startY, endX - startX, endY - startY);
gc.setFill(Color.LIGHTGRAY);
gc.fillRect(startX, startY, endX - startX, endY - startY);
}
public static void main(String[] args) {
launch(args);
}
}
在这个示例中,我们使用Canvas来绘制矩形,当鼠标按下时记录起始点坐标,鼠标拖动时更新终点坐标并重新绘制矩形,鼠标释放时停止绘制。通过清除画布并重新绘制矩形来实现橡皮筋效果。