所以我設計了一個文本編輯器。對於Open/Save方法,我試圖使用TextArea(它不一定是一個,它只是我當前的方法)。現在,我現在有兩個問題:TextArea - 以任何方式獲取所有文本?
1)當我加載文件時,它當前不會刪除當前在文本編輯器中的內容。例如,如果我輸入「Owl」,然後加載一個包含「Rat」的文件,它將最終成爲「OwlRat」。爲了解決這個問題,我打算使用replaceRange方法(但是,它不是絕對的,任何建議都會很棒!)。但是,我必須替換文本編輯器的所有內容,而不僅僅是選定的文本,並且我無法弄清楚如何做到這一點。有小費嗎?
2)目前,當我加載文件時,除非我在運行應用程序的同時保存該文件,否則什麼都不會發生。因此,例如,運行程序,保存文件,關閉程序,再次運行程序,然後加載文件將不會產生任何結果。我知道這是因爲String x沒有結轉,但我無法想象修復它。有人建議載體,但我看不出他們會如何幫助...
下面是打開/保存方法的代碼:
公開賽:
public void Open(String name){
File textFile = new File(name + ".txt.");
BufferedReader reader = null;
try
{
textArea.append(x);
reader = new BufferedReader(new FileReader(textFile));
reader.read();
}
catch (IOException e)
{
}
finally
{
try
{
if (reader != null)
reader.close();
}
catch (IOException e)
{
}
}
}
節省:
public void Save(String name){
File textFile = new File(name + ".txt");
BufferedWriter writer = null;
try
{
writer = new BufferedWriter(new FileWriter(textFile));
writer.write(name);
x = textArea.getText();
}
catch (IOException e)
{
}
finally
{
try
{
if (writer != null)
writer.close();
}
catch (IOException e)
{
}
}
}
記錄這些例外的方法。什麼是'x'? –
1)請使用一致的邏輯縮進代碼塊。 2)對於每個'catch',添加'e.printStackTrace();'3)請學習常見的[Java命名約定](http://java.sun.com/docs/books/jls/second_edition/html/names。 doc.html#73307)(特別是用於名稱的情況)類別,方法和屬性名稱並一致使用。 –
考慮使用['JTextComponent.read(Reader,Object)'](http://docs.oracle.com/javase/7/docs/api/javax/swing/text/JTextComponent.html#read%28java.io。 Reader,%20java.lang.Object%29)&['write(Writer)'](http://docs.oracle.com/javase/7/docs/api/javax/swing/text/JTextComponent.html#write %28java.io.Writer%29)。更強大。 –