2010-03-22 58 views
3

我在这里发布的类中调用了addNotify()方法。问题是,当我在代码中调用addNotify()时,setKeys(objs)什么也不做。运行应用程序的浏览器中没有显示任何内容for cycle not works allright

但是,当我调用addNotify()没有循环(对于int ....),并且只添加一个项目到ArrayList,它显示正确的一个项目。

有谁知道哪里会出问题?见割让

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); 
} 

}

+0

重新标记:这个问答真的没有任何“的NetBeans岬”给它。 – vkraemer 2010-03-22 16:24:32

+0

原来这是为什么addNotify不起作用的问题。我在揭示问题的本质之后编辑了标题 – joseph 2010-03-22 16:30:50

回答

5

看这个循环:

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

这是怎么回事其中i = 0开始,一直走而我== 10。我想你的意思是:

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

(多余的空格添加只是为了清楚起见。)

+0

问题解决了,谢谢。 – joseph 2010-03-22 16:18:19

1

乔恩是正确的...你的循环很可能是不正确的。

这里是你的for循环变成一个while循环,只是为了澄清他的观察更翻译...

你的循环意味着目前这...(在while循环岬)

int i = 0; 

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

的信息addNotify不会被调用,因为添加从未被称为...

+0

这对我来说是惊喜。虽然我在编程方面没有太多的经验,但我多次用于循环。直到现在,这从来没有发生过。 – joseph 2010-03-22 16:26:22

+0

不,你没有像这样使用'for'循环,并且它已经工作,因为*它不起作用*。 – Bombe 2010-03-22 17:09:29

+0

@Bombe - 我不写“这样的”。所以,是的,我用了几年的循环,我从来没有遇到过这个问题。 – joseph 2010-03-22 17:21:30

相关问题