Saltar al contenido

¿Cómo obtengo botones para llenar un gridpane javafx?

Te damos la bienvenida a nuestra página, ahora vas a hallar la solucíon a lo que estabas buscando.

Solución:

Creo que está preguntando cómo obtiene un nodo para llenar el espacio asignado a su celda en un panel de cuadrícula.

Hay un par de maneras de hacer esto. Puedes usar el static GridPane métodos para aplicar GridPane-Configuración de propiedades específicas para los nodos:

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

La otra forma es especificar restricciones de columna y restricciones de fila en el panel de la cuadrícula:

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);

En cualquier caso, debe permitir que los nodos crezcan para que respeten la solicitud de crecimiento que hace el panel de cuadrícula. Entonces, por ejemplo:

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

SSCCE (usando el método de restricciones de fila y columna):

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);
    

Reseñas y puntuaciones

Tienes la opción de añadir valor a nuestra información colaborando tu veteranía en las acotaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *