我有一个带有记事本esque功能的程序。当我打开它时,我希望从文本文件中保存的文本自动加载到文本区域。
我有两节课。 Writer类(应该出现保存的文本)和实际从文本文件导入文本的Load类。
作家类:
public class Writer extends Application {
private FlowPane notepadLayout = new FlowPane(Orientation.VERTICAL);
private Scene notepadScene = new Scene(notepadLayout,600,300);
private TextArea inputArea = new TextArea();
private void notepadSetup(){
Text titleText = new Text("Notepad");
notepadLayout.getChildren().add(titleText);
notepadLayout.getChildren().add(inputArea);
}
public void start(Stage primaryStage) throws Exception {
notepadSetup();
Load.loadOperation();
primaryStage.setTitle("ROBOT V1!");
primaryStage.setScene(notepadScene);
primaryStage.show();
所以上面的类有Text区域。我想要做的是使用下面的类将文本文件中的信息加载到上面的文本区域。
public class Load {
private static String line;
static ArrayList<String> x = new ArrayList<>();
public static void loadOperation(){
try{
BufferedReader br = new BufferedReader (new FileReader("Notes.txt"));
line = br.readLine();
while(line != null){
x.add(line);
line = br.readLine();
}
}catch(Exception e){
}
System.out.println(x);
}
Load.loadOperation行打印出文本文件中的内容。如何将其加载到文本区域?它还必须保留格式(换行符)。
答案 0 :(得分:3)
只需更改方法即可返回String。 (我更新了它,以便它也使用更现代的Java。)
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.stream.Collectors;
public class Load {
public static String loadOperation() throws IOException {
return Files.lines(Paths.get("Notes.txt"))
.collect(Collectors.joining("\n"));
}
}
然后你就做了
try {
inputArea.setText(Load.loadOperation());
} catch (IOException exc) {
exc.printStackTrace();
}
答案 1 :(得分:-1)
从文件中读取文本后,需要将其添加到TextArea
对象中。假设你有一个方便的inputArea
引用,你可以将它附加到(空)控件中:
for (int i = 0; i < x.length; i++) {
inputArea.appendText(x.get(i));
}
https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/TextArea.html