Durch Eingabe von Zeichen und Drücken der Taste werden die eingegebenen Zeichen in die Datei geschrieben. Verwenden Sie TextField.
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.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>