2016-06-22 150 views
-2

我有一個帶有記事本功能的程序。當我打開它時,我希望從文本文件中保存的文本自動加載到文本區域。如何自動將文本加載到文本區域

我有兩個類。 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(); 

所以上面的類有文本區。我想要做的是使用下面的類從文本文件中加載信息到上面的文本區域。

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

您的代碼甚至不會編譯。 –

+0

@James_D它現在做 – bob9123

回答

2

只要改變方法,讓它返回一個字符串。 (以便它使用更現代的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(); 
} 
+0

這工作。謝謝。 – bob9123

+0

我可以上傳我的保存課程,並檢查它是否是最新的和有效的? – bob9123

+0

不,請閱讀API文檔,瞭解我使用的方法,並查看相同類中的其他類似方法。 –

-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

+0

該方法是['appendText(...)'](http://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/TextInputControl.html#appendText -java.lang.String-),而不是「追加(...)」。 –

+0

我會試試這個,謝謝 – bob9123

+0

@James_D在API文檔中列出了兩個,並說'appendText(...)'已被棄用。 –

相關問題