2017-03-16 3 views
0

Ich habe ein Rechteck in JavaFX erstellt. Meine Szene hat eine Breite von 300, mein Rechteck hat eine Breite von 80.JavaFX Rectangle wird die rechte Seite nicht berühren

Rectangle.setX legt die Position der oberen linken Ecke des Rectangle fest. Ich setze X auf obScene.getWidth() - carRightside und es berührt nicht die rechte Seite.

Was mache ich falsch?

package assign3; 

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.layout.FlowPane; 
import javafx.scene.layout.Pane; 
import javafx.scene.paint.Color; 
import javafx.scene.shape.Circle; 
import javafx.scene.shape.Rectangle; 
import javafx.stage.Stage; 

public class Question4 extends Application 
{ 

    public int carRightSide; 

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

     Pane obPane = new Pane(); 

     Circle obWheelOne = new Circle(20, Color.BLACK); 
     obWheelOne.setRadius(20); 
     Circle obWheelTwo = new Circle(20, Color.BLACK); 
     obWheelTwo.setRadius(20); 

     Rectangle obBody = new Rectangle(80, 40, Color.LIGHTBLUE); 


     obPane.getChildren().add(obWheelOne); 
     obPane.getChildren().add(obBody); 

     Scene obScene = new Scene(obPane, 300, 350); 

     carRightSide = 80; 
     obBody.setX(obScene.getWidth() - carRightSide); 
     obBody.setY(40); 

     obPrimeStage.setTitle("Driving Cars"); 
     obPrimeStage.setScene(obScene); 
     obPrimeStage.setResizable(false); 
     obPrimeStage.show(); 


    } 

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

    } 

} 

Antwort

1

Sie haben obPrimeStage.show(); anrufen, bevor Sie die .getWidth() des Scene verwenden.

public class Question4 extends Application 
{ 

    public int carRightSide = 80; 

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

     Pane obPane = new Pane();   

     Scene obScene = new Scene(obPane, 300, 350, Color.ANTIQUEWHITE); 
     obPrimeStage.setScene(obScene);//Add scene here 
     obPrimeStage.setTitle("Driving Cars"); 
     obPrimeStage.setResizable(false); 
     obPrimeStage.show();//Show Stage so that the size will be calculated 

     Circle obWheelOne = new Circle(20, Color.BLACK); 
     obWheelOne.setRadius(20); 
     Circle obWheelTwo = new Circle(20, Color.BLACK); 
     obWheelTwo.setRadius(20); 

     Rectangle obBody = new Rectangle(carRightSide, 40, Color.LIGHTBLUE); 
     obBody.setX(obScene.getWidth() - carRightSide); 
     obBody.setY(40); 

     obPane.getChildren().add(obBody); 
     obPane.getChildren().add(obWheelOne); 
     obPane.getChildren().add(obWheelTwo); 
    } 

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

oder Sie können die Größe des Stage nach dem Einstellen der Scene

Scene obScene = new Scene(obPane, 300, 350, Color.ANTIQUEWHITE); 
obPrimeStage.setScene(obScene);//Add scene here 
obPrimeStage.setWidth(obScene.getWidth()); 
obPrimeStage.setHeight(obScene.getHeight()); 

//Circles 
//Rectangle 
//Adding components 
obPrimeStage.setTitle("Driving Cars"); 
obPrimeStage.setResizable(false); 
obPrimeStage.show();//Show Stage so that the size will be calculated 
+0

Perfect, danke einstellen! –

Verwandte Themen