Introdução ao Javafx
Quando mencionamos a biblioteca de interface gráfica de Java, geralmente ouvimos swing ou awt mais antigo, incluindo os dois introduzidos em muitos livros. Muitas escolas e aulas de treinamento também ensinam essas duas tecnologias. Mas, de fato, ambas as tecnologias estão desatualizadas há muito tempo. Embora não seja difícil aprender o balanço, é realmente muito difícil escrever a interface usando -a. Como sua interface e código não são separados, o código deve ser preenchido com um grande número de coordenadas ao escrever, e é extremamente difícil de modificar. A melhor coisa a esse respeito é o WPF da Microsoft, e só posso dizer quem pode usá -lo e quem sabe.
Obviamente, embora escrever programas de gráficos cliente seja a fraqueza de Java, Java não desistiu desse esforço. O JavaFX introduzido hoje é a mais recente tecnologia para o Java para escrever programas de interface gráfica. Se você planeja escrever programas de interface gráfica em Java sem qualquer carga histórica, é altamente recomendável usar o Javafx.
Este é o recurso e a documentação no Javafx no site oficial da Oracle.
Este é um programa de amostra oficial, podemos nos referir à seção Javafx para aprender como usá -lo. Abaixo está um dos programas Fractal Javafx. Clicar nos números acima pode inserir diferentes displays microscópicos. Parece assistir ao mundo microscópico dos vírus, o que é muito chocante.
Como instalar
Contanto que você tenha a versão mais recente do JDK 8 instalada, você pode usar a biblioteca Javafx. Se não estiver instalado, comece a instalá -lo rapidamente.
Comece rapidamente
O primeiro programa
Crie um novo projeto, depois escreva a aula a seguir e, em seguida, compile e execute para ver os resultados. Não há necessidade de explicar este programa. Se você tem experiência em aprender swing e outras estruturas de interface gráfica, deve ser muito fácil entender esse código. Obviamente, como o Javafx é uma coisa nova, também uso o novo recurso das expressões Java 8 - Lambda.
pacote yitian.javafxSample; importar javafx.application.application; importar javafx.scene.scene; importar javafx.scene.control.button; importar javafx.scene.layout.stackPane; importar javafx.stage.stage; public classe (hellojavafx Application { btn = new Button (); btn.settext ("hello, mundo"); btn.setonaction (event -> {System.out.println ("hello, mundo!");}); staackpane root = new Stackpane (); root.getChild (). Add (btn); cena; Mundo! "); Primarystage.SetScene (cenário); primarystage.show ();} public static void main (string [] args) {Launch (args);}}A captura de tela em execução é a seguinte.
Entrada do usuário
Este programa pode ser usado para lidar com situações de login de usuários. O código é o seguinte e as partes importantes foram comentadas. A última parte do código usa a função SetonAction para adicionar um evento de clique no botão e o texto será exibido quando o botão for clicado.
classe pública userInput Application estende o aplicativo {@Override public void start (palestystage) lança exceção {// grade gridpane grid = new gridpane (); grid.setalignment (10.Center); Inserções (25, 25, 25, 25)); // nova cena cena cena = nova cena (grade, 300, 275); primarystage.setscene (cena); // adicione o titleText cenário = new text ("Welcome"); cenário, scenTitle.setFont (Font.Font ("Tahoma", Fontweart.Normal, 20); 1); // Adicione tags e boxeslabel nome de usuário = new Label ("nome de usuário:"); grid.add (nome de usuário, 0, 1); textfield userTextfield = new textfield (); grid.add (userTextfield, 1, 1); // Adicionar tags e senha Passoudfield (); grid.add (pwbox, 1, 2); // Adicione o botão de envio do botão btn = new Button ("Login"); hbox hbbtn = new hbox (10); hbbtn.setalignment (Pos.bottom_right); hbbtn.getchildren (). 1 add); actiontarget = new text (); grid.add (actiontarget, 1, 6); btn.setOnaction (event -> {actionTarget.setFill (color.firebrick); actionTarget.Settext ("Login");}); primaryStage.Settitle ("Javafx bem -vindo"; {Launch (args);}}A captura de tela do programa em execução é a seguinte.
Na verdade, esse programa não é difícil, ele usa o layout da grade e depois adiciona cada elemento à grade. Para o significado do atributo do layout da grade, consulte a figura oficial.
Projetando uma interface de usuário com fxml
As estruturas de interface gráfica modernas suportam a separação da interface e do código, e a linguagem descritiva mais usada é XML, como QML para QT e XAML para WPF. Obviamente, o JavaFX também possui uma linguagem semelhante chamada FXML. Se você precisar conhecer o FXML em detalhes, pode consultar a introdução do artigo ao FXML no site oficial da Oracle.
Vamos reescrever o pequeno exemplo acima no FXML, e cada parte é comentada. Se você aprendeu outros idiomas descritivos semelhantes, descobrirá que eles são realmente semelhantes. A única coisa a observar é o atributo FX: controlador no layout, que especifica um controlador, e a função do controlador é escrever o código correspondente da interface.
<? xml versão = "1.0" coding = "utf-8"?> <!-importar classe-> <? importar javafx.geometry.insets?> <? Importar javafx.scene.Control.*? javafx.scene.Text.Text?> <!-Definir layout-> <gridpane xmlns = "http://javafx.com/javafx" xmlns: fx = "http://javafx.com/fxml" fx: controller = "yitian.jjhinhem.javafx..jAltian.ftian.ftian.jantian.jtafx..jAltian.ftian.ftian.jantian prefwidth = "600.0" alinhamento = "central" hgap = "10" vGap = "10"> <dadding> <insets top = "25" correto = "25" inferior = "10" esquerd = "25"/> </padding> <!-Texto de boas-vindas-> <Texto "Welcome" " Gridpane.columnspan = "2"> <font> <font name = "consolas" size = "20"/> </font> </text> <gravador text = "nome de usuário:" gridpane.columnindex = "0" GridPane.rowindex = "1"/> <Textfield GridPane.ColumnCoLumnEx "1" 1 "/> <Textfield GridPane.Columning" text = "senha:" gridpane.columnindex = "0" gridpane.RowIndex = "2"/> <PasswordField fx: id = "passwordfield" gridpane.columnindex = "1" gridpane.rowindex = "2"/> <!-e text-> <hbox.Rerster.kernment "alig. O objetivo deste estudo foi avaliar a eficácia do uso de#
Abaixo está o controlador correspondente a este arquivo FXML, que é uma classe Java padrão. O ID especificado pelo atributo FX: ID no FXML pode ser declarado como um campo de classe no controlador, através do qual você pode interagir com os componentes da interface. Da mesma forma, o manipulador de eventos declarado pela Onaction é um método no controlador. Observe que esses campos e métodos precisam ser anotados usando a anotação @FXML.
importar javafx.event.actionEvent; importar javafx.fxml.fxml; importar javafx.scene.control.passwordfield; importar javafx.scene.text.text; public class controller {@fxml private text hintText; @fxmling senha privada senha senha; {hintText.settext ("Mostrar senha:" + PasswordField.getText ());}}A última coisa a modificar é o programa principal. No programa principal, você precisa usar o FXMLLOADER para carregar os recursos FXML e as outras partes não mudaram muito.
public classe usefxml estende o aplicativo {@Override public void start (palestystage) lança exceção {pai root = fxmlloader.load (getClass (). getResource ("ui.fxml"); cena cena = nova cena (raiz, 300, 275); Fxml "); primaryStage.SetScene (cenário); primarystage.show ();} public static void main (string [] args) {Launch (args);}}A captura de tela do programa em execução é a seguinte.
Se você deseja modificar os estilos de componentes, o JavaFX fornece uma interface CSS, permitindo modificar os estilos diretamente usando os arquivos CSS. Primeiro, você precisa adicionar uma referência à folha de estilo correspondente no arquivo FXML. O @ na frente do nome do arquivo significa que o arquivo CSS e o arquivo FXML estão no mesmo diretório.
<Gridpane> <Stylesheets> <url value = "@style.css"/> </stylesheets> <gridpane/>
As folhas de estilo são semelhantes às folhas de estilo comuns, exceto que o prefixo específico de Javafx é necessário.
#BTNSHOWPassword {-fx-background-color: deeppink;}O seletor de ID é usado acima; portanto, correspondentemente, os atributos de ID também são necessários no FXML.
<Button id = "btnshowPassword" text = "ShowPassword" onaction = "#ShowpasswordButton"/>
O programa após a personalização é mostrado na figura. Simplesmente simplesmente modifiquei a cor de fundo do botão. De fato, existem muitos estilos que podem ser alterados, incluindo formação de programa, etc. Os alunos interessados podem experimentá -lo por conta própria.
Resumir
O exposto acima é sobre este artigo sobre um entendimento preliminar do Javafx. Se algum aluno quiser usar o Java para escrever programas de interface gráfica, considere usar o Javafx, o que é uma escolha muito boa. Espero que seja útil para todos. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!