如何在画布上绘制javafx

如何在画布上绘制javafx,java,canvas,javafx,Java,Canvas,Javafx,我是javafx的初学者: 我正在使用javafx和scenebuilder开发一个图形用户界面,该界面有一个带有x轴和y轴的坐标平面。应该是这样的: 当某人在该坐标平面上的任何位置单击鼠标时,它将在控制台上显示像素的坐标点(x,y),并且在单击鼠标的同一位置上会有一个标记(如点或一些文字) 为了实现这些功能,我必须使用canvas&我能够获得坐标点,但我不知道如何绘制坐标平面,以及如何在鼠标单击的像素上写入内容 这是我的密码: 控制器类 包装申请 import java.net.URL; im

我是javafx的初学者: 我正在使用javafx和scenebuilder开发一个图形用户界面,该界面有一个带有x轴和y轴的坐标平面。应该是这样的: 当某人在该坐标平面上的任何位置单击鼠标时,它将在控制台上显示像素的坐标点(x,y),并且在单击鼠标的同一位置上会有一个标记(如点或一些文字)

为了实现这些功能,我必须使用canvas&我能够获得坐标点,但我不知道如何绘制坐标平面,以及如何在鼠标单击的像素上写入内容

这是我的密码: 控制器类 包装申请

import java.net.URL;
import java.util.ResourceBundle;

import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.canvas.Canvas;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.AnchorPane;
public class AxisController implements Initializable{
    @FXML
    private AnchorPane anchr;
    @FXML 
    private Canvas canvas;
    @Override
    public void initialize(URL location, ResourceBundle resources) {
         assert canvas != null : "fx:id=\"canvas\" was not injected: check your FXML file 'AxisFxml.fxml'.";
    }

    @FXML
    private void handleMouse(MouseEvent event){
        System.out.println(event.getX());
        System.out.println(event.getY());
    }   
}
主要类别:

package application;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
public class AxisMain extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {
            AnchorPane root = FXMLLoader.load(getClass().getResource("/application/AxisFxml.fxml"));
            Scene scene = new Scene(root,400,400);
            scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}

您是否尝试过一些简单的方法,比如在handleMouse方法中放入类似的代码

GraphicsContext gc = canvas.getGraphicsContext2D();

gc.setFill(Color.BLUE);
gc.fillRect(event.getX()-5,event.getY()-5,10,10);

当然,这假设您也将此方法附加到画布上,这样您就可以在正确的坐标系中获得事件。

谢谢您,它现在正在工作,但坐标平面呢如果它现在正在工作,您可能已经做对了:-)