JavaFX: propriedades de ligação

JavaFX vinculativo propriedade permite que você sincronize o valor de duas propriedades de modo que sempre que uma das propriedades as alterações, o valor da outra propriedade é atualizada automaticamente. São suportados dois tipos de ligação:

  • Unidirecional de ligação: Com as obras de ligação de ligação unidireccionais em apenas uma direção. Por exemplo, se você vincular a propriedade de A a propriedade B, o valor da propriedade Uma muda quando as mudanças de propriedade B, mas não o contrário.

  • Bidirecional de ligação: Com bidirecional de ligação, os dois valores de propriedade são sincronizados de forma que se quer alterações de propriedade, a outra propriedade é automaticamente alterada também.

A criação de qualquer tipo de ligação é surpreendentemente fácil. Cada propriedade tem um vincular e um bindBiDirectional método. Para configurar uma ligação, basta chamar esse método, especificando a propriedade que você deseja vincular a como argumento.

Aqui está um exemplo que cria a ligação de um unidirecional na texto propriedade de um rótulo para o texto estabelecimento de um campo de texto, de modo que o conteúdo do rótulo sempre exibe o conteúdo do campo de texto:

lable1.textProperty () ligar (text1.textProperty ()). -

Com essa ligação no lugar, o texto exibido pelo label1 é atualizado automaticamente, caractere por caractere, quando o usuário digita dados no campo de texto.

O exemplo a seguir mostra como criar uma ligação entre dois campos de texto bidirecional, com o nome text1 e text2:

. Text1.textProperty () bindBidirectional (text2.textProperty ()) -

Com essa ligação no lugar, qualquer texto digitado em qualquer campo de texto será replicado automaticamente na outra.

Para mostrar como a ligação podem ser utilizados num programa completo, esta listagem de código mostra um programa com dois campos de texto com um par de etiquetas ligado a cada. O primeiro campo de texto aceita o nome de um personagem em um jogo, eo segundo campo de texto aceita o nome de um ator. Os rótulos exibir o ator que irá desempenhar o papel, como mostrado na figura.

image0.jpg
importação javafx.application. * - import javafx.stage. * - import javafx.scene. * - import javafx.scene.layout. * - import javafx.geometry. * -. importação javafx.scene.control * - classe pública estende roleplayer aplicação {public static void main (String [] args) {lançamento (args) -} TextField txtCharacter-TextField txtActor- @ Substituir início public void (Stage primaryStage) {// criar o personagem labelLabel lblCharacter = new Label ( "nome do personagem: ") -lblCharacter.setMinWidth (100) -lblCharacter.setAlignment (Pos.BOTTOM_RIGHT) - // Criar o texto Character fieldtxtCharacter = new TextField()-txtCharacter.setMinWidth(200)-txtCharacter.setMaxWidth(200)-txtCharacter.setPromptText("Enter o nome do personagem aqui ") - // Criar o Ator labelLabel lblActor = new Label (" do ator Nome:. ") - lblActor.setMinWidth (100) -lblActor.setAlignment (Pos.BOTTOM_RIGHT) - // Criar o texto Ator fieldtxtActor = new TextField () - txtActor.setMinWidth (200) -txtActor.setMaxWidth (200) -txtActor.setPromptText ( "Digite o nome do ator aqui.") - // criar a função labelsLabel lblRole1 = new Label ( "The papel de ") -label lblRole2 = new Label () - Etiqueta lblRole3 = new Label (" será interpretado por ") -label lblRole4 = new Label () - // criar o personagem paneHBox paneCharacter = new HBox (20, lblCharacter, txtCharacter) -paneCharacter.setPadding (novas inserções (10)) - // Criar o Ator paneHBox paneActor = new hBox (20, lblActor, txtActor) -paneActor.setPadding (novas inserções (10)) - // criar a função paneHBox paneRole = new hBox (lblRole1, lblRole2, lblRole3, lblRole4) -paneRole.setPadding (novas inserções (10)) - // Adicionar os painéis Character e ator a um painel VBoxVBox = new VBox (10, paneCharacter, paneActor, paneRole) - / / Criar o bindingslblRole2.textProperty().bind(txtCharacter.textProperty())-lblRole4.textProperty().bind(txtActor.textProperty())-// Definir o cenário stageScene = new Scene (painel) -primaryStage.setScene (cena) -primaryStage.setTitle ( "Role Player") - primaryStage.show () -}}

menu