2017-03-02 147 views
0

的东西,我的JavaFX初学者: 我正在开发使用JavaFX和场景生成器,与X轴和Y轴坐标平面上的图形用户界面。它应该是这样的:https://postimg.cc/image/98k9mvnb3/ 当有人在这个坐标平面上的任何地方点击鼠标时,它将显示控制台上像素的坐标点(x,y),并且会有一个标记(像点或一些文本将被写入)在鼠标点击的地方。如何画在画布上的JavaFX

为了实现这些东西我必须使用画布&我能够获得坐标点,但我没有得到如何绘制坐标平面以及如何在像素点击鼠标的地方写点东西。

这是我的代码: 控制器类 包应用程序;

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); 
    } 
} 

回答

0

你试过因为把像这样的代码到你的handleMouse方法一样简单的东西吗?

GraphicsContext gc = canvas.getGraphicsContext2D(); 

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

这当然假设您已经将此方法附加到画布上,以便您实际获得正确坐标系中的事件。

+0

现在感谢您对本公司的工作,但怎么样坐标平面 – bSr

+0

如果现在的工作,你可能已经正确:-)做到了 – mipa