Javafx: como usar eventos de propriedade

Propriedades JavaFX fornecer um addListener

método que permite adicionar manipuladores de eventos que são chamados sempre que o valor de uma propriedade mudanças. Você pode criar dois tipos de manipuladores de eventos de propriedade:

  • UMA mudança ouvinte, que é chamado sempre que o valor da propriedade foi recalculado. O ouvinte de alteração é passado três argumentos: a propriedade cujo valor foi alterado, o valor anterior da propriedade, e o novo valor.

  • A ouvinte invalidação, que é chamado sempre que o valor da propriedade torna-se desconhecido. Este evento é gerado quando o valor da propriedade precisa ser recalculado, mas ainda não foi recalculado. Um ouvinte de evento de invalidação é passado apenas um argumento: o próprio objeto propriedade.

    Video: ToDo Desktop - Java FX

Mudança e de invalidação ouvintes são definidos por interfaces funcionais nomeados ChangeListener e InvalidationListener. Porque essas interfaces são interfaces funcionais, você pode usar expressões lambda para implementá-las. Veja como você usar uma expressão Lambda para registrar um ouvinte de alteração na texto propriedade de um campo de texto chamado text1:

. Text1.textProperty () addListener ((observável, OldValue, newvalue) -gt; // código vai aqui) -

Aqui está um exemplo que registra um ouvinte de invalidação:

Video: Manipulando eventos no JavaFX

. Text1.textProperty () addListener ((observável) -gt; // código vai aqui) -

A única maneira que o addListener sabe se você está registrando um ouvinte de alteração ou um ouvinte de invalidação é olhando para os argumentos que você especificar para a expressão Lambda. Se você fornecer três argumentos, addListener registra um ouvinte de alteração. Se você fornecer apenas um argumento, um ouvinte de invalidação está instalado.

Esta listagem de código mostra um aplicativo JavaFX simples que usa mudança ouvintes para variar o tamanho de um retângulo automaticamente com o tamanho do painel de pilha que o contém.



Um ouvinte de alteração é registrado com propriedade de largura painel de pilha de modo que sempre que a largura do painel muda de pilha, a largura do retângulo é automaticamente definida para metade a nova largura do painel de pilha. Da mesma forma, um ouvinte de alteração é registrado na propriedade altura para mudar a altura do retângulo.

importação javafx.application. * - import javafx.stage. * - import javafx.scene. * - import javafx.scene.layout. * - import javafx.scene.shape. * -. importação javafx.scene.paint * - classe pública AutoRectangle estende aplicativo {void main (String [] args) public static {lançamento (args) -} @ Substituir início public void (Stage primaryStage) {Rectangle r = new Rectangle (100,100) - @@ a18r.setFill (Color.LIGHTGRAY) -r.setStroke (Color.BLACK) -r.setStrokeWidth (2) -StackPane p = novo StackPane () - @@ a23p.setMinWidth (200) -p.setPrefWidth (200) -p.setMaxWidth (200) -p. setMinHeight (200) -p.setPrefHeight (200) -p.setMaxHeight (200) -p.getChildren (). add (r) -p.widthProperty (). addListener (@@ a33 (observável, OldValue, newvalue) -gt ; r.setWidth ((Duplo) newvalue / 2)) - p.heightProperty () addListener (@@ a38 (observável, OldValue, newvalue.) -gt; r.setHeight (() newvalue / Duplo 2)) - cena cena = new Scene (p) -primaryStage.setScene (cena) -primaryStage.setTitle ("Retângulo Auto") -primaryStage.show () -}}

Esta figura mostra esta aplicação em acção. Esta figura mostra a janela inicial apresentada pela aplicação, bem como a forma como a janela aparece depois do utilizador ter feito a janela mais alta e larga. Como você pode ver, o retângulo tem aumentado em tamanho proporcionalmente.

Um exemplo de um site responsivo.

Os parágrafos seguintes descrevem os destaques:

  • 18: Estas linhas criar um retângulo de 100 × 100 e definir a cor do retângulo de preenchimento, cor do traço, e largura do traçado.

  • 23: Estas linhas de criar um painel de pilha e definir as suas propriedades largura e altura.

    Video: Video 03 JavaFX Manejo de evento clic y KeyTyped para validación de cajas de texto

  • 33: Estas linhas usar uma expressão Lambda para registrar um manipulador de mudança com parâmetro de largura painel de pilha. Quando a largura alterações painel de pilha, a largura do retângulo é definido como um meio de largura painel de pilha.

  • 38: Estas linhas usar uma expressão Lambda para registrar um manipulador de mudança com o parâmetro altura painel de pilha. Quando altura painel de pilha muda, a altura do retângulo está definido para metade da altura do painel de pilha.

    Video: javafx دورة


Publicações relacionadas