2016-07-13 5 views
-2

Я создал arraylist в одном классе и после нажатия на JButton и перехода на другую панель и другой класс, я хочу иметь доступ к ней и генерировать случайное число. Как я могу это сделать?Как я могу получить доступ к ArrayList из другого класса?

ArrayList<Integer> hiraganaArray = new ArrayList<Integer>(); 

OCheckBox.addItemListener(new ItemListener() { 
     public void itemStateChanged(ItemEvent e) { 
      if(e.getStateChange() == ItemEvent.SELECTED) { 
       hiraganaArray.add(1); 
       hiraganaArray.add(2); 
       hiraganaArray.add(3); 
       hiraganaArray.add(4); 
       hiraganaArray.add(5); 
      } 
      else { 
       hiraganaArray.removeAll(Arrays.asList(1)); 
       hiraganaArray.removeAll(Arrays.asList(2)); 
       hiraganaArray.removeAll(Arrays.asList(3)); 
       hiraganaArray.removeAll(Arrays.asList(4)); 
       hiraganaArray.removeAll(Arrays.asList(5)); 
      } 
     } 

startButton = new JButton("Start"); 
    startButton.setPreferredSize(new Dimension(100, 40)); 
    gbc.gridx = 3; 
    gbc.gridy = 13; 
    add(startButton, gbc); 

    startButton.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      layout.show(panelCont, "6"); 
     } 
    }); 

Это работает очень хорошо, когда я добавить

System.out.println(hiraganaArray.get(r.nextInt(hiraganaArray.size()))); 

к JButton в Action Listener, но тот же код не работает, когда используется в другом классе.

ответ

-1

Я понял это! Мне нужно изменить код в первом классе:

static ArrayList<Integer> hiraganaArray; 
public ArrayList<Integer> getHiraganatArray() { 
    return hiraganaArray; 
} 

и код во втором классе:

System.out.println(HiraganaClass.hiraganaArray.get(r.nextInt(HiraganaClass.hiraganaArray.size()))); 
+0

Вы действительно должны прочитать о том, что статическая переменная. Ваше «решение» может создать для вас массу проблем. –

+0

Кажется, что это работает без каких-либо проблем. Можете ли вы уточнить? – PaladinButters