JavaFX ist eine GUI-Bibliothek, die es einfach macht, eine coole GUI zu erstellen, die auf dem Desktop auf einem sogenannten PC ausgeführt wird. Da es sich um eine Java-Bibliothek handelt, kann sie in einer Umgebung verwendet werden, in der Java SE (Java Platform, Standard Edition) ausgeführt wird. Dies ist ein PC mit Betriebssystemen wie Linux, MacOS und Windows. Da die kompilierte Ergebnisbinärdatei (Java-Bytecode), die eine Funktion von Java-Programmen ist, unabhängig vom Betriebssystem üblich ist, können auf einem Betriebssystem erstellte Programme so ausgeführt werden, wie sie auf einem anderen Betriebssystem sind.
Java als Programmiersprache konzentriert sich auf die Funktionalität der objektorientierten Programmierung. In letzter Zeit haben wir die Funktionen anderer fortgeschrittener Programmiersprachen integriert, beispielsweise die Funktionen der funktionalen Programmierung, aber es gibt einige unzureichende Punkte im Vergleich zu den Funktionen fortgeschrittener Programmiersprachen. Java als Umgebung verfügt jedoch über eine Fülle von Standardbibliotheken, eine große Anzahl von Bibliotheken und Tools von Drittanbietern, und das Java-Ökosystem ist sehr stark und übertrifft das anderer Sprachen.
Obwohl der Quellcode eine andere Programmiersprache als Java ist, gibt es hier eine Programmiersprachengruppe namens JVM-Sprache, die in der Java-Ausführungsumgebung ausgeführt werden kann, wenn das Kompilierungsergebnis zu Java-Bytecode wird. Typische JVM-Sprachen sind neue Sprachen wie Scala, Groovy, Clojure und Kotlin sowie vorhandene Programmiersprachen wie JRuby und Jython, die auf Java ausgeführt werden.
In diesen JVM-Sprachen stehen zahlreiche Java-Standardbibliotheken und Bibliotheken von Drittanbietern zur Verfügung. Daher können Sie die umfangreichen Ressourcen von Java nutzen, während Sie die erweiterte Programmierung mit der JVM-Sprache durchführen.
Kotlin, eine der JVM-Sprachen, ist eine Programmiersprache, die die Eigenschaften von Java als Allzweck-Programmiersprache erbt, jedoch präziser, produktiver und sicherer programmieren kann. Darüber hinaus legen wir Wert auf die Interoperabilität mit Java. Sie ist so konzipiert, dass nicht nur Java von Kotlin aus aufgerufen werden kann, sondern auch Kotlin von Java aus.
Wenn Sie JavaFX von Kotlin verwenden, können die für Kotlin spezifischen Funktionen (präziser / produktiver / sicherer) nicht vollständig genutzt werden, indem Sie direkt auf die JavaFX-API klicken. Aus diesem Grund wurde TornadoFX entwickelt, eine Bibliothek, die JavaFX gründlich in den Kotlin-Stil umgestaltet hat.
Dieser Artikel ist der nächste Artikel, der ein sogenanntes Hello World-ähnliches Programm mit einer kleinen Bewegung wie JavaFX erstellt.
Nächster Artikel über das Erstellen dieses Programms mit Kotlin
Als dritter Teil wird es erstellt, indem JavaFX von Kotlin über TornadoFX aufgerufen wird.
Die Kotlin-Programmierumgebung verwendet IntelliJ IDEA Community Edition [^ 1].
[^ 1]: IntelliJ IDEA ist ein Programmiertool (integrierte Entwicklungsumgebung IDE), das von JetBrains entwickelt und verkauft wird. Die Community Edition ist in ihrer Funktionalität eingeschränkt, wird jedoch kostenlos zur Verfügung gestellt. Die Kotlin-Entwicklungsumgebung ist standardmäßig in der Community Edition enthalten. Es gibt auch ein TornadeFX-Plug-In.
Artikel | Inhalt |
---|---|
CPU | AMD Phenom® 1055T (6 Kerne) |
OS | Japanische Windows 10 64-Bit-Version |
Erinnerung | 16GB |
Grafik | NVIDIA GeForce GTX 760 |
Scheibe | SATA SSD 500GB |
JDK | Oracle JDK 9.0.4 |
IntelliJ IDEA | 2017.3.5 Community Edition |
TornadoFX | 1.7.14 |
IntelliJ IDEA Download-URL https://www.jetbrains.com/idea/download/
IntelliJ IDEA wendet ein japanisches Lokalisierungstool namens Pleiades an, um es zu japanisieren. Bei der Beschreibung der Funktionsweise von IntelliJ IDEA in diesem Artikel werden die Namen von Menüs, Schaltflächen, Registerkarten usw. verwendet, die ins Japanische übersetzt wurden. Japanisches Handbuch für IntelliJ-basierte Produkte
URL für Oracle JDK 9.0.4 herunterladen http://www.oracle.com/technetwork/java/javase/downloads/index.html
Installieren Sie das Tornado FX-Plug-In auf IntelliJ IDEA.
TornadoFX ist im linken Bereich vorhanden. Wenn Sie es auswählen, werden die Maven- oder Gradle-Projekttypen im rechten Bereich aufgelistet.
Gradle im Gradle-Plug von IntelliJ IDEA ist ab dem 15. März 2018 Version 4.0. Die Verwendung mit JDK 9 führt zu einem Fehler.
Could not determine java version from '9.0.4'.
Da JDK 9 Gradle 4.2.1 oder höher unterstützt, ist es in diesem Fall besser, Gradle 4.2.1 oder höher lokal anstelle von Gradle Wrapper zu installieren und zu verwenden.
Standardmäßig werden ein Verzeichnis, eine Konfigurationsdatei und eine Beispielquelldatei generiert. Außerdem werden Sie im Statusbereich (am unteren Rand des IntelliJ IDEA-Bildschirms) aufgefordert, Gradle zu importieren.
Klicken Sie auf das Benachrichtigungssymbol in der unteren rechten Ecke des IntelliJ IDEA-Bildschirms, um das Ereignisprotokoll mit der Nachricht zu öffnen. Unmittelbar nach dem Erstellen eines neuen Projekts wurde die durch die Abhängigkeit definierte Bibliothek noch nicht heruntergeladen. Importieren Sie daher zuerst Gradle. Klicken Sie in der Nachricht im Bereich Ereignisprotokoll auf Gradle-Projekt importieren. Klicken Sie hier, um den Bildschirm "Module aus Gradle importieren" zu öffnen [^ 2].
[^ 2]: Als ich diesen Bildschirm mit [Abbrechen] schloss, fiel es mir schwer, nicht zu wissen, wo ich diesen Bildschirm das nächste Mal aufrufen soll. Der Link in der Ereignisprotokollnachricht wurde abgeblendet und der Link war ungültig. Außerdem enthalten die Menüelemente, die im Menü Ansicht> Werkzeugfenster geöffnet werden, Gradle nicht. Nachdem ich IntelliJ IDEA geschlossen und erneut gestartet hatte, wurde der Link in der Ereignisprotokollnachricht aktiviert und ich konnte den Bildschirm endlich wieder öffnen.
Klicken Sie auf die Schaltfläche [OK], um die Einstellung zu starten.
In einer Umgebung, in der sich eine Firewall in der Internetverbindung befindet, muss möglicherweise ein Proxyserver eingerichtet werden, aber ich werde die Erklärung in diesem Artikel [^ 3] weglassen.
[^ 3]: Dieser Artikel wurde zu Hause ohne Proxyserver geschrieben.
Das vom TornadoFX-Plug-In generierte Projekt enthält drei Quelldateien als Demo-Code: MyApp, Styles und MainView. Durch das Erstellen und Ausführen wird bestätigt, ob die Programmierumgebung korrekt erstellt wurde.
Wenn Sie das Menü Ausführen öffnen, sind Ausführen, Debuggen und Ausführen mit Abdeckung deaktiviert. Zunächst müssen Sie die Starteinstellungen konfigurieren. Am einfachsten ist es, mit der rechten Maustaste auf die App Inheritance-Klassendatei (MyApp im Demo-Code) zu klicken, die der Einstiegspunkt für die Ausführung des Programms ist, und Ausführen auszuwählen.
Bei Erfolg wird der folgende Bildschirm angezeigt.
Wenn Sie von nun an das Menü "Ausführen" öffnen, werden "Ausführen", "Debuggen" und "Mit Abdeckung ausführen" aktiviert. Wenn Sie das Menü [Ausführen]> [Startkonfiguration ausführen] auswählen, wird den Optionen [MyApp] hinzugefügt.
Wenn Sie ein TornadoFX-Projekt generieren, wird Demo-Code generiert. Werfen Sie diese jedoch weg und erstellen Sie die folgenden zwei Klassen:
Name der Klasse | Inhalt |
---|---|
MessageBoardApp | Eine Klasse, die die TornadoFX-App erbt, die die JavaFX-Anwendungsklasse umschließt |
MessageBoardView | Eine Klasse, die die Ansicht von TornadoFX erbt und ein Szenendiagramm zeigt |
Im Demo-Code wurde das Paket in App und Ansicht unterteilt, aber dieses Mal werden wir es in dasselbe Paket einfügen.
MessageBoardApp.kt
package com.torutk.messageboard
import tornadofx.App
class MessageBoardApp: App(MessageBoardView::class)
MessageBoardApp erbt die App-Klasse von TornadoFX, die die Application-Klasse von JavaFX erbt, und empfängt die MessageBoardView-Klasse, die die Ansicht (Szenendiagramm) als Argument des primären Konstruktors definiert. Es gibt überhaupt keine Code-Implementierung. In der Anwendungsvererbungsklasse von JavaFX habe ich den Routinecode geschrieben, der die Startmethode überschreibt und mit Stage und Scene herumspielt. TornadoFX macht das Schreiben dieses Routinecodes überflüssig.
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 erbt die View-Klasse von TornadoFX, generiert die JavaFX-Gruppe als Stammknoten und generiert Text als untergeordneten Knoten der Gruppe, um das Szenendiagramm zu erstellen. Da der Stammknoten in der View-Klasse als Eigenschaft definiert ist, überschreiben Sie ihn mit override, um den untergeordneten Knoten zu definieren. Durch Überschreiben der Root-Eigenschaft wird eine Instanz der Group-Klasse erstellt und zugewiesen.
Der Init-Block ist ein Initialisierungsblock. Da der Primärkonstruktor nur Eigenschaften definieren kann, wird der im Init-Block geschriebene Code beim Instanziieren mit dem Primärkonstruktor ausgeführt. Sie können auf Eigenschaften im Init-Block verweisen.
In diesem Init-Block wird Text instanziiert, positioniert (layoutY) und als untergeordneter Knoten zum Stammknoten hinzugefügt. Das Hinzufügen von untergeordneten Knoten zum Stammknoten verwendet eine Operatorüberladung.
Lass es uns laufen.
Es werden Funktionen zum Generieren von JavaFX-Steuerelementen bereitgestellt. Diese nehmen am Ende des Arguments einen Lambda-Ausdruck an.
Der folgende Code definiert eine Builder-Gruppenfunktion, die eine Gruppe am Stammknoten erstellt, und verwendet eine Builder-Textfunktion, die einen Text darin erstellt.
MessageBoardView.kt
class MessageBoardView : View() {
override val root = group {
text("Hello, Kotlin. This is TornadoFX.") {
layoutY = 50.0
}
}
}
Auf diese Weise kann die hierarchische Struktur des Szenendiagramms durch eine verschachtelte Struktur dargestellt werden.
Die fließende Nachricht verwendet die TranslateTransition von JavaFX. In TornadoFX beschreibt die Erweiterungsfunktion move eine Animation mit 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
}
}
}
}
Die Verschiebungsargumente geben die Dauer, das Ziel, die Interpolationsmethode und an, ob die Animation sofort ausgeführt werden soll. Da die Verschiebungsquelle und die Anzahl der Wiederholungen im Verschiebungsargument nicht angegeben wurden, werden sie im Lambda-Ausdruck angegeben.
Ich werde das machen.
In TornadoFX wird das Erscheinungsbild von Schriftarten und Farben durch CSS definiert, das von Kotlins DSL realisiert wird. Diesmal wird es jedoch von der JavaFX-API anstelle von CSS definiert, um fließende Animationen zu ermöglichen.
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
}
}
}
}
Ich werde das machen.
Recommended Posts