2016-12-07 2 views
0

저는 을 사용하고 있습니다. grid.setAlignment (Pos.CENTER);하지만 JavaFX 장면 내에서 그리드를 중앙에 배치하지만 작동하지 않는 것 같습니다. 그리드는 어떤 위치에 상관없이 항상 씬의 왼쪽 상단에 표시됩니다. 누구든지 내가 뭘 잘못하고 있는지 알 수 있니?JavaFX를 사용하여 모눈 가운데 놓을 수 없습니다

*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(); 
}* 

감사를 다음과 같이

내 전체 코드 (마이너스 수입)입니다!

답변

1

이것은 grid.setAlignment(...)과 다릅니다. 그리드 팬의 범위 내에서 그리드 창의 전체 내용을 정렬합니다 (docs 참조).

부모 내의 모눈 창의 위치는 부모에 의해 결정됩니다.

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

감사 짝짓기 : 당신이 중심 원하는 경우, 이러한 StackPane으로, 일을 중심으로하는 방법을 알고있는 부모를 사용! 그게 해결 됐어! – Andrew

+0

정확한 앤드류 표시. – jewelsea