2010-11-03 99 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

这可能是最好的索引引用(字符如数字存储到文件)而不是字符串。然后有一个方法,从给定的索引字符开始,显示文本文件中的页面。

每当用户点击目录中的页面或搜索单词等时,将显示页面的第一个字符的索引添加到堆栈中。当按下后退按钮时,将索引从堆栈弹出并显示相应的页面。

如果您正在实现文本编辑器(具有撤消功能)而不是文本查看器,那么仅存储字符串才有用。