Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

240
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!