для цикла не работает нормально - PullRequest
3 голосов
/ 22 марта 2010

Я вызываю метод 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 ]

5 голосов
/ 22 марта 2010

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

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

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

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

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

1 голос
/ 22 марта 2010

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

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

Ваш цикл в настоящее время означает это ... (в цикле while)

int i = 0;

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...