如何在画布上绘制javafx
我是javafx的初学者: 我正在使用javafx和scenebuilder开发一个图形用户界面,该界面有一个带有x轴和y轴的坐标平面。应该是这样的: 当某人在该坐标平面上的任何位置单击鼠标时,它将在控制台上显示像素的坐标点(x,y),并且在单击鼠标的同一位置上会有一个标记(如点或一些文字) 为了实现这些功能,我必须使用canvas&我能够获得坐标点,但我不知道如何绘制坐标平面,以及如何在鼠标单击的像素上写入内容 这是我的密码: 控制器类 包装申请如何在画布上绘制javafx,java,canvas,javafx,Java,Canvas,Javafx,我是javafx的初学者: 我正在使用javafx和scenebuilder开发一个图形用户界面,该界面有一个带有x轴和y轴的坐标平面。应该是这样的: 当某人在该坐标平面上的任何位置单击鼠标时,它将在控制台上显示像素的坐标点(x,y),并且在单击鼠标的同一位置上会有一个标记(如点或一些文字) 为了实现这些功能,我必须使用canvas&我能够获得坐标点,但我不知道如何绘制坐标平面,以及如何在鼠标单击的像素上写入内容 这是我的密码: 控制器类 包装申请 import java.net.URL; im
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);
当然,这假设您也将此方法附加到画布上,这样您就可以在正确的坐标系中获得事件。谢谢您,它现在正在工作,但坐标平面呢如果它现在正在工作,您可能已经做对了:-)