2017-03-02 146 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