O que todas as palavras em um aplicativo javafx significa?
Usando a estrutura JavaFX, os desenvolvedores adicionar componentes úteis, visualmente atraente para seus aplicativos Java. JavaFX é uma das várias estruturas, começando com o Abstract Windowing Toolkit em 1995 e Java Swing em 1998. A primeira versão do JavaFX remonta a 2008, mas JavaFX tornou-se um cidadão de primeira classe na biblioteca Java padrão com a segunda atualização de Java 7 em 2011.
Conteúdo
Também em 2011, a Oracle lançou a versão 2 do JavaFX. Esta nova versão combinada documentos XML com código Java - declarando a aparência de um aplicativo com XML e as ações de um aplicativo com o código Java. JavaFX usa seu próprio dialeto da linguagem XML, chamado FXML.
(Se você se preocupa com as origens de siglas, XML representa o eXtended Markup Language, e JavaFX provavelmente tem algo a ver com Java “EFF-ECTS especiais”. Então, dependendo do seu gosto, FXML significa tanto EFF-ECTS eXtended Markup Language ou EFF-ECTS Markup Language. Faça sua escolha.)
Este artigo descreve alguns dos nomes que você encontra em um programa simples JavaFX. (Tenha em mente que esta referência a “alguns dos nomes” significa “os nomes que pertencem exclusivamente ao mundo do JavaFX” - Isso não inclui nomes como Campo de texto e Botão que aparecem em outros ambientes de janelas, e não incluem nomes como java.lang e a Principal, que pertencem a baunilha tecnologias Java.)
Listagem 1 contém código FXML, e Listagem 2 contém código Java. Quando você executa estas duas listas como parte de um único aplicativo, você tem um programa que capitaliza as letras no seu texto. (Neste ponto, você pode sarcasticamente dizer “Um aplicativo que capitaliza texto? Grande coisa!” Uma resposta apropriada seria “um aplicativo que capitaliza TEXTO? GRANDE COISA!”)
Listagem 1: O Root.fxml File
lt;? xml version ="1.0" encoding ="UTF-8"? Gt; lt;? * Importação Java.lang gt;.? Lt;? * Importação javafx.scene.control gt;.? Lt;?. * Importação javafx.scene.layout gt;? Lt;AnchorPane prefHeight ="130,0" prefWidth ="198,0"xmlns ="https://javafx.com/javafx/8"xmlns: fx ="https://javafx.com/fxml/1"fx: Controlador="application.Main"gt; lt;criançasgt;fx: id ="campo de texto"layoutX="25,0" layoutY="26,0" / Gt;
euisting 2: O Main.java File
pacote de aplicação-importação javafx.application.Application-importação javafx.event.ActionEvent-importação javafx.fxml.FXML-importação javafx.fxml.FXMLLoader-importação javafx.scene.Parent-importação javafx.scene javafx.scene.Scene-importação. control.TextField-import classe javafx.stage.Stage-público principal se estende Aplicação {main (String [] args) public static void {lançamento(args) -} @ vazio Overridepublic começar(Etapa primaryStage) {try {parente = raiz FXMLLoader.load(GetClass (). GetResource ("Root.fxml")) -Cena cena = new Scene (root, 400, 400) -scene.getStylesheets (). add (getClass (). getResource ("application.css") .toExternalForm ()) - primaryStage.setScene (cena)-primaryStage.exposição()-} Catch (exceção e) {e.printStackTrace () -}} @FXMLTextField privada textField- @FXMLprotected void onclick(Evento ActionEvent) {textField.setText (textField.getText () toUpperCase ().) -}}
O código FXML
Como cada documento XML, o documento na Listagem 1 tem um elemento raiz - um único elemento que começa no início do documento e termina no final do documento. Na Listagem 1, o elemento raiz começa com
e termina com
As linhas que começam com o lt ;? (No topo da listagem 1) não contam como elementos XML.
O AnchorPane como um elemento raiz
A AnchorPane (Ou mais formalmente, um javafx.scene.layout.AnchorPane) É um lugar onde as coisas podem ser ancorados. Pense sobre a tentativa de colocar um botão ou um campo de texto em um grande espaço vazio. sem um AnchorPane, estes componentes flutuar quer queira quer não no interior do espaço. Com um AnchorPane, você pode fazer margem esquerda do campo de texto ser exatamente 25,0 pixels da beirada esquerda do AnchorPane. (Veja o Campo de texto elemento de layoutX atributo na Listagem 1.) Também, com um AnchorPane, você pode fazer borda superior do campo de texto ser exatamente 26,0 pixels a partir da borda superior do AnchorPane. (Veja o Campo de texto elemento de layoutY atributo na Listagem 1.) O mesmo vale para um botão ou por qualquer outro componente que você planta no interior do AnchorPane.
Dentro elemento raiz de um documento FXML, um fx: Controlador atributo diz Java o nome do controlador classe - a classe cujo código executa ações associadas com o aplicativo. Na Listagem 1, o nome do controlador de classe é application.Main. E que coincidência! A classe na Listagem 2 é nomeado a Principal, e está em um pacote chamado aplicação!
Se você acha do código FXML como um esboço, que tem um título com subtítulos, e com subtítulos em subtítulos, e assim por diante. Na Listagem 1, título principal é AnchorPane. A única subposição AnchorPane é crianças. Mas crianças tem dois subtítulos da sua próprio- nomeadamente, Campo de texto e Botão.
A fx: atributo id
o Campo de texto tem um elemento fx: id atributo. Este atributo diz-lhe como encontrar este componente dentro de algum código Java. Em outras palavras,
diz que “para se referir a este elemento no interior do application.Main código Java, use o nome campo de texto.”(Se você quiser mais detalhes, espreitar à frente para a discussão do código na Listagem 2.)
Você não tem que usar um termo descritivo para identificar um componente. Você pode escrever
Contanto que você usa a palavra woofinflang consistentemente (referindo-se a palavra woofinflang em seu código Java) tudo vai correr bem. É claro que nomes como campo de texto, textField2 e phoneNumberField são mais informativos do que nomes como woofinflang. Portanto, fique longe woofinflangs se você puder.
O atributo mnemonicParsing
Na Listagem 1, no interior da Botão elemento, o mnemonicParsing atributo tem o valor falso. este falso valor diz Java não se incomodar definir uma tecla de atalho para o botão. Se o valor fosse verdade, você pode adicionar um sublinhado para o valor do botão de texto atributo:
text ="_Capitalizar"
Em seguida, o usuário não teria que mover o mouse sobre o botão. Porque o sublinhado vem imediatamente antes da letra C, pressionando Alt + C teria o mesmo efeito de clicar no botão.
O atributo onAction
Um de botão onAction atributo diz Java o nome do método a ser executado quando o usuário clica no botão. Na Listagem 1, o onAction o valor do atributo é #onclick. Isto diz Java para chamar a classe do controlador onclick método quando o usuário clica no botão. Felizmente, o application.Main classe na Listagem 2 tem uma onclick método.
Na Listagem 1, o onAction valor é #onclick. Mas na Listagem 2, o correspondente nome do método é onclick sem o símbolo de hash. Em um botão onAction atributo, o símbolo cardinal (#) Não faz parte do nome do método. Mas isso não significa que você pode omitir o símbolo de hash no documento FXML. Se você omitir o símbolo de hash então, quando você tenta executar o programa, você verá uma mensagem de erro feio.
O código Java
A classe na Listagem 2 estende-se a Aplicação classe. A Aplicação é exatamente o que você pensa que é -. um monte de código que um usuário pode launch- um programa com um propósito claramente declarado como “Criar um documento”, “Navegar na Web” ou “Encontre um mate”
Execução e lançamento
Há pelo menos duas maneiras de executar um programa de JavaFX. É uma maneira de executá-lo como um aplicativo Java normal. Por exemplo, no Eclipse, você selecione Executar como-gt; Java Application.
Quando você fizer isso, o computador inicia a máquina virtual Java, que por sua vez chama o programa de a Principal método. Na Listagem 2, o a Principal método executa apenas uma instrução - uma chamada para o lançamento método. chamando o lançamento método define rodas JavaFX do aplicativo executado em movimento.
Alternativamente, você pode executar um código JavaFX pré-embalados. Um pacote pré-embalados inclui tudo o que um computador precisa para executar um aplicativo. Este “tudo” inclui o código para verificar se há uma máquina virtual Java no computador do usuário, e código para baixar uma máquina virtual Java, se o computador não tiver uma. Quando você pré-embalagem de um aplicativo JavaFX Desta forma, o programa não precisa de um a Principal método. O sistema chama o programa de lançamento método automaticamente.
UMA .jarra arquivo é como um .fecho eclair arquivo, exceto que todos os .jarra arquivo contém determinados elementos específicos para programas Java. Uma das coisas que você pode colocar em um .jarra arquivo é um aplicativo JavaFX pré-embalados.
Quando você chamar a lançamento método, Java responde fazendo chamadas para o seu aplicativo de nisso e começar métodos. Você não vê um nisso método na Listagem 2 porque o seu a Principal classe herda o Aplicação classe de padrão nisso método. (Isso é bom porque o padrão nisso O método não faz nada.)
Coisas dentro de outras coisas
o começar método na Listagem 2 cria um parente. o parente é o ponto de partida de um Cena, e a Cena aparece em uma Etapa. Aqui está um pouco mais detalhadamente:
UMA Etapa é o que você normalmente chamam de “janela”.
É uma área de trabalho retangular na tela do usuário.
UMA Cena (Também conhecido como um grafo de cena) É uma árvore de componentes.
Por exemplo, uma Cena pode conter dois painéis. O painel mais à esquerda contém dois painéis menores - um painel superior e um painel inferior. O painel superior contém um botão-painel inferior contém um campo de texto. O painel mais à direita pode conter uma imagem e um rótulo para a imagem.
Em aplicação deste artigo, a árvore de componentes é bastante simples. o Cena contém um AnchorPane que por sua vez contém um Campo de texto e uma Botão. (Veja Lista 1.)
UMA parente é o ponto de partida para uma Cena.
Apesar do que aparece na marca anterior, uma Cena não pode começar a sua vida por ter dois painéis, ou por ter dois de nada. Cada Cena começa com um único componente, e esse componente deve ser do tipo parente. Assim, em aplicação deste artigo, o Cena contém uma parente, que contém um AnchorPane, que contém um Campo de texto e uma Botão.
o começar método na Listagem 2 conecta um parente para as componentes descritas na Listagem 1, associa um Cena com o parente, e em seguida associa um Etapa com o Cena. Finalmente, o código exibe o Etapa com uma chamada para o Etapa classe de exposição método.
Video: TUDO O QUE VOCÊ PRECISA? APLICATIVOS DE PALAVRAS CHAVES PARA VIDEOS NO YOUTUBE NÃO É DEMAIS?
Se você estiver familiarizado com o design da página web, você pode usar folhas de estilo em cascata (CSS) para descrever a aparência de uma cena. Na Listagem 2, a chamada para scene.getStyleSheets (). add associa uma folha de estilo com sua cena. Se seu .css arquivo está em branco (como no exemplo deste artigo), em seguida, chamar scene.getStyleSheets (). add não tem efeito.
Agir
Na Listagem 1, a linha de
dá-lhe uma maneira de se referir a um dos componentes na tela do usuário. Assim, na Listagem 2, a linha
Video: 6 JAVA FX JavaFX test simple app
TextField privada textField-
faz com que este campo de texto componente ser um objeto em seu código Java.
Video: IOS E SWIFT: PRIMEIROS PASSOS PARA CRIAR UM APP NO XCODE | TIAGO AGUIAR
Novamente na Listagem 1, do botão onAction atributo diz Java para chamar a classe do controlador onclick método quando o usuário clica no botão. Assim, na Listagem 2, o onclick método mexe com o texto dentro do campo de texto componente. (Mais especificamente, o onclick método obtém o texto no campo de texto, capitaliza o texto e, em seguida, coloca o texto capitalizado de volta para o campo de texto.) Esta é a forma como o programa sabe o que fazer quando o usuário clica no botão.
Você nem sempre tem que usar palavras como campo de texto. Você pode nomear algo bershmlug contanto que você use o nome de forma consistente. No arquivo FXML, você escreve
e no código Java, você escreve
@FXMLprivate TextField bershmlug-@FXMLprotected onclick (evento ActionEvent) void {bershmlug.setText (bershmlug.getText () toUpperCase ()) -.}
o @FXML anotações na Listagem 2 são para controle de acesso. Quando você executar um programa JavaFX, uma carregador agarra seu código FXML e converte-lo em código Java. (Ele “carrega” o código FXML em seu programa.) Para fazer o seu trabalho, o carregador deve acessar nomes como campo de texto e onclick na Listagem 2. Mas lembre-se: Este carregador não é parte de seu próprio programa. O carregador pertence a bibliotecas padrão de Java.
Como você pode controlar o acesso aos nomes campo de texto e onclick? modificadores de acesso comuns de Java (público, protegido, privado e padrão) deixá-lo pouca escolha. Com esses modificadores, a única forma de permitir o acesso por um programa externo é declarar campo de texto e onclick ser estar público. Mas, para muitos desenvolvedores, o uso indiscriminado de público o acesso é considerado acanhado. Com público Acesso, cada classe tem acesso a campo de texto e onclick. Isso não é realmente o que um desenvolvedor JavaFX quer.
Para resolver este problema, o @FXML anotação fornece um tipo especial de acesso. Na Listagem 2, o campo de texto variável é privado por isso, normalmente, nenhuma classe diferente a Principal pode acessar o campo de texto variável. Mas o @FXML anotação concede privilégio especial para o carregador. Ao contrário de qualquer outro código, o código do gestor pode fazer referência a campo de texto variável. Quando você compilar e executar o seu programa, Java vê o @FXML anotação e faz truques especiais para fornecer acesso para o carregador.
O mesmo tipo de coisa é verdade para o onclick método. sem a @FXML anotação, o onclick protegida método poderia ser chamado apenas a partir de classes em seu próprio aplicação pacote, e de subclasses da sua a Principal classe. O carregador é nenhuma dessas coisas. Então, para conceder acesso especial pelo carregador para o seu onclick método, você prefaciar o seu onclick declaração de método com @FXML.