Introduction à Javafx
Lorsque nous mentionnons la bibliothèque d'interface graphique de Java, nous entendons généralement Swing, ou AWT plus ancien, y compris les deux introduits dans de nombreux livres. De nombreuses écoles et cours de formation enseignent également ces deux technologies. Mais en fait, les deux technologies sont dépassées depuis longtemps. Bien qu'il ne soit pas difficile d'apprendre le swing, il est en fait très difficile d'écrire l'interface en l'utilisant. Parce que son interface et son code ne sont pas séparés, le code doit être rempli d'un grand nombre de coordonnées lors de l'écriture, et il est extrêmement difficile à modifier. La meilleure chose à cet égard est le WPF de Microsoft, et je peux seulement dire qui peut l'utiliser et qui le sait.
Bien sûr, bien que la rédaction de programmes graphiques clients soit la faiblesse de Java, Java n'a pas abandonné cet effort. Le Javafx introduit aujourd'hui est la dernière technologie pour Java à écrire des programmes d'interface graphique. Si vous prévoyez d'écrire des programmes d'interface graphique en Java sans aucun fardeau historique, il est fortement recommandé d'utiliser Javafx.
Ce sont les ressources et la documentation sur Javafx sur le site officiel d'Oracle.
Il s'agit d'un programme d'exemple officiel, nous pouvons nous référer à la section Javafx pour apprendre à l'utiliser. Vous trouverez ci-dessous l'un des programmes Fractal Javafx. En cliquant sur les numéros ci-dessus, il peut saisir différents écrans microscopiques. C'est comme regarder le monde microscopique des virus, ce qui est très choquant.
Comment installer
Tant que vous avez installé la dernière version de JDK 8, vous pouvez utiliser la bibliothèque Javafx. S'il n'est pas installé, commencez à l'installer rapidement.
Commencez rapidement
Le premier programme
Créez un nouveau projet, puis écrivez la classe suivante, puis compilez et exécutez pour voir les résultats. Il n'est pas nécessaire d'expliquer ce programme. Si vous avez de l'expérience dans l'apprentissage du swing et d'autres cadres d'interface graphique, il devrait être très facile de comprendre ce code. Bien sûr, comme Javafx est une nouvelle chose, j'utilise également la nouvelle fonctionnalité des expressions Java 8 - Lambda.
Package yitian.javafxsample; import javafx.application.application; importer javafx.scene.scene; import javafx.scene.control.button; import javafx.scene.layout.stackpane; import javafx.stage.Stage; Stage PrimaryStai btn = new Button (); btn.setText ("Hello, world"); btn.setOnaction (événement -> {System.out.println ("Hello, World!");}); StackPane root = new EmplackPane (); root.getchildren (). Add (btn); Scène = nouvelle scène (root, 300, 250); primaireStage.SetTitle (Hello Scène (Root, 300, 250); primaire. Monde! "); Primairestage.setsCene (scène); primairestage.show ();} public static void main (String [] args) {lancement (args);}}La capture d'écran en cours est la suivante.
Entrée utilisateur
Ce programme peut être utilisé pour gérer les situations de connexion des utilisateurs. Le code est le suivant et les parties importantes ont été commentées. La dernière partie du code utilise la fonction setOnaction pour ajouter un événement de clic au bouton, et le texte sera affiché lorsque le bouton est cliqué.
classe publique UserInInput étend l'application {@Override public void start (stade primorstage) lève une exception {// Grid Layout GridPane Grid = new GridPane (); Grid.setalignment (POS.Center); // Grid Vertical Espace Grid.sethgap (10); // Grid Horizontal Espace Grid.SetVgap (10); GRID.Setpaddin 25, 25, 25)); // Nouvelle scène de scène Scène = nouvelle scène (Grid, 300, 275); primairestage.setsCene (scène); // ajouter le titleText SceneTitle = new Text ("Welcome"); ScetEtle.Setfont (Font.Font ("Tahoma", FONTTERS.NORMAL, 1); et texte boxesLabel username = new Label ("username:"); grid.add (username, 0, 1); textfield userTextField = new TextField (); grid.add (userTextField, 1, 1); // Ajouter des balises et des boîtes de mot de passe Label PW = NOUVEAU Label ("Password:"); Grid.add (pw, 0, 2); PasswordField PWBox = New Passwordfield (); grid.add (pwbox, 1, 2); // Button de soumission du bouton de soumission btn = new Button ("Login"); hbox hbbtn = new hbox (10); hbbtn.setalignment (pos.bottom_right); hbbtn.getchildren (). ActionTarget = new Text (); grid.add (ActionTarget, 1, 6); btn.setOnaction (event -> {actiontarget.setFill (colore.firebrick); actiontarget.setText ("Login");}); primairestage.settitle ("javafx welcome"); primaire. {lancement (args);}}La capture d'écran du programme en cours d'exécution est la suivante.
Ce programme n'est en fait pas difficile, il utilise la disposition de la grille, puis ajoute chaque élément à la grille. Pour la signification de l'attribut de la mise en page de la grille, veuillez vous référer au chiffre officiel.
Concevoir une interface utilisateur avec FXML
Les cadres d'interface graphique modernes prennent en charge la séparation de l'interface et du code, et le langage descriptif le plus utilisé est XML, tel que QML pour QT et XAML pour WPF. Bien sûr, Javafx a également une langue similaire appelée FXML. Si vous avez besoin de connaître FXML en détail, vous pouvez vous référer à l'article Introduction à FXML sur le site officiel d'Oracle.
Réécrivons le petit exemple ci-dessus dans FXML, et chaque pièce est commentée. Si vous avez appris d'autres langages descriptifs similaires, vous constaterez que ceux-ci sont en fait similaires. La seule chose à noter est l'attribut FX: Contrôleur dans la mise en page, qui spécifie un contrôleur, et la fonction du contrôleur est d'écrire le code correspondant de l'interface.
<? xml version = "1.0" Encoding = "utf-8"?> <! - Importer la classe -> <? Importer javafx.geometry.insets?> <? Importer javafx.scene.Control. *?> <? Importer javafx.scene.layout. *?> <? Importer javafx.scenet.Text.font?> <? Importer javafx. Layout -> <gridpane xmlns = "http://javafx.com/javafx" xmlns: fx = "http://javafx.com/fxml" fx: contrôleur = "yitian.javafxsample.controller" hgap = "10" vgap = "10"> <adding> <insets top = "25" droite = "25" en bas = "10" Left = "25" /> </ padding> <! - bienvenue text -> <text text = "bienvenue" gridpane.columnindex = "0" gridpane.rowindex = "0" gridpane.columnpan = "2"> <font> <font> <font> name = "Consolas" size = "20" /> </font> </ text> <label text = "username:" GridPane.ColumnIndex = "0" GridPane.RowIndex = "1" /> <TextField GridPane.ColumnIndex = "1" GRIDPANE.ROWINDEX = "1" /> <label = "Mot de passe:" GRIDPANE.CORNUM Gridpane.rowIndex = "2" /> <Passwordfield fx: id = "passwordfield" gridpane.columnindex = "1" gridpane.rowindex = "2" /> <! Mot de passe "onaction =" # showpasswordbutton "/> </hbox> <text fx: id =" hintText "gridpane.columnindex =" 0 "gridpane.columnspan =" 2 "gridpane.halignment =" droit "gridpane.rowindex =" 6 "/> </ gridpane>
Vous trouverez ci-dessous le contrôleur correspondant à ce fichier FXML, qui est une classe Java standard. L'ID spécifié par l'attribut FX: ID dans FXML peut être déclaré comme un champ de classe dans le contrôleur, à travers lequel vous pouvez interagir avec les composants d'interface. De même, le gestionnaire d'événements déclaré par OnAction est une méthode dans le contrôleur. Notez que ces champs et méthodes doivent être annotés à l'aide de l'annotation @FXML.
Importer javafx.event.actionEvent; Importer javafx.fxml.fxml; import javafx.scene.control.passwordField; import javafx.scene.text.text; Contrôleur de classe publique {@fxml Private Text Hinttex gensLa dernière chose à modifier est le programme principal. Dans le programme principal, vous devez utiliser FXMLLOADER pour charger les ressources FXML, et les autres parties n'ont pas beaucoup changé.
classe publique usefxml étend l'application {@Override public void start (stage primorstage) lève l'exception {parent root = fxmlloader.load (getClass (). getResource ("ui.fxml")); scine Fxml "); primairestage.setsCene (scène); primairestage.show ();} public static void main (String [] args) {lancement (args);}}La capture d'écran du programme en cours d'exécution est la suivante.
Si vous souhaitez modifier les styles de composants, Javafx fournit une interface CSS, nous permettant de modifier les styles directement à l'aide de fichiers CSS. Tout d'abord, vous devez ajouter une référence à la feuille de style correspondante dans le fichier FXML. Le @ devant le nom du fichier signifie que le fichier CSS et le fichier FXML sont dans le même répertoire.
<gridPane> <Stylesheets> <url value = "@ style.css" /> </ stylesheets> <gridpane />
Les feuilles de style sont similaires aux feuilles de style ordinaires, sauf que le préfixe spécifique à Javafx est requis.
#btnshowpassword {-fx-Background-Color: Deeppink;}Le sélecteur d'ID est utilisé ci-dessus, donc en conséquence, des attributs d'ID sont également requis dans FXML.
<Bouton id = "btnshowpassword" text = "showpassword" onaction = "# showpasswordbutton" />
Le programme après personnalisation est illustré sur la figure. J'ai simplement modifié la couleur d'arrière-plan du bouton. En fait, il existe de nombreux styles qui peuvent être modifiés, y compris les antécédents du programme, etc. Les étudiants intéressés peuvent l'essayer par eux-mêmes.
Résumer
Ce qui précède concerne cet article sur une compréhension préliminaire de Javafx. Si un étudiant souhaite utiliser Java pour écrire des programmes d'interface graphique, vous pouvez envisager d'utiliser Javafx, ce qui est un très bon choix. J'espère que cela sera utile à tout le monde. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!