2017-03-21 6 views
3

Ich habe Probleme mit der Positionierung meiner Bilder in meinem JavaFX-Programm mit setX und SetY auf den ImageViews für die Bilder. Ich bin mir nicht sicher, was das Problem ist? Schätze jede Hilfe! mein Code
Hier:setX und setY funktioniert nicht beim Versuch, Bilder zu positionieren

 Image rocket2 = new Image("img/Rocket.png"); 
     ImageView iv1 = new ImageView(rocket2); 
     iv1.setX(60); 
     iv1.setY(44); 

     Image rocket1 = new Image("img/Rocket.png"); 
     ImageView iv2 = new ImageView(rocket1); 
     iv2.setX(5); 
     iv2.setY(16); 

     Image background = new Image("img/space.png"); 
     ImageView iv3 = new ImageView(background); 

     StackPane root = new StackPane(); 
     root.getChildren().addAll(iv3, iv2, iv1); 
     Scene scene = new Scene(root, 300, 300); 
     scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); 
     primaryStage.setScene(scene); 
     primaryStage.setResizable(false); 
     primaryStage.setTitle("Space stuff"); 
     primaryStage.show(); 

Ich vermute, dass etwas schief geht, weil ich ein Hintergrundbild gesetzt haben.
img here on what's happening

Antwort

2

Platzieren Sie Ihre Artikel nicht in StackPane, wenn Sie ihre Layoutpositionen explizit definieren möchten (setX und setY). Ein StackPane ist ein verwaltetes Layoutfenster. Es wird automatisch die Position der hinzugefügten Elemente festlegen (standardmäßig wird alles im StackPane übereinander gelegt).

Verwenden Sie stattdessen eine Pane oder eine Group, die nicht verwaltet Layout-Bereiche sind und Ihnen ermöglichen, Ihren Inhalt in den Bereich, wie Sie möchten, zu gestalten.

Um Ihren Inhalt innerhalb des Bereichs zu gestalten, können Sie setLayoutX und setLayoutY statt setX und setY verwenden, obwohl ich denke, setX und setY sollten auch funktionieren (ich habe sie noch nie zuvor in ImageView verwendet).

Pavlo, bereits eine Antwort erstellt, während ich diese (diese Antwort ist ein Duplikat) tippen, aber ich werde dies lassen, da es ein bisschen mehr Erklärung gibt.

2

Ersetzen StackPane mit Pane sollte das Problem lösen.

0

Wenn Sie jedoch aus irgendeinem Grund einen Artikel in einem StackPane positionieren möchten, können Sie setTranslateX und setTranslateY verwenden. Diese Methoden setzen die x- und y-Werte, NACHDEM der StackPane seine Layouts erstellt hat, haben Sie eine andere Startposition, abhängig von der Ausrichtung, die Ihr StackPane für seine Kinder verwendet.

Verwandte Themen