JavaFX est une bibliothèque d'interface graphique qui facilite la création d'une interface graphique sympa qui s'exécute sur le bureau sur un soi-disant PC. Puisqu'il s'agit d'une bibliothèque Java, elle peut être utilisée dans un environnement où s'exécute Java SE (Java Platform, Standard Edition). Ce sera un PC exécutant un système d'exploitation tel que Linux, MacOS et Windows. De plus, comme le résultat binaire compilé (code d'octet Java), qui est une fonctionnalité des programmes Java, est commun quel que soit le système d'exploitation, les programmes créés sur un système d'exploitation peuvent être exécutés comme ils le sont sur un autre système d'exploitation.
Java en tant que langage de programmation se concentre sur les fonctionnalités de la programmation orientée objet. Récemment, nous intégrons les fonctions d'autres langages de programmation avancés, comme les fonctions de programmation fonctionnelle, mais il y a quelques points insuffisants par rapport aux fonctions des langages de programmation avancés. Cependant, Java en tant qu'environnement possède une multitude de bibliothèques standard, un grand nombre de bibliothèques et d'outils tiers, et l'écosystème Java est très puissant et surpasse celui des autres langages.
Ici, bien que le code source soit un langage de programmation différent de Java, il existe un groupe de langages de programmation appelé langage JVM qui peut être exécuté sur l'environnement d'exécution Java lorsque le résultat de la compilation devient du code d'octet Java. Les langages JVM typiques incluent de nouveaux langages tels que Scala, Groovy, Clojure et Kotlin, ainsi que des langages de programmation existants tels que JRuby et Jython exécutés sur Java.
Une multitude de bibliothèques standard Java et tierces sont disponibles à partir de ces langages JVM. Par conséquent, vous pouvez tirer parti des nombreux atouts de Java tout en effectuant une programmation avancée à l'aide du langage JVM.
Kotlin, l'un des langages JVM, est un langage de programmation qui hérite des caractéristiques de Java en tant que langage de programmation à usage général, mais qui a la capacité de programmer de manière plus concise, plus productive et plus sûre. De plus, nous mettons l'accent sur l'interopérabilité avec Java, et il est conçu pour que non seulement Java puisse être appelé depuis Kotlin mais aussi Kotlin puisse être appelé depuis Java.
Lorsque vous utilisez JavaFX de Kotlin, les fonctions uniques à Kotlin (plus concises / productives / sûres) ne peuvent pas être pleinement utilisées en accédant directement à l'API JavaFX. Par conséquent, TornadoFX, une bibliothèque qui a complètement remodelé JavaFX dans le style Kotlin, a été développée.
Cet article est le prochain article pour créer un programme appelé Hello world avec un petit mouvement comme JavaFX.
Article suivant sur la création de ce programme avec Kotlin
Dans la troisième partie qui suit, il sera créé en appelant JavaFX depuis Kotlin via TornadoFX.
L'environnement de programmation Kotlin utilise IntelliJ IDEA Community Edition [^ 1].
[^ 1]: IntelliJ IDEA est un outil de programmation (IDE d'environnement de développement intégré) développé et vendu par JetBrains. L'édition communautaire est limitée dans ses fonctionnalités, mais est fournie gratuitement, et l'environnement de développement Kotlin est également inclus en standard avec l'édition communautaire. Il existe également un plug-in TornadeFX.
article | Contenu |
---|---|
CPU | AMD PhenomⅡ 1055T (6 cœurs) |
OS | Version japonaise de Windows 10 64 bits |
Mémoire | 16GB |
Graphique | NVIDIA GeForce GTX 760 |
disque | SATA SSD 500GB |
JDK | Oracle JDK 9.0.4 |
IntelliJ IDEA | 2017.3.5 Community Edition |
TornadoFX | 1.7.14 |
URL de téléchargement d'IntelliJ IDEA https://www.jetbrains.com/idea/download/
IntelliJ IDEA applique un outil de localisation japonais appelé Pléiades pour le japonaisiser. Lors de la description de la procédure de fonctionnement d'IntelliJ IDEA dans cet article, nous utiliserons les noms des menus, boutons, onglets, etc. qui ont été traduits en japonais. Manuel japonais pour les produits basés sur IntelliJ
URL de téléchargement pour Oracle JDK 9.0.4 http://www.oracle.com/technetwork/java/javase/downloads/index.html
Installez le plug-in Tornado FX sur IntelliJ IDEA.
TornadoFX existe dans le volet gauche, et lorsque vous le sélectionnez, les types de projets maven ou gradle sont répertoriés dans le volet droit.
Gradle inclus dans le plug-in Gradle d'IntelliJ IDEA est la version 4.0 à compter du 15 mars 2018. Son utilisation avec JDK 9 entraînera une erreur.
Could not determine java version from '9.0.4'.
Puisque la prise en charge de JDK 9 est Gradle 4.2.1 ou version ultérieure, dans ce cas, il est préférable d'installer et d'utiliser Gradle 4.2.1 ou version ultérieure localement au lieu de l'encapsuleur Gradle.
Il existe un répertoire généré par défaut, un fichier de configuration et un exemple de fichier source. De plus, dans la zone d'état (en bas de l'écran IntelliJ IDEA), vous serez invité à importer Gradle.
Cliquez sur l'icône de notification dans le coin inférieur droit de l'écran IntelliJ IDEA pour ouvrir le journal des événements avec le message. Immédiatement après la création d'un nouveau projet, la bibliothèque définie par la dépendance n'a pas encore été téléchargée, alors importez d'abord Gradle. Cliquez sur Importer le projet Gradle dans le message de la zone Journal des événements. Cliquez pour ouvrir l'écran "Importer des modules depuis Gradle" [^ 2].
[^ 2]: Quand j'ai fermé cet écran avec [Annuler], j'ai eu du mal à ne pas savoir où appeler cet écran la prochaine fois. Le lien dans le message du journal des événements était grisé et le lien n'était pas valide. De plus, les éléments de menu qui s'ouvrent dans le menu Affichage> Fenêtre Outils n'incluent pas Gradle. Une fois que j'ai fermé IntelliJ IDEA et l'ai redémarré, le lien dans le message du journal des événements a été activé et j'ai finalement pu rouvrir l'écran.
Cliquez sur le bouton [OK] pour démarrer le réglage.
Dans un environnement où il existe un pare-feu sur la connexion Internet, il peut être nécessaire de définir un serveur proxy, mais cet article omet l'explication [^ 3].
[^ 3]: Cet article est écrit à la maison sans serveur proxy.
Le projet généré par le plug-in TornadoFX contient trois fichiers source sous forme de code de démonstration: MyApp, Styles et MainView. En construisant et en exécutant ceci, il est confirmé si l'environnement de programmation a été construit correctement.
Lorsque vous ouvrez le menu Exécuter, Exécuter, Déboguer et Exécuter avec couverture sont désactivés. Tout d'abord, vous devez configurer les paramètres de démarrage. Le moyen le plus simple consiste à cliquer avec le bouton droit sur le fichier de classe App Inheritance (MyApp dans le code de démonstration), qui est le point d'entrée pour exécuter le programme, et sélectionnez Exécuter.
En cas de succès, vous verrez l'écran suivant.
À partir de maintenant, lorsque vous ouvrez le menu Exécuter, Exécuter, Déboguer et Exécuter avec couverture sont activés. De plus, si vous sélectionnez le menu [Exécuter]> [Exécuter la configuration de lancement], [MyApp] est ajouté aux options.
La génération d'un projet TornadoFX générera du code de démonstration, mais le rejettera et créera les deux classes suivantes:
nom de la classe | Contenu |
---|---|
MessageBoardApp | Une classe qui hérite de l'application TornadoFX qui encapsule la classe d'application JavaFX |
MessageBoardView | Une classe qui hérite de la vue de TornadoFX qui montre un graphique de scène |
Dans le code de démonstration, le package a été divisé en application et vue, mais cette fois, nous le placerons dans le même package.
MessageBoardApp.kt
package com.torutk.messageboard
import tornadofx.App
class MessageBoardApp: App(MessageBoardView::class)
MessageBoardApp hérite de la classe App de TornadoFX, qui hérite de la classe Application de JavaFX, et reçoit la classe MessageBoardView qui définit la vue (graphe de scène) comme argument du constructeur principal. Il ne comporte aucune implémentation de code du tout. Dans la classe d'héritage Application de JavaFX, j'ai écrit le code de routine qui remplace la méthode de démarrage et joue avec Stage et Scene. TornadoFX élimine le besoin d'écrire ce code de routine.
MessageBoardView.kt
package com.torutk.messageboard
import javafx.scene.Group
import javafx.scene.text.Text
import tornadofx.*
class MessageBoardView : View() {
override val root = Group()
init {
val message = Text("Hello, Kotlin. This is TornadoFX.")
message.layoutY = 50.0
root += message
}
}
MessageBoardView hérite de la classe View de TornadoFX, génère JavaFX Group en tant que nœud racine et génère du texte en tant que nœud enfant de Group pour composer le graphique de scène. Étant donné que le nœud racine est défini dans la classe View en tant que propriété, remplacez-le par un remplacement pour définir le nœud enfant. Le remplacement de la propriété racine crée et affecte une instance de la classe Group.
Le bloc init est un bloc d'initialisation. Étant donné que le constructeur principal ne peut définir que des propriétés, le code écrit dans le bloc init est exécuté lors de l'instanciation avec le constructeur principal. Vous pouvez vous référer aux propriétés du bloc init.
Dans ce bloc d'initialisation, le texte est instancié, positionné (layoutY) et ajouté au nœud racine en tant que nœud enfant. L'ajout de nœuds enfants au nœud racine utilise la surcharge d'opérateurs.
Lançons-le.
Des fonctions sont fournies pour générer des contrôles JavaFX. Ceux-ci prennent une expression lambda à la fin de l'argument.
Le code suivant définit une fonction de groupe de générateur qui crée un groupe au niveau du nœud racine et utilise une fonction de texte de générateur qui y crée un texte.
MessageBoardView.kt
class MessageBoardView : View() {
override val root = group {
text("Hello, Kotlin. This is TornadoFX.") {
layoutY = 50.0
}
}
}
De cette manière, la structure hiérarchique du graphe de scène peut être représentée par une structure imbriquée.
Le message qui coule utilise TranslateTransition de JavaFX. Dans TornadoFX, la fonction d'extension move décrit une animation utilisant TranslateTransition.
MessageBoardView.kt
class MessageBoardView : View() {
override val root = group {
text("Hello, Kotlin. This is TornadoFX.") {
layoutY = 50.0
move(Duration.seconds(8.0), Point2D(-layoutBounds.width, 0.0), Interpolator.LINEAR, play = true) {
fromX = layoutBounds.width
cycleCount = Animation.INDEFINITE
}
}
}
}
Les arguments de déplacement spécifient la durée, la destination, la méthode d'interpolation et s'il faut exécuter l'animation immédiatement. Étant donné que la source de déplacement et le nombre de répétitions n'ont pas été spécifiés dans l'argument de déplacement, ils sont spécifiés dans l'expression lambda.
Je le ferai.
Dans TornadoFX, l'apparence des polices et des couleurs est définie par CSS réalisé par le DSL de Kotlin, mais cette fois, il est défini par l'API JavaFX au lieu de CSS pour la commodité d'une animation fluide.
MessageBoardView.kt
class MessageBoardView : View() {
override val root = group {
text("Hello, Kotlin. This is TornadoFX.") {
font = Font.font("Serif", FontWeight.SEMI_BOLD, 32.0)
fill = Color.DARKMAGENTA
layoutY = 50.0
move(Duration.seconds(8.0), Point2D(-layoutBounds.width, 0.0), Interpolator.LINEAR, play = true) {
fromX = layoutBounds.width
cycleCount = Animation.INDEFINITE
}
}
}
}
Je le ferai.
Recommended Posts