2012-09-01 233 views
-2
class blabla extends JPanel 
{ 
    public blabla() 
    { 
    //code 
    } 
} 

class Main 
{ 
    public static void main(String[] args) 
    { 
     JPanel b; 
     ArrayList<blabla> c; 

     blabla a = new blabla(); 

     b = new JPanel(); 
     c = new ArrayList<blabla>(); 

     b.add(a); 
     c.add(a); 

     blabla d = (blabla) b.getComponent(0); 
     System.out.println(c.indexOf(d)); 
    } 
} 

ArrayList aJPanel a相同的对象? 应该输出什么代码?参考文献mixup in java

+5

没有代码就很难说清楚。我们所能给你的只是或多或少有用的猜测。 – Tudor

+0

我改写了这个问题... – Karlovsky120

+0

你已经完全改变了这个问题的人......? – SiB

回答

0

好吧这里去回答你的问题,修改...

是的ArrayList和JPanel的一个相同的对象?

不,但它们包含类blabla的相同对象。

应输出什么代码?

输出是

0 

这是正确的,你放置在相同的组件中JPanelArrayList0是元素的索引。

3

这样的回答是基于你在问题中提到,当未提供代码段,quetion是...

我已经创建了一个组件实例,它绘制到屏幕上,并添加它到一个ArrayList。 我通过使用它的子对象(getParent()方法)引用绘制的对象来访问它。但是,当我然后将此引用传递给ArrayLists indexOf();方法,它返回-1。 我想这意味着该组件不存在于ArrayList中。 这是应该发生的事情,还是我可能在我的程序中搞砸了?我不会为您提供一个SSCCE,我不要求你做任何编码,只是为了告诉我,如果这是正常的Java行为......

这里去了我的回应

indexOf()的Javadoc说...

返回指定元素中第一次出现的索引此列表,或-1,如果此列表中不包含的元素。更正式地说,如果没有这样的索引,则返回最低索引i,使得(o == null?get(i)== null:o.equals(get(i)))或-1。

正如您所见,这取决于您的组件的equals()实现。检查你的实现,因为它包含从列表中检索值的关键。

+0

对不起,改变了问题,我看到你的答案后,我改变了它... – Karlovsky120

+0

在相关说明中,我打印出它返回的索引,它工作正常,但是当我将完全相同的代码行传递给下一行中的方法时,它返回'indexOutOfBounds'异常... – Karlovsky120