一、设计思路
1、 通过Lambda表达式作为面板对象的监听器,同时向面板对象pane注册。
pane.setOnMousePressed(e->handleMousePressed(e)); pane.setOnMouseDragged(e->handleMouseDragged(e));
2、通过以下函数进行坐标设计
handleMousePressed(MouseEvent e) //方法获取鼠标的位置,
handleMouseDragged(MouseEvent e) //放取得鼠标拖动的的坐标
Line line = new Line(x1,y1,x2,y2); //画直线
pane.getChildren().add(line); //将直线添加到面板中
x1 = x2;y1 = y2; //更改直线的起点,x和y坐标
二、代码
package HUITU;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.shape.Line;
import javafx.scene.layout.Pane;
import javafx.scene.input.MouseEvent;
import javafx.event.EventHandler;
public class APP extends Application{
double x1,y1,x2,y2;
Pane pane = new Pane();
@Override
public void start(Stage stage){
pane.setOnMousePressed(e->handleMousePressed(e));
pane.setOnMouseDragged(e->handleMouseDragged(e));
Scene scene = new Scene(pane,800,700);
stage.setTitle("鼠标拖动绘图");
stage.setScene(scene);
stage.show();
}
protected void handleMousePressed(MouseEvent e){
x1=e.getX();
y1=e.getY();
}
protected void handleMouseDragged(MouseEvent e){
x2 = e.getSceneX();
y2 = e.getScreenY();
Line line = new Line(x1,y1,x2,y2);
pane.getChildren().add(line);
x1 = x2;y1 = y2;
}
}
三、画图(图虽然丑,只是随便画一个为了演示,不喜勿喷哈)