2016-12-07 3 views
0

Ich verwende grid.setAlignment (Pos.CENTER);, um mein Gitter innerhalb der JavaFX-Szene zu zentrieren, aber es scheint nicht zu funktionieren. Das Gitter wird immer oben links in der Szene angezeigt, egal welche Position ich ihm gebe. Kann jemand sehen, was ich falsch mache?Zentrieren eines Gitters nicht möglich mit JavaFX

Mein ganzer Code (minus Importe) ist wie folgt:

*public class Main extends Application { 
@Override 
public void start(Stage stage) throws Exception { 
Scene scene = new Scene(new Group(), 450, 250); 

Button btn = new Button(); 
btn.setText("Run"); 


final ComboBox comboBox = new ComboBox(); 
comboBox.getItems().addAll(
"Phase 1", 
"Phase 2", 
"Phase 3", 
"Phase 4", 
"Phase 5" 
); 

GridPane grid = new GridPane(); 
grid.setAlignment(Pos.CENTER); 
grid.setVgap(10); 
grid.setHgap(10); 
grid.setPadding(new Insets(5, 5, 5, 5)); 
grid.add(new Label("Select Phase: "), 0, 0); 
grid.add(comboBox, 1, 0); 
grid.add(new Label("Select Data: "), 0, 1); 
grid.add(btn, 0, 2); 

Group root = (Group)scene.getRoot(); 
root.getChildren().add(grid); 
stage.setScene(scene); 


stage.show(); 
}* 

Dank!

Antwort

1

Das ist nicht, was grid.setAlignment(...) tut: es richtet den gesamten Inhalt des Rasterbereichs innerhalb der Grenzen des Rasterbereiches aus (siehe docs).

Die Position des Rasterfensters innerhalb des übergeordneten Elements wird von seinem übergeordneten Element bestimmt. Wenn Sie möchten, dass es zentriert wird, verwenden Sie ein übergeordnetes Element, das weiß, wie man Objekte zentriert, z. B. ein StackPane:

import javafx.application.Application; 
import javafx.geometry.Insets; 
import javafx.geometry.Pos; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.control.ComboBox; 
import javafx.scene.control.Label; 
import javafx.scene.layout.GridPane; 
import javafx.scene.layout.StackPane; 
import javafx.stage.Stage; 

public class Main extends Application { 
    @Override 
    public void start(Stage stage) throws Exception { 

     StackPane root = new StackPane(); 

     Scene scene = new Scene(root, 450, 250); 

     Button btn = new Button(); 
     btn.setText("Run"); 

     final ComboBox<String> comboBox = new ComboBox<>(); 
     comboBox.getItems().addAll("Phase 1", "Phase 2", "Phase 3", "Phase 4", "Phase 5"); 

     GridPane grid = new GridPane(); 

     grid.setVgap(10); 
     grid.setHgap(10); 
     grid.setPadding(new Insets(5, 5, 5, 5)); 
     grid.add(new Label("Select Phase: "), 0, 0); 
     grid.add(comboBox, 1, 0); 
     grid.add(new Label("Select Data: "), 0, 1); 
     grid.add(btn, 0, 2); 


     root.getChildren().add(grid); 
     stage.setScene(scene); 

     stage.show(); 
    } 

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

Dank mate! Das hat es gelöst! – Andrew

+0

Markiere es korrekt Andrew. – jewelsea

Verwandte Themen