私はここで完全に途方に暮れています。カスタム 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);
}
}