2016-03-07 49 views
0

公平地说,我是一个非常初学者在Java中,我认为必须有我的问题的解决方案,因为它很容易解决我猜,但我没有找到,如果有人可以给链接并直接回答,那真是太棒了。添加到Arraylist为每个实例

我有两个班,一个是Creation,另一个是slice。现在Creation类有多个基于JButton组件ActionPerformed的slice类实例。

现在我想要创建一个ArrayList的切片[在slice类中],每次从creation类调​​用该实例时。在开始时,Arraylist将是空的。然后我想使用数组列表的索引将面板从数组列表中返回到Creation类。

public class Slice extends JPanel { 


     public ArrayList<Slice> network_slices; 
     private JPanel slice; 

     public Slice() { 


      network_slices = new ArrayList<>(); 
      slice= new JPanel(); 
      slice.setPreferredSize(new Dimension(550, 600)); 
      slice.setVisible(true); 
      network_slices.add((Slice) slice); 
     } 

     public JPanel getPanel() { 
     //What to do to get the Panel in Creation class using their array index? 
     } 

    } 
+4

让一个名为'Slice'的类和变量非常混乱。 –

+0

我编辑了你的代码,用小写字母命名变量。 – agilob

+0

非常感谢你编辑这个 – nothingSpecial

回答

0

在getPanel return()之前添加:

network_slices.add(slice); 
+0

我应该这样写,network_slices.add((Slice)slice)? – nothingSpecial

+0

“在ArrayList 类型中的方法add(Slice)不适用于参数(JPanel)”, – nothingSpecial

0

尝试了这一点?

public class Slice extends JPanel { 

    public ArrayList<Slice> network_slices; 
    private JPanel slice; 

    public Slice() { 
     network_slices = new ArrayList<>(); 
    } 

    public JPanel getPanel() { 
     slice = new JPanel(); 
     slice.setPreferredSize(new Dimension(550, 600)); 
     slice.setVisible(true); 
     network_slices.add((Slice) slice); 
     return slice; 
    } 
} 

请不要乱用命名约定:

  • Slice是类的名称。始终以大写字母开头。
  • slice是变量的名称。始终以小写字母开头。

另外在Java中我们都用到了CamelCase。所以你的变量应该被命名为nerworkSlices而不是network_slices。但只是一件小事。以上是更重要的。此外,JDK 7中的钻石操作符可以用来代替明确的类型参数,如new ArrayList<>()

+0

谢谢,但是我收到此错误。 “ArrayList 类型的方法add(Slice)不适用于参数(JPanel)” – nothingSpecial

+0

“编辑,您必须将'(Slice)slice' –