2017-12-18 14 views
0

그리드 패널 레이아웃을 사용하여 별도의 장면을 만들고 싶습니다. 기본적으로 모든 코드를 복사하고 새로운 장면을 만들려고했으나 두 번째 장면에 넣은 모든 것은 격자에 맞지 않습니다. 나는 상당히 코딩, 그리고 이것은 내 다섯 번째 프로젝트입니다. (나쁜 코드 때문에 미안)2 개의 다른 장면에서 하나의 클래스에 2 개의 GridPane 가져 오기

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

public class Main extends Application { 

    Stage window; 
    Scene s1, s2; 

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

    @Override 
    public void start(Stage primaryStage) throws Exception { 
     window = primaryStage; 
     window.setTitle("Test"); 

     GridPane grid = new GridPane(); 
     grid.setPadding(new Insets(10, 10, 10, 10)); 
     grid.setVgap(10); 
     grid.setHgap(10); 

     Button b1 = new Button("Scene 2"); 
     b1.setOnAction(e -> window.setScene(s2)); 
     GridPane.setConstraints(b1, 2, 0); 

     Button b2 = new Button("Button 2"); 
     GridPane.setConstraints(b2, 5, 0); 

     grid.getChildren().addAll(b1, b2); 
     Scene s1 = new Scene(grid, 500, 500); 

     GridPane grid2 = new GridPane(); 
     grid.setPadding(new Insets(10, 10, 10, 10)); 
     grid.setVgap(10); 
     grid.setHgap(10); 

     Button b3 = new Button("Scene 1"); 
     b3.setOnAction(e -> window.setScene(s1)); 
     GridPane.setConstraints(b3, 0, 0); 

     Button b4 = new Button("Button 2"); 
     GridPane.setConstraints(b4, 6, 0); 

     grid2.getChildren().addAll(b3, b4); 
     s2 = new Scene(grid2, 500, 500); 


     window.setScene(s1); 
     window.show(); 
    } 


} 
+1

당신은 단지 명백한 복사 및 붙여 넣기 오류가 발생했을 수 있어야합니다. –

+1

'그리드에 맞지 않는다'는 것은 무엇을 의미합니까? 귀하의 코드를 실행했는데 장면 2에서 적절한 간격이 표시되지 않는다는 점을 제외하고는 정상적으로 작동합니다. 왜냐하면 James가 말했듯이, grid2에 대해 vgap과 hgap을 설정하지 않았기 때문입니다. –

+0

grids.setPadding 등이 grid2라는 레이블이 있어야한다는 것을 모른 채 너무 많이 @ James_D에 감사드립니다. 방금 범용이라고 생각 했어. – CraftMaster100

답변

2

코드에 복사하여 붙여 넣기 오류가 있습니다.

GridPane grid2 = new GridPane(); 
    grid.setPadding(new Insets(10, 10, 10, 10)); 
    grid.setVgap(10); 
    grid.setHgap(10); 

패딩과 갭이 첫 번째 격자 창에 적용된 위의 코드를 복사했을 가능성이 있습니다. 당신은 grid2``에 패딩, hgap에, 또는 vgap에를 설정하지 않은 : 두 번째 그리드 패널에 적용하기 위해서는

GridPane grid2 = new GridPane(); 
    grid2.setPadding(new Insets(10, 10, 10, 10)); 
    grid2.setVgap(10); 
    grid2.setHgap(10);