Pregunta

¿Es posible gestionar elementos secundarios en un HBox, de modo que la suma de los anchos de todos los elementos secundarios sea igual al ancho de HBox?

Para que los elementos llenen el HBox y no quede espacio.

La altura de los elementos secundarios es por defecto la altura de HBox, entonces, ¿qué tal el ancho?No quiero calcular el ancho en mi programa.Sería mejor si el diseño hiciera esto automáticamente, de modo que no fuera necesario ningún cálculo.

¿Fue útil?

Solución

Depende de qué tipo de niños HBox contener.Es posible que algunos de los elementos secundarios no sean nodos de tamaño variable.Sin embargo, en términos generales, puedes utilizar HBox.setHgrow() método y establecer el mismo Priority para todos los niños de hbox.La explicación está en su javadoc:

Establece la prioridad de crecimiento horizontal para el niño cuando está contenido por un Hbox.Si se establece, el HBOX utilizará la prioridad para asignar espacio adicional si el Hbox se redimensiona más de lo que se prefiere el ancho.Si múltiples niños HBox tienen el mismo crecimiento horizontal prioridad, entonces El espacio extra será dividir noche entre ellos.Si no hay horizontal La prioridad de crecimiento se establece en un hijo, el hbox nunca la asignará espacio horizontal adicional si está disponible.Establecer el valor en null eliminará la restricción.

Además, si está intentando obtener un diseño similar a una cuadrícula, pruebe otras opciones de diseño, por ejemplo TilePane o FlowPane y tal vez GridPane.

Otros consejos

El código simple para su respuesta sería esto:

Button button1 = new Button("Save");
Button button2 = new Button("Delete");
HBox.setHgrow(button1, Priority.ALWAYS);
HBox.setHgrow(button2, Priority.ALWAYS);

Se recomienda utilizar la clase de Hox en lugar de el nombre del panel de HOX.

en FXML:

<HBox>
   <Label HBox.hgrow="ALWAYS" maxWidth="Infinity">
       TEST
   </Label>
</HBox>

Agregando a la respuesta de @ bdshahab, ya que Hox intentará cambiar el tamaño de sus hijos a sus anchos preferidos, solo llenarán la caja si sus anchos preferidos combinados son más anchos que el ancho de HOX.

por lo que puede ser necesario hacer algo como:

Button button1 = new Button("Save");
Button button2 = new Button("Delete");
HBox.setHgrow(button1, Priority.ALWAYS);
HBox.setHgrow(button2, Priority.ALWAYS);
button1.setPrefWidth(100000);
button2.setPrefWidth(100000);

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top