不允许在 JavaFX 中绘制按钮

Not allowing draw on button in JavaFX

我是 JavaFX 新手。

请看一下我想限制在按钮上绘图的附图。 也请建议我打印到打印机。

(在 swing 中,可以使用 PrintJob 和 Toolkit class)

下面是我的代码:

public class PrintScribble extends Application {

private short last_x = 0, last_y = 0;              // last click posistion
private Vector lines = new Vector(256, 256);        // store the scribble
private Properties printprefs = new Properties();  // store user preferences
private Path path;

@Override
public void start(Stage primaryStage) throws Exception {
    primaryStage.setTitle("PrintScribble");

    Group root = new Group();
    Scene scene = new Scene(root, 400, 400);

    BorderPane bp = new BorderPane();
    bp.setPadding(new Insets(10, 10, 10, 10));
    bp.setMinWidth(scene.getWidth());
    Button b = new Button("Print");
    bp.setRight(b);

    root.getChildren().add(bp);

    b.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent event) {
            System.out.println("Printer call");
            //print();
        }
    });

    path = new Path();

    scene.setOnMouseClicked(mouseHandler);
    scene.setOnMouseDragged(mouseHandler);
    scene.setOnMouseEntered(mouseHandler);
    scene.setOnMouseExited(mouseHandler);
    scene.setOnMouseMoved(mouseHandler);
    scene.setOnMousePressed(mouseHandler);
    scene.setOnMouseReleased(mouseHandler);

    root.getChildren().add(path);
    primaryStage.setScene(scene);
    primaryStage.show();
}

EventHandler<MouseEvent> mouseHandler = new EventHandler<MouseEvent>() {

    @Override
    public void handle(MouseEvent mouseEvent) {
        if (mouseEvent.getEventType() == MouseEvent.MOUSE_PRESSED) {
            path.getElements()
                    .add(new MoveTo(mouseEvent.getX(), mouseEvent.getY()));
        } else if (mouseEvent.getEventType() == MouseEvent.MOUSE_DRAGGED) {
            path.getElements()
                    .add(new LineTo(mouseEvent.getX(), mouseEvent.getY()));
        }
    }
};

/**
 * The main method. Create a PrintScribble() object and away we go!
 */
public static void main(String[] args) {
    launch(args);
}
}

public void handle(MouseEvent mouseEvent) {
        if (mouseEvent.getEventType() == MouseEvent.MOUSE_PRESSED) {
            path.getElements()
                    .add(new MoveTo(mouseEvent.getX(), mouseEvent.getY()));
        } else if (mouseEvent.getEventType() == MouseEvent.MOUSE_DRAGGED) {
            path.getElements()
                    .add(new LineTo(mouseEvent.getX(), mouseEvent.getY()));
        }

        // Here is an answer
        path.toBack();

    }