En entrant des caractères et en appuyant sur le bouton, les caractères saisis sont écrits dans le fichier. Utilisez TextField.
Créez un projet dans Eclipse.
écrire ・ ・ ・ ・ ・ ・ (1) ├ test.txt ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ (2) └ src ・ ・ ・ ・ ・ ・ ・ ・ (3) └ pkg ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ (4) ├ FileWrite.java ・ ・ ・ ・ ・ ・ ・ (5) ├ Main.java ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ (6) ├ MainController.java ・ ・ ・ ・ (7) └ écran.fxml ・ ・ ・ ・ ・ ・ ・ ・ (8)
(1) Projet à créer (2) Fichier texte à écrire (créé à l'exécution si le fichier n'existe pas, et ajouté s'il existe) (3) Répertoire du fichier source créé arbitrairement lors de la création d'un projet (4) Package à créer (5) Fichier source (décrit dans le chapitre suivant), écriture de fichier (6) Fichier source (décrit dans le chapitre suivant), démarrage de l'écran (7) Fichier source (décrit dans le chapitre suivant), contrôleur d'écran (8) Fichier source (décrit dans le chapitre suivant, créé par SceneBuilder)
3.1. FileWrite.java
FileWrite.java
package pkg;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class FileWrite {
public void write(String text) throws IOException {
try {
//Décrivez l'un ou l'autre, commentez-en un-----------------------------------
//FileWriter file = new FileWriter("test.txt");//Écraser
FileWriter file = new FileWriter("test.txt", true);//Postscript
//---------------------------------------------------------------------
//Créer un objet de la classe PrintWriter
PrintWriter pw = new PrintWriter(new BufferedWriter(file));
//Écrire dans un fichier
pw.println(text);
pw.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
3.2. Main.java
Main.java
package pkg;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
//Chargement des graphiques de scène depuis FXML
FXMLLoader loader = new FXMLLoader(getClass().getResource("screen.fxml"));
Parent root = loader.load();
//Création d'une scène avec le nœud racine du jeu de graphes de scènes
Scene scene = new Scene(root, 600, 400);
//Mise en scène de la scène
primaryStage.setScene(scene);
primaryStage.setTitle("no title");
primaryStage.show();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
3.3. MainController.java
MainController.java
package pkg;
import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.stage.Modality;
public class MainController {
@FXML
private ResourceBundle resources;
@FXML
private URL location;
@FXML
private TextField textField;
@FXML
private Button writeButton;
@FXML
void OnclickedWriteButton(ActionEvent event) throws IOException {
String text = textField.getText();
if (!text.isEmpty()) {
FileWrite a = new FileWrite();
a.write(text);
textField.setText("");
} else {
Alert alert = new Alert(AlertType.INFORMATION); //Définir un type d'alerte appelé information
alert.initModality(Modality.WINDOW_MODAL); //Vous ne pouvez pas faire fonctionner d'autres fenêtres sauf certaines jusqu'à ce que l'opération soit terminée.
alert.setTitle("avertissement"); //Définir le titre
alert.setContentText("Aucun texte n'a été saisi."); //Définir le contenu
alert.showAndWait(); //Afficher une alerte et attendre l'exécution jusqu'à sa fermeture
}
}
@FXML
void initialize() {
assert textField != null : "fx:id=\"textField\" was not injected: check your FXML file 'screen.fxml'.";
assert writeButton != null : "fx:id=\"writeButton\" was not injected: check your FXML file 'screen.fxml'.";
textField.setText("");
}
}
3.4. screen.fxml
screen.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.Pane?>
<Pane 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="pkg.MainController">
<children>
<TextField fx:id="textField" layoutX="155.0" layoutY="187.0" />
<Button fx:id="writeButton" layoutX="364.0" layoutY="187.0" mnemonicParsing="false" onAction="#OnclickedWriteButton" prefHeight="27.0" prefWidth="80.0" text="l'écriture" />
</children>
</Pane>