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.
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.
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
Au milieu de cette image, téléchargez à partir du lien tar.gz
à droite de macOS / x64
.
J'ai utilisé 13.0.1.
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.
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 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.
** 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)
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
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 Si vous voyez quelque chose comme ça, vous réussissez!
■ "Comme ça"
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. ** **
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. .. ..
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 Je pense que cela a réduit les obstacles au développement d'applications GUI. Profitez d'une bonne vie d'application GUI!
Recommended Posts