2016-04-19 12 views
0

Ziel ist es, einen bestimmten Bereich (der nur relevant ist - der obere linke Eckbereich) in einem GridPane bei der Größenänderung des Fensters zu ändern. Der relevante Bereich sollte immer der Fenstergröße entsprechen. Der Größenänderungsmechanismus funktioniert gut, aber der GridPane scheint viel größer zu sein, was den wichtigen Bereich verkleinert.GridPane füllt zu viel Platz - nur Teilbereich relevant

Gibt es eine Möglichkeit, unbenutzte Zellen in einem GridPane zu trennen?

Oder gibt es eine bessere Lösung?

-Code und Screenshot des Problems unten:

for (int row = 0; row <= characters.length - 1; row++) { 
      for (int column = 0; column <= characters[0].length - 1; column++) { 
       ClockElement n = new ClockElement(characters[row][column], false); 
       grid.add(n.getLabel(), column, row); 
      GridPane.setHalignment(n.getLabel(), HPos.CENTER); 

       ColumnConstraints c = new ColumnConstraints(); 
       c.setHgrow(Priority.ALWAYS); 
       //c.setMinWidth(40); 
       c.setPercentWidth(50); //old 40 
       grid.getColumnConstraints().add(c); 
       RowConstraints r = new RowConstraints(); 
       r.setVgrow(Priority.ALWAYS); 
       //r.setMinHeight(40); 
       r.setPercentHeight(50); 
       grid.getRowConstraints().add(r); 
       arrClockElement[row][column] = n; 
      } 
     } 
     grid.setPadding(new Insets(0, 0, 0, 0)); 
     grid.setPrefSize(580, 680); // Default width and height 
     grid.setMaxSize(Region.USE_COMPUTED_SIZE, Region.USE_COMPUTED_SIZE); 
     grid.setGridLinesVisible(true); 

Important area is at the left top

Antwort

1

Du fügst zu viele ColumnConstraint s und RowConstraint s. Sie benötigen characters.length (die Anzahl der Zeilen) RowConstraints und characters[0].length (die Anzahl der Spalten) ColumnConstraints. Stattdessen fügen Sie beide in der inneren Schleife hinzu, sodass Sie jeweils (characters.length)*(characters[0].length) hinzufügen.

Bewegen Sie die RowConstraints Schaffung außerhalb der inneren Schleife, und eine neue Schleife der ColumnConstraints zum Hinzufügen:

for (int row = 0; row <= characters.length - 1; row++) { 

    RowConstraints r = new RowConstraints(); 
    r.setVgrow(Priority.ALWAYS); 
    //r.setMinHeight(40); 
    r.setPercentHeight(50); 
    grid.getRowConstraints().add(r); 

    for (int column = 0; column <= characters[0].length - 1; column++) { 
     ClockElement n = new ClockElement(characters[row][column], false); 
     grid.add(n.getLabel(), column, row); 
     GridPane.setHalignment(n.getLabel(), HPos.CENTER); 

     arrClockElement[row][column] = n; 
    } 
} 

for (int column = 0 ; column < characters[0].length; column++) { 
    ColumnConstraints c = new ColumnConstraints(); 
    c.setHgrow(Priority.ALWAYS); 
    //c.setMinWidth(40); 
    c.setPercentWidth(50); //old 40 
    grid.getColumnConstraints().add(c); 
}