我需要在javaFX中向TextArea显示一个文本文件。 我厌倦了使用这段代码:
@FXML
private void viewHistory(ActionEvent event) throws FileNotFoundException, IOException {
HistoryController hc = new HistoryController();
BufferedReader in;
try {
in = new BufferedReader(new FileReader("EmployeeUpdateHistory.txt"));
String str;
File f = new File("EmployeeUpdateHistory.txt");
Scanner input = new Scanner(f);
while ((str = in.readLine())!=null) {
FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getResource("/view/history.fxml"));
loader.load();
Parent root = loader.getRoot();
Stage s1 = new Stage();
HistoryController historyController = loader.getController();
historyController.tfHistory.appendText(str);
Scene s2 = new Scene(root);
s1.setScene(s2);
s1.setTitle("History");
s1.setResizable(false);
s1.show();
}
} catch (FileNotFoundException ex) {
System.err.println(ex);
}
}
但它只显示TextArea中的一行和Open多个阶段(等于行号)。
答案 0 :(得分:0)
您创建和显示舞台的代码位于while循环中。因此它将为文件中的每一行执行。尝试将该代码移到循环之外,只需要在循环中附加文本即可。
这样的事情:
FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getResource("/view/history.fxml"));
loader.load();
Parent root = loader.getRoot();
Stage s1 = new Stage();
Scene s2 = new Scene(root);
s1.setScene(s2);
s1.setTitle("History");
s1.setResizable(false);
HistoryController historyController = loader.getController();
while ((str = in.readLine())!=null) {
historyController.tfHistory.appendText(str);
}
s1.show();