不允许在 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();
}
我是 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();
}