Нарисовать точку на плоскости - Java
Формулировка задачи:
Как можно создать окно с координатной плоскостью и поставить на ней точку курсором?
Решение задачи: «Нарисовать точку на плоскости»
textual
Листинг программы
import javafx.application.Application;
import javafx.geometry.VPos;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
import javafx.scene.text.TextAlignment;
import javafx.stage.Stage;
public class ChartExp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Canvas canvas = new Canvas(600, 600);
GraphicsContext gc = canvas.getGraphicsContext2D();
// сетка
gc.setStroke(Color.GRAY);
gc.setLineWidth(.5);
gc.setFontSmoothingType(null);
gc.setLineDashes(5, 2);
for (int i = 0; i < 10; i++) {
gc.strokeLine(i * 60, 0, i * 60, 600);
gc.strokeLine(0, i * 60, 600, i * 60);
}
gc.setStroke(Color.BLUE);
gc.setLineDashes(null);
gc.setLineWidth(1);
// числа
gc.setTextAlign(TextAlignment.CENTER);
for (int i = 0; i < 11; i++) {
if (i == 5) continue;
gc.strokeText(String.valueOf(i * 60 - 300), i * 60, 315);
}
gc.setTextBaseline(VPos.CENTER);
gc.setTextAlign(TextAlignment.LEFT);
for (int i = 0; i < 11; i++) {
if (i == 5) continue;
gc.strokeText(String.valueOf(300 - i * 60), 310, i * 60);
}
gc.setStroke(Color.BLACK);
gc.strokeLine(300, 0, 300, 600); // zero line
gc.strokeLine(0, 300, 600, 300); // zero line
canvas.setOnMouseClicked(event -> gc.fillOval(event.getX() - 2, event.getY() - 2, 4, 4));
primaryStage.setScene(new Scene(new Group(canvas)));
primaryStage.show();
}
}