Écriture de fichier JavaFX8 (TextField)

1. Spécifications

En entrant des caractères et en appuyant sur le bouton, les caractères saisis sont écrits dans le fichier. Utilisez TextField.

2. Structure des fichiers

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. Fichier source

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>

Recommended Posts

Écriture de fichier JavaFX8 (TextField)
Écriture de fichier JavaFX8 (TextArea)
Implémenter l'événement de mise au point de textField dans JavaFX
[Mémo personnel] Écriture d'un fichier à l'aide de BufferedWriter
Structure des fichiers d'application JavaFX (FXML, CSS, propriétés)