Développement d'applications JavaFX avec IntelliJ IDEA et Gradle ~ De la construction d'environnement à l'exemple de code ~

0. Introduction

Maintenant, l'auteur est sous pression pour créer un logiciel qui utilise les outils GUI acclamés. ~~ Je l'ai laissé longtemps ~~ Je l'ai commencé récemment, mais il a fallu beaucoup de temps pour créer un environnement inattendu, donc je vais l'écrire ici sous forme de mémorandum.

1. Qu'est-ce que JavaFX?

Y a-t-il quelqu'un qui pense "AWT! Swing!" Quand vous dites GUI en Java? En fait, j'ai entendu dire que l'obstacle au développement des outils d'interface graphique a été considérablement réduit récemment avec l'émergence d'un framework appelé JavaFX (juste écouter).

Je l'ai trouvé alors que je me promenais sur le net, "Ah, GUI? Comment puis-je le faire?" Aujourd'hui, je voudrais vous présenter quelques entrées à JavaFX qui sont si pratiques.

2. Environnement de l'écrivain

3. Construction de l'environnement

3.1. Installation d'OpenJDK

3.1.1. Télécharger

Téléchargez la version de JDK que vous souhaitez utiliser à partir du Ouvrir le site JDK. Cependant, notez que JavaFX nécessite JDK 11 ou supérieur.

■ Le site ci-dessus 191121-0001.png Au milieu de cette image, téléchargez à partir du lien tar.gz à droite de macOS / x64. J'ai utilisé 13.0.1.

3.1.2. Installation

Extrayez le fichier tar.gz téléchargé et accédez au répertoire suivant. /Library/Java/JavaVirtualMachines

/
└── Library
    └── Java
        └── JavaVirtualMachines
            └── jdk-13.0.1.jdk
                └── Contents
                    └── ...

Exécutez la commande suivante comme confirmation.

$ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
    13.0.1, x86_64:	"OpenJDK 13.0.1"	/Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home
    11.0.2, x86_64:	"OpenJDK 11.0.2"	/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home

Les résultats de l'exécution ne doivent pas nécessairement être exactement les mêmes. Assurez-vous que la version que vous venez d'installer est reconnue.

3.2. Configuration du projet

3.2.1. Créer un projet

Lancez IntelliJ IDEA et créez un nouveau projet à partir de Create New Project. Cette fois, nous utiliserons JavaFX avec Gradle, donc bien sûr, créons un projet Gradle.

■ Écran de création de projet 191121-0002.png Veuillez définir le SDK du projet sur 13.

Spécifiez GroupId et ArtifactId sur l'écran suivant.

L'écran suivant est celui où vous configurez votre projet, mais je ne joue pas avec. Tout ce que vous avez à faire est de vous assurer que votre JVM Gradle est 13.

Après avoir spécifié le dossier à utiliser sur l'écran suivant, le projet sera créé. Attendons un peu que les différents processus soient terminés.

3.2.2.build.gradle paramètres

** Ajoutez ** la partie suivante à build.gradle. Je n'ai rien édité qui ne soit pas écrit.

build.gradle


plugins {
    id 'application'
    id 'org.openjfx.javafxplugin' version '0.0.8'
}

dependencies {
    //Ce groupe runtimeOnly sert à créer des fichiers JAR multiplateformes.
    //Vous pouvez réduire la taille du fichier jar en supprimant les éléments inutiles.
    runtimeOnly "org.openjfx:javafx-base:$javafx.version:win"
    runtimeOnly "org.openjfx:javafx-base:$javafx.version:linux"
    runtimeOnly "org.openjfx:javafx-base:$javafx.version:mac"
    runtimeOnly "org.openjfx:javafx-controls:$javafx.version:win"
    runtimeOnly "org.openjfx:javafx-controls:$javafx.version:linux"
    runtimeOnly "org.openjfx:javafx-controls:$javafx.version:mac"
    runtimeOnly "org.openjfx:javafx-fxml:$javafx.version:win"
    runtimeOnly "org.openjfx:javafx-fxml:$javafx.version:linux"
    runtimeOnly "org.openjfx:javafx-fxml:$javafx.version:mac"
    runtimeOnly "org.openjfx:javafx-graphics:$javafx.version:win"
    runtimeOnly "org.openjfx:javafx-graphics:$javafx.version:linux"
    runtimeOnly "org.openjfx:javafx-graphics:$javafx.version:mac"
}

javafx {
    version = "13"
    modules = [ 'javafx.controls', 'javafx.fxml' ]
}

mainClassName = 'maru.test.Launcher'
jar {
    manifest {
        attributes 'Main-Class': 'maru.test.Launcher'
    }
    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

■ Maintenant, ça ressemble à ça (la partie inférieure est un peu coupée) 191122-0003.png

3.2.3. Implémentation d'un exemple de code

L'exemple de code a été emprunté à OpenJFX Official.

src/main/java/maru/test/Launcher.java


package maru.test;

import javafx.application.Application;

public class Launcher {
    public static void main(String... args){
        Application.launch(MainApp.class);
    }
}

src/main/java/maru/test/MainApp.java


package maru.test;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;


public class MainApp extends Application {
    
    @Override
    public void start(Stage stage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("scene.fxml"));
        
        Scene scene = new Scene(root);
        scene.getStylesheets().add(getClass().getResource("styles.css").toExternalForm());
        
        stage.setTitle("JavaFX and Gradle");
        stage.setScene(scene);
        stage.show();
    }
}

src/main/java/maru/test/FXMLController.java


package maru.test;

import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;

import java.net.URL;
import java.util.ResourceBundle;

public class FXMLController implements Initializable {
    
    @FXML
    private Label label;
    
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        String javaVersion = System.getProperty("java.version");
        String javafxVersion = System.getProperty("javafx.version");
        label.setText("Hello, JavaFX " + javafxVersion + "\nRunning on Java " + javaVersion + ".");
    }
}

src/main/resources/maru/test/scene.fxml


<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.StackPane?>


<StackPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="maru.test.FXMLController">
    <children>
        <Label fx:id="label" text="Label" />
    </children>
</StackPane>

src/main/resources/maru/test/styles.css


.label {
    -fx-text-fill: blue;
}

■ Comme ça 191122-0004.png

3.2.4. Compiler et exécuter

Cliquez sur Gradle dans le coin supérieur droit et exécutez Tâches> construire> construire. Une fois cela fait, exécutez Tâches> application> exécutez un peu ci-dessus.

■ C'est 191122-0005.png Si vous voyez quelque chose comme ça, vous réussissez!

■ "Comme ça" 191121-0006.png Je pense que vous avez un fichier jar dans build / libs /. ~~ Ce fichier jar est un fat jar (un fichier jar qui inclut également des bibliothèques), il devrait donc fonctionner sur le PC de n'importe qui. ~~ ** Je suis désolé, j'ai probablement menti. Si vous voulez du gros pot, ajoutez de l'ombre. ** **

3.2.5. Où la description change en fonction de la structure des dossiers

Veuillez changer le lieu entouré de «<>» à votre convenance. Seules les parties qui dépendent de la structure des dossiers sont extraites.

nom de fichier
build.gradle 2 lieux
Launcher.java Une place
MainApp.java 2 lieux
scene.fxml Une place

build.gradle


mainClassName = '<Classes pour les lanceurs qui n'héritent pas de la classe Application>'
jar {
    manifest {
        attributes 'Main-Class': '<Identique à mainClasName ci-dessus>'
    }
}

Launcher.java


public static void main(String... args){
    Application.launch(<Classe qui hérite de la classe Application>.class);
}

MainApp.java


@Override
public void start(Stage stage) throws Exception {
    Parent root = FXMLLoader.load(getClass().getResource("<fichier fxml>"));
    scene.getStylesheets().add(getClass().getResource("<fichier css>").toExternalForm());
}

scene.fxml


<StackPane (Omission) fx:controller="<Classe de contrôleur>">

Probablement fini. Je suis désolé s'il y a un oubli. .. ..

4. Enfin

comment était-ce? N'était-ce pas plus facile que prévu?

À propos, SceneBuilder est pratique pour créer des écrans. Vous pouvez également le faire en définissant IntelliJ IDEA.

■ Une telle chose 191122-0001.png Je pense que cela a réduit les obstacles au développement d'applications GUI. Profitez d'une bonne vie d'application GUI!

5. Références

Recommended Posts

Développement d'applications JavaFX avec IntelliJ IDEA et Gradle ~ De la construction d'environnement à l'exemple de code ~
[Développement d'applications Jakarta EE 8 avec Gradle] 1. Construction de l'environnement
Construction d'environnement de développement d'applications Web Java avec VS Code (struts2)
Construire un environnement PostgreSQL avec Docker (de la configuration à juste avant le développement)
Création d'un environnement de développement à l'aide d'IntelliJ IDEA + Maven + Tomcat 9
Comment créer un environnement Docker avec Gradle pour IntelliJ
Comment créer un environnement de développement Java avec VS Code
Créez un environnement de développement «Spring Thorough Introduction» avec IntelliJ IDEA
Créez un environnement de développement d'applications Rails avec Docker [Docker, Rails, Puma, Nginx, MySQL]
Créer un environnement de développement d'équipe Java et JavaScript (construction d'environnement gradle)
Construction d'environnement pour le développement d'applications Servlet
Remarques sur la création de l'environnement de développement de Kotlin et la migration de Java vers Kotlin
Développement d'applications Web Spring5 MVC avec construction de l'environnement de code Visual Studio (installation de JDK11 / Maven / Tomcat / Visual Studio Code)
Construction de l'environnement de développement de Minecraft Mod (IntelliJ IDEA + Minecraft Forge 1.15.2) + Création de Hello World Mod
J'ai essayé de créer une application d'apprentissage automatique avec Dash (+ Docker) part1 ~ Construction de l'environnement et vérification du fonctionnement ~
Java EE 8 (utilisant NetBeans IDE 8.2) à partir de l'exemple de code Partie 1 Construction de l'environnement
Préparer l'environnement de développement Java avec VS Code
Construction de l'environnement de développement Laravel avec Docker (Mac)
Résumé de la construction de l'environnement avec rvm et postgresql
Comment sortir un pot avec la classe principale spécifiée par gradle dans IntellijIDEA
Essayez Modding avec Minecraft Forge 1.15.1 ① [Environnement de développement de bâtiment] [Plusieurs versions prises en charge] [IntelliJ IDEA]
De la création d'un projet Spring Boot à l'exécution d'une application avec VS Code
Introduction à la bataille de robots avec Robocode (construction d'environnement)
Exemple d'interface graphique Java
Un mémorandum lors de la tentative de création d'une interface graphique à l'aide de JavaFX
Exemple de communication série à l'aide de jSerialComm
Exemple de communication série utilisant purejavacomm
Exemple pour créer une application GUI avec JavaFX + IntelliJ + Scene Builder
Exemple de code utilisant Minio de Java
Exemple de code pour l'implémentation Singleton à l'aide d'énumération
[Développement d'applications Jakarta EE 8 avec Gradle] 2. Création de projet
Procédure de construction et de développement de l'environnement local Wordpress avec Docker
Créer un environnement de développement Java avec VS Code
Développement d'applications JavaFX avec IntelliJ IDEA et Gradle ~ De la construction d'environnement à l'exemple de code ~
Exemple d'interface graphique Java
Un mémorandum lors de la tentative de création d'une interface graphique à l'aide de JavaFX
Exemple de communication série à l'aide de jSerialComm
Exemple de communication série utilisant purejavacomm
Exemple pour créer une application GUI avec JavaFX + IntelliJ + Scene Builder
Exemple de code utilisant Minio de Java
Exemple de code pour l'implémentation Singleton à l'aide d'énumération
Un mémorandum lors de la tentative de création d'une interface graphique à l'aide de JavaFX
[Note] Transition de scène avec JavaFX
Préparation à la création de l'application Rails
Un moyen facile de créer votre propre logo d'application (facile avec votre smartphone)
Créez une application Web simple avec Dropwizard
Exemple pour créer une balise personnalisée pour JSP
Exemple pour démarrer Ubuntu avec le déploiement avec client-go
[Rails] [Docker] Le copier-coller est OK! Comment créer un environnement de développement Rails avec Docker
Comment quitter Docker pour Mac et créer un environnement de développement Docker avec Ubuntu + Vagrant
[Explication approximative] Comment séparer le fonctionnement de l'environnement de production et de l'environnement de développement avec Rails
Créer un environnement de développement Java avec VS Code sur Mac
Introduction au développement de modules Slay the Spire (2) Construction de l'environnement de développement
Manuel de construction de l'environnement de développement stable pour "Rails6" avec "Docker-compose"
Préparer l'environnement pour java11 et javaFx avec Ubuntu 18.4
Comment installer Gradle et Kotlin avec SDKMAN (Mac)
Créer un environnement de développement de programme Java avec Visual Studio Code
Créer un environnement de développement Java + Spring avec VirtualBox + Ubuntu (Xfce4)
[IntelliJ IDEA] Comment afficher les candidats à la complétion de code sans faire la distinction entre les majuscules et les minuscules
J'étais accro à WSl en essayant de créer un environnement de développement d'applications Android avec Vue.js