JavaFX8-Datei schreiben (TextField)

1. Technische Daten

Durch Eingabe von Zeichen und Drücken der Taste werden die eingegebenen Zeichen in die Datei geschrieben. Verwenden Sie TextField.

2. Dateistruktur

Erstellen Sie ein Projekt in Eclipse.

schreibe ・ ・ ・ ・ ・ ・ (1) ├ test.txt 2 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 2 2 (2) 3 src ・ ・ ・ ・ ・ ・ ・ 3 (3) 4 ・ k k 4 4 4 4 4 4 4 4 4 (4) ├ FileWrite.java 5 ・ ・ ・ ・ ・ 5 (5) ├ Main.java 6) ・ ・ ・ ・ ・ ・ ・ ・ 6 6 (6) ├ MainController.java 7 ・ ・ 7 (7) └ screen.fxml 8 ・ ・ ・ ・ ・ ・ 8 (8)

(1) Zu erstellendes Projekt (2) Zu schreibende Textdatei (zur Laufzeit erstellt, wenn die Datei nicht vorhanden ist, und hinzugefügt, wenn sie vorhanden ist) (3) Quelldateiverzeichnis, das beim Erstellen eines Projekts willkürlich erstellt wurde (4) Zu erstellendes Paket (5) Quelldatei (im nächsten Kapitel beschrieben), Schreiben von Dateien (6) Quelldatei (im nächsten Kapitel beschrieben), Bildschirmstart (7) Quelldatei (im nächsten Kapitel beschrieben), Bildschirmsteuerung (8) Quelldatei (beschrieben im nächsten Kapitel, erstellt von SceneBuilder)

3. Quelldatei

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 {
//Beschreibe entweder, kommentiere einen aus-----------------------------------
			//FileWriter file = new FileWriter("test.txt");//Überschreiben
			FileWriter file = new FileWriter("test.txt", true);//Nachtrag
//---------------------------------------------------------------------
			//Erstellen Sie ein Objekt der PrintWriter-Klasse
			PrintWriter pw = new PrintWriter(new BufferedWriter(file));
			//In Datei schreiben
			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 {
			//Laden von Szenendiagrammen aus FXML
			FXMLLoader loader = new FXMLLoader(getClass().getResource("screen.fxml"));
			Parent root = loader.load();

			//Erstellen einer Szene mit dem Wurzelknoten des Szenendiagrammsatzes
			Scene scene = new Scene(root, 600, 400);
			//Die Szene auf die Bühne bringen
			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); //Legen Sie einen Alarmtyp mit dem Namen information fest
			alert.initModality(Modality.WINDOW_MODAL); //Sie können andere Fenster außer einigen nicht bedienen, bis der Vorgang abgeschlossen ist.
			alert.setTitle("Warnung"); //Titel einstellen
			alert.setContentText("Es wurde kein Text eingegeben."); //Stellen Sie den Inhalt ein
			alert.showAndWait(); //Zeigen Sie eine Warnung an und warten Sie auf die Ausführung, bis sie geschlossen ist
		}
	}

	@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="Schreiben" />
   </children>
</Pane>

Recommended Posts

JavaFX8-Datei schreiben (TextField)
Schreiben von JavaFX8-Dateien (TextArea)
Implementieren Sie das textField-Fokusereignis in JavaFX
[Persönliches Memo] Schreiben einer Datei mit BufferedWriter
Struktur der JavaFX-Anwendungsdatei (FXML, CSS, Eigenschaften)