【发布时间】:2015-04-21 14:05:18
【问题描述】:
我想,我一直在为一个项目编写一个网络浏览器,但我发现我无法让我的历史系统按预期工作,目前我发现我的历史项目正在复制,我的历史基于 for-loop 风格的金字塔在会话之间复制自身,其中金字塔的大小是我上次访问的页面数的 n-1:
页面重复 |上次会话访问的页面
1 1
12 2
123 3
1234 4
每当我进入一个新页面并且上半部分的 if 语句只运行一次时,当浏览器启动并且在那里从它存储的 CSV 文件中恢复上一个会话的历史记录时,就会调用此方法。
该代码应该在每次访问页面时创建一个 jmenuitem,然后将其添加到 jmenu,这很好,但是,它也应该将链接添加到列表中。然后将该列表附加到 csv 以进行存储。
public class FileBar extends JMenuBar {
int tracker = 0;
File histPath = new File("history.csv");
JMenu history = new JMenu("History");
List<String> histStore = new ArrayList<String>();
public void createhistory(String webAddress) {
try {
List<String> histFeedback = new ArrayList<String>();
writer = new FileWriter(histPath, true);
if (tracker < 1) {
// system to retrieve information from csv file upon launch of program
}
JMenuItem button = new JMenuItem(webAddress);
history.add(button);
button.addActionListener(new ActionListener() {
// ...
});
histStore.add(webAddress);
int i = 0;
for (i = 0; i < histStore.size(); i++) {
writer.append(histStore.get(i));
writer.append(",");
}
writer.flush();
} catch (Exception e) {}
}
}
【问题讨论】:
-
那是很多代码。是否可以进行更多测试,看看您是否可以缩小问题所在,然后修改问题以仅包含该部分(并描述确切的问题)?
-
@br1ckb0t 我已经尽我所能,但我认为我们失去了代码现在试图做的事情的本质......第一段也准确地说明了我的代码有什么问题,我的历史会在基于 for 循环样式金字塔的会话之间复制,其中金字塔的大小是我上次访问的页面数的 n-1
-
太好了,谢谢。这很有帮助。该代码现在有意义,但我不确定问题是否在这里。所以只是为了澄清 - 你能在你的开头段落中澄清问题出在哪里吗?是
f.histStore,csv,还是别的什么地方? -
@br1ckb0t 我已经更新了问题,并且在另一条评论中详细说明了一些细微的代码更改,但是我仍然无法使其工作,请您建议?
-
知道了@BenBowen。检查我的答案 - 这是怎么回事?