Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

236
Vistas
¿Por qué mis botones JavaFX están espaciados de manera desigual?

Soy nuevo en JavaFX, tratando de crear un programa GUI que muestre una factura para una mesa en un restaurante cuando hace clic en esa mesa. El espacio entre los botones de la mesa está mal y no estoy seguro de por qué.

ingrese la descripción de la imagen aquí

La clase GUI para mi programa:

 package restaurantBillingProgram; import javafx.application.Application; import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.layout.GridPane; import javafx.scene.control.Label; import javafx.scene.control.Button; import javafx.geometry.Pos; public class BillingGUI extends Application { @Override public void start(Stage primaryStage) { // Create grid pane GridPane pane = new GridPane(); pane.setAlignment(Pos.CENTER); pane.setHgap(5); pane.setVgap(5); // Label pane.add(new Label("Generate bill"), 1, 0); // Buttons Button btT1 = new Button("Table 1"); pane.add(btT1, 0, 1); btT1.setOnAction(e - > Billing.generateT1()); Button btT2 = new Button("Table 2"); pane.add(btT2, 1, 1); btT2.setOnAction(e - > Billing.generateT2()); Button btT3 = new Button("Table 3"); pane.add(btT3, 2, 1); btT3.setOnAction(e - > Billing.generateT3()); // Create scene and place in stage Scene scene = new Scene(pane, 250, 250); primaryStage.setTitle("Restaurant Billing Program"); primaryStage.setScene(scene); primaryStage.show(); } // Main method public static void main(String[] args) { launch(args); } }
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Del Javadoc:

  • Tamaño de fila/columna

    De forma predeterminada, las filas y las columnas tendrán un tamaño que se ajuste a su contenido; una columna será lo suficientemente ancha para acomodar al niño más ancho, ...

La etiqueta en la fila 0 columna 1 obliga a que esa columna sea más ancha.

Probablemente desee que la etiqueta esté centrada y abarque las 3 columnas .

over 4 years ago · Santiago Trujillo Denunciar

0

Mientras hace su diseño, use pane.setGridLinesVisible(true) . Esto solo debe usarse durante la depuración. Puede ser muy útil para situaciones como tu situación actual. Como señaló @Jim Garrison, su Label está causando el problema:

Asunto:

ingrese la descripción de la imagen aquí

Una forma de solucionar esto es dejar que la Label abarque todas las columnas y centre el texto Label's .

Reparar:

ingrese la descripción de la imagen aquí

Clave:

 label.setMaxWidth(Double.MAX_VALUE); label.setAlignment(Pos.CENTER); pane.add(label, 0, 0, 3, 1);// Look at the following link to see how this add method works. https://openjfx.io/javadoc/11/javafx.graphics/javafx/scene/layout/GridPane.html#add(javafx.scene.Node,int,int,int,int)

Código completo:

 import javafx.application.Application; import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.layout.GridPane; import javafx.scene.control.Label; import javafx.scene.control.Button; import javafx.geometry.Pos; public class BillingGUI extends Application { @Override public void start(Stage primaryStage) { // Create grid pane GridPane pane = new GridPane(); pane.setAlignment(Pos.CENTER); pane.setHgap(5); pane.setVgap(5); pane.setGridLinesVisible(true);//Use for debugging only!!!! // Label Label label = new Label("Generate bill"); label.setMaxWidth(Double.MAX_VALUE); label.setAlignment(Pos.CENTER); pane.add(label, 0, 0, 3, 1); // Buttons Button btT1 = new Button("Table 1"); pane.add(btT1, 0, 1); Button btT2 = new Button("Table 2"); pane.add(btT2, 1, 1); Button btT3 = new Button("Table 3"); pane.add(btT3, 2, 1); // Create scene and place in stage Scene scene = new Scene(pane, 250, 250); primaryStage.setTitle("Restaurant Billing Program"); primaryStage.setScene(scene); primaryStage.show(); } // Main method public static void main(String[] args) { launch(args); } }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda