Tengo una aplicación JavaFX 2.0 con FXML. Quiero que los componentes (campos de texto, cuadros combinados, diseños, etc.) cambien de tamaño cuando se cambia el tamaño de una ventana con una aplicación. Así ...¿Cómo vincular el cambio de tamaño de escenario con el cambio de tamaño de los componentes?
- Como está escrito en Oracle documentation for JavaFX, para hacer algo como esto con las formas, hay algunas propiedades especiales a las formas:
Al crear aplicaciones GUI con JavaFX, Notará que ciertas clases en la API ya implementan propiedades. Por ejemplo, la clase
javafx.scene.shape.Rectangle
contiene propiedades paraarcHeight
,arcWidth
,height
,width
,x
yy
. Para cada una de estas propiedades, habrá métodos correspondientes que coincidan con las convenciones descritas anteriormente. . Por ejemplo,getArcHeight()
,setArcHeight(double)
,arcHeightProperty()
, que en conjunto indican (a los desarrolladores y herramientas) que existe la propiedad dada *
Para añadir oyente a una etapa que tengo que hacer algo como:
stage.resizableProperty().addListener(new ChangeListener<Boolean>(){ @Override public void changed(ObservableValue<? extends Boolean> arg0, Boolean arg1, Boolean arg2){ throw new UnsupportedOperationException("Not supported yet."); } });
Así que hay dos preguntas:
- Para hacer algunos enlaces tengo que obtener mi etapa en la clase de controlador. Entonces, ¿cómo puedo obtener un escenario en una clase de controlador?
- Parece que los controles de la interfaz de usuario no tienen ninguna propiedad de ancho/alto, para estar ligados a algo. O tal vez no los he encontrado.
Así que, ¿cómo puedo resolver mi problema?
UPD. Sobre la escena Builder para Sergey Grinev: Cuando uso Ctrl + K en mi componente (es decir a ocupar toda el área de su componente principal) - todo está bien.
Pero, ¿y si quiero decirle a mi componente que ocupe 50% de un área? Por ejemplo, tengo una pestaña con dos VBoxes en ella. El ancho de la pestaña es 100px. Los anchos de Vbox son 50px para cada uno. Vbox1 tiene x1 = 0, y x2 = 50, y VBox2 tiene x1 = 50, y x2 = 100. Luego cambio el tamaño de mi ventana con la aplicación JavaFX. Ahora tengo el ancho de la pestaña = 200px. Pero mis vboxes anchos son todavía = 50px: vbox1 tiene x1 = 0, y x2 = 50, y VBox2 tiene x1 = 150, y x2 = 200. Y necesito que sean vbox1 x1 = 0 y x2 = 100 y VBox2 x1 = 100 y x2 = 200. Donde los valores x1 y x2 son las coordenadas de las esquinas de VBoxes.
¿Cómo me puede ayudar Scene Builder en esta situación?
He respondido a tu comentario como una actualización de la cuestión, ya que estaba fuera de caracteres. –
eche un vistazo a la actualización, por favor. –
Typo - GripPane – Avik