Для цикла не работает

Я вызываю метод addNotify() в классе, который я разместил здесь. Проблема заключается в том, что при вызове addNotify(), как и в коде, setKeys (objs) ничего не делает. В моем проводнике приложения ничего не отображается.

Но когда я вызываю addNotify() без цикла (для int....) и добавляю только один элемент в ArrayList, он показывает, что один элемент правильно.

Кто-нибудь знает, где может быть проблема? См. Cede

class ProjectsNode extends Children.Keys{
private ArrayList objs = new ArrayList();
public ProjectsNode() {
}
 @Override
protected Node[] createNodes(Object o) {
 MainProject obj = (MainProject) o;
 AbstractNode result = new AbstractNode (new DiagramsNode(), Lookups.singleton(obj));
 result.setDisplayName (obj.getName());
 return new Node[] { result };
}
@Override
protected void addNotify() {
 //this loop causes nothing appears in my explorer.
 //but when I replace this loop by single line "objs.add(new MainProject("project1000"));", it shows that one item in explorer
 for (int i=0;i==10;i++){
 objs.add(new MainProject("project1000"));
 }
 setKeys (objs);
}

}

2 ответа

Посмотрите на этот цикл:

for (int i=0;i==10;i++)

Это начнется с я = 0 и продолжит движение, пока я = 10. Я думаю, вы имели в виду:

for (int i = 0; i < 10; i++)

(Добавлены лишние пробелы для ясности.)


Джон прав... ваша петля, скорее всего, будет неправильной.

Вот перевод вашего цикла for-loop в цикл while, чтобы еще больше прояснить его наблюдение...

Ваша петля в настоящее время означает это... (в while-loop-ness)

int i = 0;
while (i==10) {
 objs.add(new MainProject("project1000"));
 i++;
}
setKeys (objs);

addNotify никогда не вызывается, потому что add никогда не вызывается...

licensed under cc by-sa 3.0 with attribution.