2016-11-30 20 views
0

我在SceneBuilder中創建了包含畫布對象的場景。現在我試圖在畫布上畫任何東西,但沒有出現。也許有人可以告訴我我做錯了什麼。謝謝你的建議。JavaFX我無法在場景構建器中創建的畫布上繪製任何東西

這裏是畫布對象的聲明:

public class ApplicationControler implements Initializable { 

    @FXML 
    public Canvas artHorizon; 

和應吸取了東西的方法:

public void drawOval(){ 
    artHorizon = new Canvas(400, 400); 
    GraphicsContext gc = artHorizon.getGraphicsContext2D(); 

    gc.setFill(Color.DARKRED); 
    gc.fillOval(110, 30, 50, 50); 
} 

和主類:

public class Main extends Application { 

@Override 
public void start(Stage stage) throws Exception { 

    FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/application/MainPane.fxml")); 
    Parent parent = fxmlLoader.load(); 
    Scene scene = new Scene(parent); 


    stage.setScene(scene); 
    stage.setTitle("Login Page"); 
    stage.show(); 

    ApplicationControler controller = fxmlLoader.getController(); 
    controller.drawOval(); 

} 

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

}

+0

artHorizo​​n = new Canvas(400,400);這可能是你的問題。我從來沒有試圖在畫布上繪畫,但是atrHorizo​​n已經創建並且您正在創建一個新畫布。 – Sedrick

+0

我從來沒有嘗試過controller.drawOval();主要。爲什麼不創建一個按鈕,在按下時繪製一個形狀或在drawOval中放入system.out.println(「hello」)以確保它正在運行? – Sedrick

回答

1

我想你應該刪除:

artHorizon = new Canvas(400, 400); 

看看你是否可以做這樣的事情:

artHorizon.setHeight(400); 
artHorizon.setWidth(400); 
2

您已經使用了這樣你的畫布已經被初始化「fx:id」(在FXML文件)註釋@FXML時你加載你的控制器,所以嘗試刪除實例化,你可以直接使用帶註釋的畫布:

artHorizon = new Canvas(400, 400); // to delete 
相關問題