2010-11-03 101 views
1

我做了一個圖形用戶界面只讀取txt文件的java程序。我有一些提示,例如顯示目錄表,轉到txt文件的特定頁面或在該txt文件中搜索單詞。我也有一堆按鈕來執行這些功能。我的其中一個按鈕只是想回到「後退」按鈕。Java ActionListener的歷史

我試着將JTextArea的內容保存到一個String對象,並將它添加到堆棧。每次按下後退按鈕,我都會得到我放入堆棧的最後一個字符串對象,並將JTextArea設置爲該字符串對象。

不幸的是,它對我來說效率不高。我面臨着很多錯誤。還有其他方法可以解決這個問題:保存操作?

+1

有任何我們的代碼?堆棧痕跡? – Jeremy 2010-11-03 23:15:26

+0

我沒有任何「返回」按鈕。我仍然試圖找到一種有效且合理的方式來跟蹤自代碼開始運行以來執行的操作。 – 629 2010-11-03 23:35:09

+0

我以爲你說有錯誤?每當執行操作時寫出一些有用的信息非常簡單。 Swing只有一個事件線程,因此日誌將按順序排列。 – Jeremy 2010-11-03 23:40:23

回答

0

如果你(通過setText()方法)更新在JTextArea中的文字像這應該工作:

class TextAreaHistory { 

HashMap<Integer, String> textAreaHistory = new HashMap<Integer, String>(); 

int counter = 0; 

public void addToHistory(String s) { 
    textAreaHistory.put(counter, s); 
    counter++; 
} 

public String getHistory() { 
    return textAreaHistory.get(this.counter-1); 
    counter--; 
} 
} 
+0

我曾經使用過類似的代碼。我使用了一堆字符串對象,而不是使用hashMap。在某些情況下,它不起作用。例如,當我訪問一個文本文件的特定頁面並重新打開時;什麼都沒發生。 :/ – 629 2010-11-04 00:05:55

0

這可能是最好的索引引用(字符如數字存儲到文件)而不是字符串。然後有一個方法,從給定的索引字符開始,顯示文本文件中的頁面。

每當用戶點擊目錄中的頁面或搜索單詞等時,將顯示頁面的第一個字符的索引添加到堆棧中。當按下後退按鈕時,將索引從堆棧彈出並顯示相應的頁面。

如果您正在實現文本編輯器(具有撤消功能)而不是文本查看器,那麼僅存儲字符串纔有用。