Javafx é a nova biblioteca padrão usada no Java para criar aplicativos gráficos, mas muitos programadores ainda se mantêm usando o Swing ou até o AWT. Aqui estão algumas sugestões sobre como criar aplicativos rápidos e responsivos com novos recursos impressionantes no conjunto de ferramentas Javafx!
1. Valor do atributo
Se você tiver um entendimento completo dos componentes Javafx, o Mobile encontrou a propriedade. Quase todo valor na biblioteca FX pode ser observado, a largura da partição, o tamanho da imagem, o texto no rótulo, os itens infantis em uma lista e o status da caixa de seleção. Os atributos são divididos em alternativas: atributos graváveis e atributos legíveis. Valores graváveis podem ser modificados, usando o método setter ou diretamente. O JavaFX lida com o processo de manuseio de eventos e garante que todos os componentes que dependem dessa propriedade sejam notificados. As propriedades legíveis têm métodos que permitem receber notificações quando seus valores são modificados.
Exemplo:
// Nome de StringProperty de String de Legable-and Writitable = new SimleStringProperty ("Emil"); // read-somly observableBooleanValue nameImEmpty = name.isEmpty ();2. Valor de ligação
Quando você tem um valor gravável e legível, pode começar a definir regras sobre como esses valores estão associados. Uma propriedade gravável pode ser vinculada a uma propriedade legível, para que seu valor sempre corresponda ao legível. As ligações não acontecem imediatamente, mas serão feitas antes que o valor seja observado (e veja o que eu fiz lá). A ligação pode ser unidirecional ou de mão dupla. Obviamente, se forem bidirecionais, ambas as propriedades precisam ser graváveis.
Exemplo:
Textfield fieldA = new textfield (); textfield fieldb = new textfield (); fielda.prefwidthProperty (). Bind (fieldb.widthProperty ());
3. Lista observável
Os atributos não são as únicas coisas que podem ser observadas. Se a lista for encapsulada em uma lista de observação, os membros da lista também poderão ser observados. O modelo de resposta do ObservableList é bastante avançado. Você não só pode receber notificações quando a lista é modificada, mas também veja como a lista é modificada.
Exemplo:
List <String> Otherlist = Arrays.asList ("Foo", "Bar", "Bar"); ObservableList <String> list = fxCollection.ObServabLelist (OtherList); list.addlistener ((listchangelistener.change <? Extnds String> alteração) -> {System.out.Printlnnnnn (" (alteração.wasadded ()) {System.out.println ("itens" + alteração.getaddedsublist () + "foi adicionado."); list.set (1, "foo"); system.out.println ("nova lista:" + list);A saída em execução do código acima é o seguinte:
Lista antiga: [Foo, bar, bar] recebeu event.items [foo] foi adicionado.Items [bar] foi removido.Now List: [Foo, Foo, Bar]
Como você pode ver, a operação de configuração acionará apenas um evento uma vez.
4. StringConverter
Às vezes, você descobrirá que não precisa extrair os valores de um componente quando deseja criar uma ligação. Um exemplo típico disso é que você tem uma StringProperty com um caminho que você recebe de um campo de texto. Se você deseja ter uma propriedade observável com esse valor representado como caminho, é necessário criar um StringConverter para ela.
Exemplo:
Textfield fileLocation = new textfield (); stringProperty Location = filelocation.textProperty (); Property <ath> path = new SimpleObjectProperty <> (); Bindings.bindbidirectional (localização, caminho, new stringConverter <thath> () {@Override public string tostring (caminho do caminho) {retorna path.toString ();} @Override PULHT PATH DESTRING (string string) {return paths.get (string);}});As propriedades do objeto não são ligações bidirecionais aos valores do campo de texto.
5. Expressões
Usando a classe Bindings acima, você pode criar qualquer tipo de expressão. Por exemplo, você tem dois campos de texto que permitem que os usuários digitem informações. Agora eu quero definir um domínio somente leitura, que sempre conterá uma string. Se os comprimentos das duas cordas forem iguais, as duas cordas serão misturadas intervalos de caractere por caracteres para exibição. Se os comprimentos não forem iguais, uma mensagem de ajuda será exibida.
Exemplo:
Textfield primeiro = new textfield (); textfield segundo = new textfield (); textfield mix = new textfield (); mix.textProperty (). bind (bindings.When (primeiro.LengthProperty (). ISequalTO (Second.LengthProperty ())) .Then (bindings.createStringbinding (() -> {int length = First.lengthProperty (). get (); string firstExt = primeiro.TextPROTPROTTY (FirstProperty. Segundo.TextProperty (). insira duas cordas exatamente do mesmo comprimento. "));Isso é apenas um pouco dos muitos recursos do Javafx. Espero que você possa encontrar maneiras mais criativas de alavancar este sistema de eventos!