JavaFX: propiedades de unión
JavaFX vinculante propiedad le permite sincronizar el valor de las dos propiedades de manera que cada vez que una de las propiedades de los cambios, el valor de la otra propiedad se actualiza automáticamente. Se admiten dos tipos de encuadernación:
Unidireccional vinculante: Con, las obras de enlace unidireccional de unión en una sola dirección. Por ejemplo, si enlaza la propiedad de A a B la propiedad, el valor de la propiedad A cambia cuando cambia la propiedad B, pero no a la inversa.
Bidireccional vinculante: Con la unión bidireccional, los dos valores de las propiedades están sincronizados de manera que si bien los cambios de propiedad, la otra propiedad se cambia automáticamente.
La creación de cualquier tipo de unión es sorprendentemente fácil. Cada propiedad tiene un lazo y un bindBiDirectional método. Para configurar una unión, simplemente llame a este método, que especifica la propiedad que desea unirse a como argumento.
He aquí un ejemplo que crea una unión unidireccional en el texto propiedad de una etiqueta a la texto propiedad de un campo de texto, de modo que el contenido de la etiqueta siempre muestra el contenido del campo de texto:
lable1.textProperty () unir (text1.textProperty ()). -
Con esta unión en su lugar, el texto mostrado por label1 se actualiza automáticamente, carácter por carácter, cuando los datos de usuario escribe en el campo de texto.
El siguiente ejemplo muestra cómo crear un bidireccional unión entre dos campos de texto, llamado texto1 y text2:
. text1.textProperty () bindBidirectional (text2.textProperty ()) -
Con esta unión en su lugar, cualquier texto que escriba en cualquiera de los campos de texto se reproducirá automáticamente en el otro.
Para mostrar cómo la unión se puede utilizar en un programa completo, este listado de código muestra un programa con dos campos de texto con un par de marcadores unidos a cada uno. El primer campo de texto acepta el nombre de un personaje de una obra de teatro, y el segundo campo de texto acepta el nombre de un actor. Las etiquetas muestran al actor que interpretará el papel, como se muestra en la figura.
javafx.application import * -. javafx.stage import * -. javafx.scene import * -. javafx.scene.layout import * -. javafx.geometry importación. * -. javafx.scene.control import * - public class Roleplayer extiende Aplicación {static void main (String [] args) {públicas de lanzamiento (args) -} TextField txtCharacter-TextField txtActor- @ Override public void start (Etapa primaryStage) {// Crear el personaje labelLabel lblCharacter = new Label ("Nombre del personaje: ") -lblCharacter.setMinWidth (100) -lblCharacter.setAlignment (Pos.BOTTOM_RIGHT) - // Crear el texto Carácter fieldtxtCharacter = new TextField()-txtCharacter.setMinWidth(200)-txtCharacter.setMaxWidth(200)-txtCharacter.setPromptText("Enter el nombre del personaje de aquí ") - // Cree el Actor labelLabel lblActor = new Label (" Nombre del actor: ".) - lblActor.setMinWidth (100) -lblActor.setAlignment (Pos.BOTTOM_RIGHT) - // Crear el texto Actor fieldtxtActor = new TextField () - txtActor.setMinWidth (200) -txtActor.setMaxWidth (200) -txtActor.setPromptText ("Introduzca el nombre del actor que aquí.") - // Crear el papel labelsLabel lblRole1 = new Label ("El papel de ") -Label lblRole2 = new Label () - Etiqueta lblRole3 = new Label (" será interpretado por ") -Label lblRole4 = new Label () - // Crear el personaje paneHBox paneCharacter = new HBox (20, lblCharacter, txtCharacter) -paneCharacter.setPadding (nuevas inserciones (10)) - // Cree el Actor paneHBox paneActor = new HBox (20, lblActor, txtActor) -paneActor.setPadding (nuevas inserciones (10)) - // Crear el papel paneHBox paneRole = nueva HBox (lblRole1, lblRole2, lblRole3, lblRole4) -paneRole.setPadding (nuevas inserciones (10)) - // Añadir los paneles Carácter y actor a un panel VBoxVBox = new VBox (10, paneCharacter, paneActor, paneRole) - / / Crear el bindingslblRole2.textProperty().bind(txtCharacter.textProperty())-lblRole4.textProperty().bind(txtActor.textProperty())-// Establezca la escena stageScene = new escena (panel) -primaryStage.setScene (escena) -primaryStage.setTitle ("Jugador de Papel") - primaryStage.show () -}}