Introducción a Javafx
Cuando mencionamos la biblioteca de interfaz gráfica de Java, generalmente escuchamos Swing o AWT más antiguo, incluidos los dos introducidos en muchos libros. Muchas escuelas y clases de capacitación también enseñan estas dos tecnologías. Pero, de hecho, ambas tecnologías han estado desactualizadas durante mucho tiempo. Aunque no es difícil aprender Swing, en realidad es muy difícil escribir la interfaz utilizándola. Debido a que su interfaz y código no están separados, el código debe llenarse con una gran cantidad de coordenadas al escribir, y es extremadamente difícil de modificar. Lo mejor a este respecto es el WPF de Microsoft, y solo puedo decir quién puede usarlo y quién lo sabe.
Por supuesto, aunque escribir programas de gráficos de clientes es la debilidad de Java, Java no ha renunciado a este esfuerzo. El Javafx presentado hoy es la última tecnología para Java para escribir programas de interfaz gráfica. Si planea escribir programas de interfaz gráficos en Java sin ninguna carga histórica, se recomienda usar Javafx.
Estos son los recursos y la documentación en Javafx en el sitio web oficial de Oracle.
Este es un programa de muestra oficial, podemos referirnos a la sección Javafx para aprender a usarlo. A continuación se muestra uno de los programas fractales de Javafx. Al hacer clic en los números de arriba puede ingresar diferentes pantallas microscópicas. Se siente como ver el mundo microscópico de los virus, lo cual es muy impactante.
Cómo instalar
Siempre que tenga la última versión de JDK 8 instalada, puede usar la biblioteca Javafx. Si no está instalado, comience a instalarlo rápidamente.
Empiece a comenzar rápidamente
El primer programa
Cree un nuevo proyecto, luego escriba la siguiente clase y luego compile y ejecute para ver los resultados. No hay necesidad de explicar este programa. Si tiene experiencia en el aprendizaje de Swing y otros marcos de interfaz gráficos, debería ser muy fácil entender este código. Por supuesto, dado que Javafx es algo nuevo, también uso la nueva característica de Java 8 - Expresiones Lambda.
paquete yitian.javafxsample; import javafx.application.application; import javafx.scene.scene; import javafx.scene.control.button; import javafx.scene.layout.stackpane; import javafx.stage.stage; public class HelloJavafx extiende la aplicación {@Override void start (stape stating) btn = new Button (); btn.settext ("Hello, World"); btn.setonAction (event -> {System.out.println ("¡Hola, mundo!");}); stackpane root = new StackPane (); root.getchildren (). Añadir (btn); escena = escena (nueva escena, 300, 250); primario del escenario. World! "); PrimaryStage.Setscene (escena); primario que.show ();} public static void main (string [] args) {lanzamiento (args);}}La captura de pantalla en ejecución es la siguiente.
Entrada de usuario
Este programa se puede usar para manejar situaciones de inicio de sesión del usuario. El código es el siguiente, y las partes importantes se han comentado. La última parte del código usa la función SetOnaction para agregar un evento de clic al botón, y el texto se mostrará cuando se haga clic en el botón.
Public Class UserInput extiende la aplicación {@Override public void Start (Stage PrimaryStage) lanza la excepción {// GRID LEING GridPane Grid = new GridPane (); Grid.Setalignment (pos.center); // Grid vertical vertical Grid.sethGap (10); // grid horizontal spacing.set.setvgap (10); 10); Insets(25, 25, 25, 25));//New scene Scene scene = new Scene(grid, 300, 275);primaryStage.setScene(scene);//Add the titleText sceneitle = new Text("Welcome");scenetitle.setFont(Font.font("Tahoma", FontWeight.NORMAL, 20));grid.add(scenetitle, 0, 0, 2, 1); // Agregar etiquetas y text boxeslabel username = new etiqueta ("username:"); grid.add (username, 0, 1); textfield useTextField = new textield (); grid.add (usertextfield, 1, 1); // Agregar etiquetas y contraseñas etiqueta pw = new etiqueta ("contraseña:"); Grid.add (pww, 0, 2, 2); PasswordField (); Grid.Add (PWBox, 1, 2); // Botón Agregar botón de envío btn = nuevo botón ("Login"); HBox HBBTN = new Hbox (10); HBBTN.Setalignment (pos.bottom_right); hbbtn.getChildren (). Add (btn); grid.add (hbbtn, 1, 4); ActionTarget = new Text (); Grid.Add (ActionTarget, 1, 6); Btn.SetOnAction (Event -> {ActionTarget.SetFill (color.fireBrick); ActionTarget.SetText ("login");}); primario.setTitle ("javafx bienvenido"); primario.shage ();} void [] {lanzamiento (args);}}La captura de pantalla del programa en ejecución es la siguiente.
Este programa en realidad no es difícil, utiliza el diseño de la cuadrícula y luego agrega cada elemento a la cuadrícula. Para el significado del atributo del diseño de la cuadrícula, consulte la figura oficial.
Diseño de una interfaz de usuario con FXML
Los marcos de interfaz gráficos modernos admiten la separación de la interfaz y el código, y el lenguaje descriptivo más utilizado es XML, como QML para QT y XAML para WPF. Por supuesto, Javafx también tiene un lenguaje similar llamado FXML. Si necesita saber en detalle FXML, puede consultar la introducción del artículo a FXML en el sitio web oficial de Oracle.
Reescribamos el pequeño ejemplo anterior en FXML, y se comenta cada parte. Si ha aprendido otros lenguajes descriptivos similares, encontrará que estos son realmente similares. Lo único a tener en cuenta es el atributo FX: Controller en el diseño, que especifica un controlador, y la función del controlador es escribir el código correspondiente de la interfaz.
<? xml versión = "1.0" encoding = "utf-8"?> <!-importación de importación-> <? import javafx.geometry.insets?> <? import javafx.scene.control.*?> <? import javafx.scene.layout.*?> <? import javafx.scene.text.font?> <? import javafx.scene.text.text?> <!-set Layout-> <Gridpane xmlns = "http://javafx.com/javafx" xmlns: fx = "http://javafx.com/fxml" fx: controler = "yitian.javafxsample.controller" prefheight " prefwidth = "600.0" alignment = "Center" hgap = "10" vgap = "10"> <ladding> <insets top = "25" right = "25" fondo = "10" izquierda = "25"/> </madding> <!-Bienvenido text-> <texto text = "bienvenido" bienvenido.columnindex = "0" gridpane.rowindox GridPane.columnspan = "2"> <font> <font name = "consolas" size = "20"/> </font> </text> <etiqueta text = "username:" gridpane.columnindex = "0" gridpane.rowindex = "1"/> <Textfield gridPane.colindex = "1" gridpane.Rowin text = "Password:" GridPane.ColumnIndex = "0" GridPane.RowIndex = "2"/> <Passwordfield fx: id = "Passwordfieldfield" GridPane.ColumnIndex = "1" GridPane.Rowindex = "2"/> <!-Botton y TEXT-<Hbox Spacing = "10" Alignment = "Bottom_right" GRIDPANE "GRIDPANE" GRIDPANE.COLEX. GridPane.RowIndex = "4"> <Button Text = "Show Password" onAction = "#showpasswordButton"/> </hbox> <text fx: id = "hinttext" gridpane.columnindex = "0" gridpane.columnspan = "2" gridpane.halignment = "right" gridpane.rowindex = "6" 6 "" 6 "/gridpane/gridpane/" GRIDPANE <"GRIDPANE.
A continuación se muestra el controlador correspondiente a este archivo FXML, que es una clase Java estándar. El ID especificado por el atributo FX: ID en FXML puede declararse como un campo de clase en el controlador, a través del cual puede interactuar con los componentes de la interfaz. Por el mismo token, el controlador de eventos declarado por OnAction es un método en el controlador. Tenga en cuenta que estos campos y métodos deben ser anotados utilizando la anotación @FXML.
import javafx.event.ActionEvent; import javafx.fxml.fxml; import javafx.scene.control.passwordfield; import javafx.scene.text.text; public Class Controller {@FXML Texto privado Hinttext; @fxml privado de contraseña privada; {hintText.setText ("Show Password:" + Passwordfield.gettext ());}}Lo último que debe modificar es el programa principal. En el programa principal, debe usar FXMLLOADER para cargar recursos FXML, y las otras partes no han cambiado mucho.
La clase pública USEFXML extiende la aplicación {@Override public void Start (Stage PrimaryStage) lanza la excepción {parent root = fxmlloader.load (getClass (). getResource ("ui.fxml")); escena = escena = nueva escena (raíz, 300, 275); primaria.settitle ("use use Fxml "); primario.setscene (escena); primariostage.show ();} public static void main (string [] args) {lanzamiento (args);}}La captura de pantalla del programa en ejecución es la siguiente.
Si desea modificar los estilos de componentes, Javafx proporciona una interfaz CSS, lo que nos permite modificar los estilos directamente usando archivos CSS. Primero, debe agregar una referencia a la hoja de estilo correspondiente en el archivo FXML. El @ frente al nombre del archivo significa que el archivo CSS y el archivo FXML están en el mismo directorio.
<gridPane> <Sylesheets> <url value = "@style.css"/> </sylesheets> <GridPane/>
Las hojas de estilo son similares a las hojas de estilo ordinarias, excepto que se requiere un prefijo específico de Javafx.
#BtnShowPassword {-fx-Background-Color: Deeppink;}El selector de ID se usa anteriormente, por lo que, en consecuencia, los atributos de ID también se requieren en FXML.
<Botón id = "btnshowpassword" text = "showpassword" onaction = "#showpasswordButton"/>
El programa después de la personalización se muestra en la figura. Simplemente he modificado el color de fondo del botón. De hecho, hay muchos estilos que se pueden cambiar, incluidos los antecedentes del programa, etc. Los estudiantes interesados pueden probarlo por su cuenta.
Resumir
Lo anterior se trata de este artículo sobre una comprensión preliminar de Javafx. Si algún estudiante quiere usar Java para escribir programas de interfaz gráfica, puede considerar usar Javafx, que es una muy buena opción. Espero que sea útil para todos. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!