我在这里完全不知所措。我有一个方法通过包含自定义 FileNode 类的 TreePaths 向量,并提取每个最后一个节点中包含的文件。结果是 Vector 中所有文件名的打印列表。我有一个for循环来增加它,它工作得很好,但我把它改成了一个while循环,让我有多个页面。现在,由于某种原因,它只打印最后 11 个文件。
我已经弄清楚是什么原因造成的,但我不知道为什么或如何解决它。我添加了行以打印到控制台“lineCount”和“printPaths.size()”,发现 lineCount 一直在递增,直到达到 55,然后恢复到 15 并继续递增。这些名称直到恢复到 15 才真正开始打印。
我已经在调试模式下逐步完成了它,它通过了 55 次打印循环,将代码返回给打印函数,告诉它它是打印页面的一部分,然后它进入我不使用的打印方法有源代码,当我退出时,它又回到循环的开头,而 lineCount 为 14。真正奇怪的部分是它打印出 11 个文件时,即使根据程序它甚至还没有看过 Vector 的那部分。
如果有人知道是什么原因造成的,我将非常感谢您的帮助。这是处理打印列表的代码块。希望这就足够了。
lineCount = 13;
int lineSpacing = 14;
g.setFont(new Font("Dialog", Font.PLAIN, 10));
boolean color = true;
if (summ) {
g.drawString(((TreePath) printPaths.get(0)).getPathComponent(
((TreePath) printPaths.get(0)).getPathCount() - 3)
.toString()
+ " : "
+ ((TreePath) printPaths.get(0)).getPathComponent(
((TreePath) printPaths.get(0)).getPathCount() - 5)
.toString(), 36, lineCount * lineSpacing);
lineCount++;
//for (int j = 1; j < printPaths.size(); j++) {
while((printPaths.size()>1) && lineCount<55){
String type = ((TreePath) printPaths.get(1)).getPathComponent(
((TreePath) printPaths.get(1)).getPathCount() - 5)
.toString();
String date = ((TreePath) printPaths.get(1)).getPathComponent(
((TreePath) printPaths.get(1)).getPathCount() - 3)
.toString();
String typeU = ((TreePath) printPaths.get(0))
.getPathComponent(
((TreePath) printPaths.get(1)).getPathCount() - 5)
.toString();
String dateU = ((TreePath) printPaths.get(0))
.getPathComponent(
((TreePath) printPaths.get(1)).getPathCount() - 3)
.toString();
if (!(type == typeU) && (date == dateU)) {
lineCount++;
g.setColor(c1);
g.drawString(date + " : " + type, 36, lineCount
* lineSpacing);
lineCount++;
}
if(color)
g.setColor(c1);
else
g.setColor(c2);
g.drawString(((TreePath) printPaths.get(1))
.getLastPathComponent().toString(), 54, lineCount
* lineSpacing);
color=!color;
lineCount++;
printPaths.remove(0);
System.out.println(printPaths.size());
System.out.println(lineCount);
}
}