2016-02-11 9 views

cevap

15

Bir düğümün hücresine ayrılmış alanı bir ızgara bölmesinde nasıl dolduracağınızı soruyorsunuz.

Bunu yapmanın birkaç yolu vardır. Ya düğümlere GridPane e özgü özellik ayarlarını uygulamak için statik GridPane yöntem kullanabilirsiniz:

GridPane grid = new GridPane(); 
for (int rowIndex = 0; rowIndex < numRows; rowIndex++) { 
    RowConstraints rc = new RowConstraints(); 
    rc.setVgrow(Priority.ALWAYS) ; // allow row to grow 
    rc.setFillHeight(true); // ask nodes to fill height for row 
    // other settings as needed... 
    grid.getRowConstraints().add(rc); 
} 
for (int colIndex = 0; colIndex < numColumns; colIndex++) { 
    ColumnConstraints cc = new ColumnConstraints(); 
    cc.setHgrow(Priority.ALWAYS) ; // allow column to grow 
    cc.setFillWidth(true); // ask nodes to fill space for column 
    // other settings as needed... 
    grid.getColumnConstraints().add(cc); 
} 

:

GridPane.setFillWidth(myButton, true); 
GridPane.setFillHeight(myButton, true); 

başka yolu grid bölmesinde kendisinde sütun kısıtlamaları ve satır kısıtlamaları belirtmektir Her iki durumda da, ızgara bölmesinin yaptığı büyütme isteğine saygı göstermeleri için düğümlerin büyümesine izin vermeniz gerekir. Yani, ör .: (satır ve sütun kısıtlamaları yöntemini kullanarak)

Button myButton = new Button("Click"); 
myButton.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE); 
grid.add(myButton, 0, 0); 

SSCCE:

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.layout.ColumnConstraints; 
import javafx.scene.layout.GridPane; 
import javafx.scene.layout.Priority; 
import javafx.scene.layout.RowConstraints; 
import javafx.stage.Stage; 

public class KeyPad extends Application { 

    @Override 
    public void start(Stage primaryStage) { 
     GridPane grid = new GridPane(); 
     int numRows = 4 ; 
     int numColumns = 3 ; 
     for (int row = 0 ; row < numRows ; row++){ 
      RowConstraints rc = new RowConstraints(); 
      rc.setFillHeight(true); 
      rc.setVgrow(Priority.ALWAYS); 
      grid.getRowConstraints().add(rc); 
     } 
     for (int col = 0 ; col < numColumns; col++) { 
      ColumnConstraints cc = new ColumnConstraints(); 
      cc.setFillWidth(true); 
      cc.setHgrow(Priority.ALWAYS); 
      grid.getColumnConstraints().add(cc); 
     } 

     for (int i = 0 ; i < 9 ; i++) { 
      Button button = createButton(Integer.toString(i+1)); 
      grid.add(button, i % 3, i/3); 
     } 
     grid.add(createButton("#"), 0, 3); 
     grid.add(createButton("0"), 1, 3); 
     grid.add(createButton("*"), 2, 3); 

     Scene scene = new Scene(grid); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

    private Button createButton(String text) { 
     Button button = new Button(text); 
     button.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE); 
     button.setOnAction(e -> System.out.println(text)); 
     return button ; 
    } 

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

Mükemmel! Teşekkürler! + 1 ve kabul et. – ncmathsadist

+1

CSS'de yapmak için: (Benim durumumda, maxwidth sonsuzluğunu ayarlamak yeterliydi) .mygridPane Button { \t -fx-max-width: sonsuzluk; } ' – pdem

-3

Bunun için JavaFX'te bir GridPane kullanabilirsiniz. Bu birinci satır ve GridPane ilk sütuna bir etiket katacak Java Code olarak,

GridPane pane = new GridPane(); 

bunu oluşturabilir ve

Label label = new Label(); 
pane.add(label, 0,0); 

gibi örneğin kendisine farklı düğüm eklemek . Daha karmaşık GUI'ler için SceneBuilder'ı kullanabilirsiniz.

+1

Bir ızgara bölmesine şeyler eklemeyi biliyorum. Benim istediğim şey, gridpanın kapladığı bölgeyi tamamen doldurmak için bir dizi düğme demek. – ncmathsadist

İlgili konular