I have two classes in my project. Main.java
and Village.java
. The class Main.java
is supposed to pass a GraphicsContext
object to Village.java
so that it draws some image on the Application frame of Main.java
. But it seems like my code has a bug because its not drawing anything..Here is my code...
//This is the main class and it extends Application class for drawing a frame object
public class Main extends Application{
//Define the main method
public static void main(String args[]){
//Draw the frame
launch(args);
}
//This method override and passes a GraphicsContext object to a method in another class for drawing image
@Override
public void start(Stage stage) throws Exception {
//Set the title of the application window
stage.setTitle("Village");
Group root= new Group();
//Define a new canvas object
Canvas newcanvas= new Canvas();
//Get GraphicsContext object from the canvas
GraphicsContext gc=newcanvas.getGraphicsContext2D();
//Get an object of the class whose draw() method we wish to access
Village myvillage=Village.create();
//Call the method and pass GraphicsContext object as a parameter
myvillage.draw(gc);
root.getChildren().add(newcanvas);
stage.setScene(new Scene(root));
stage.show();
}
}
Now the other class with target draw(GraphicsContext)
method is this one..The image defined in there is in the same directory
as these class files.
public class Village{
// Y co ordinate of where to draw the image
static final double Y_VILLAGE=30;
public void draw(GraphicsContext r){
Image house=new Image("file:House.png",100,250,false,false);
//Define the xPosition for this House object
MyBuilding y=(MyBuilding)MyBuilding.create();
//Use the GraphicsContext to draw on the Canvas, we get an X position on where to draw from user dialog
//Draw the image
r.drawImage(house, y.getXposition(), Village.Y_VILLAGE);
}
}