JavaFXを使用して、ユーザーが情報を入力できる4つのテキストフィールドを作成しました。次に、ボタンを押すと、ユーザーが保存する場所を選択できるテキストファイルにユーザーの入力を保存します。 個々のフィールドのそれぞれからユーザーの入力を取得する方法がわかりません。 ここにあるコントローラクラスでfxmlを使用しています。私は、テキストの入力を書いて、ユーザの希望ごとにそれを保存することができたJavaFXで複数のテキストフィールドから入力を取得
:ここ
package application;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.System.Logger;
import java.lang.System.Logger.Level;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.Group;
import javafx.scene.control.Button;
import javafx.scene.control.ListView;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
public class MainController {
@FXML
private Button Button1;
@FXML
private Button Button2;
@FXML
private ListView listview;
@FXML
private TextField Name;
@FXML
private TextField DoB;
@FXML
private TextField Address;
@FXML
private TextField Exp;
public void Button1Action(ActionEvent event) {
FileChooser fc = new FileChooser();
File selectedFile = fc.showOpenDialog(null);
if (selectedFile != null) {
listview.getItems().add(selectedFile.getName());
} else {
System.out.println("File is not valid");
}
}
public void Button2Action(ActionEvent e) {
String name = name.getText(Name);
}
}
はFXML
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.ListView?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity"
minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0"
xmlns="http://javafx.com/javafx/9.0.1" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="application.MainController">
<children>
<Button fx:id="Button1" layoutX="90.0" layoutY="72.0"
mnemonicParsing="false" onAction="#Button1Action" text="File Explorer" />
<ListView fx:id="listview" layoutX="300.0" layoutY="27.0"
prefHeight="346.0" prefWidth="200.0" />
<TextField fx:id="DoB" layoutX="131.0" layoutY="238.0" />
<TextField fx:id="Address" layoutX="131.0" layoutY="274.0" />
<TextField fx:id="Exp" layoutX="131.0" layoutY="310.0" />
<TextField fx:id="Name" layoutX="131.0" layoutY="200.0" />
<Button fx:id="Button2" layoutX="159.0" layoutY="348.0"
mnemonicParsing="false" onAction="#Button2Action" text="Print Paycheck" />
<Label layoutX="15.0" layoutY="204.0" text="Name" />
<Label layoutX="14.0" layoutY="242.0" text="Date of Birth" />
<Label layoutX="15.0" layoutY="278.0" text="Address" />
<Label layoutX="15.0" layoutY="314.0" text="Years of Experience" />
</children>
</AnchorPane>
EDITです。 しかし、あなたがテキストフィールドの配列を作成することができ、新たなライン上のファイルイマイチ内のテキストと
FileChooser fileChooser = new FileChooser();
fileChooser.setTitle("Save file");
fileChooser.getExtensionFilters().add(new ExtensionFilter("Text Files",
"*.txt"));
File saveFile = fileChooser.showSaveDialog(window);
FileWriter writer;
try {
writer = new FileWriter(saveFile);
BufferedWriter buf = new BufferedWriter(writer);
buf.write(name.getText() + "\n ");
buf.write(dob.getText() + "\n ");
buf.write(address.getText() + "\n ");
buf.write(exp.getText() + "\n ");
buf.flush();
buf.close();
} catch (IOException e) {
}
驚くばかりです。その作業を行い、結果をコンソールに出力して確実に動作させるようにします。 これをテキストファイルに保存し、場所 – Chris
編集されたOPを選択するように促すようにしました。それは私が "\ n"を持っていても新しい行にそれぞれのフィールドを入れないことです。 – Chris
の代わりに "\ n" BufferedWriterのドキュメントから 'buf.newLine()'を試してみてくださいhttps://docs.oracle.com/javase/8/docs/api/java/io/BufferedWriter.html#newLine- - – MMAdams