2016-05-29 4 views
1

Каков правильный способ передачи данных на JComboBox? Я пытаюсь подать массив String на JComboBox, который был инициирован ранее, и я получаю NullPointerException.Каков правильный способ передачи данных в JComboBox?

Код:

public void readPlayers(){ 
    String[] arr = new String[currentGames.get(currentGame).currentPlayers()]; 
    for(int i = 0; i <currentGames.get(currentGame).currentPlayers(); i++){ 
     arr[i] = "Player " + (i + 1) + currentGames.get(currentGame).getPlayer(i).getId(); 
    } 
    DefaultComboBoxModel model = new DefaultComboBoxModel(arr); 
    playersBox.setModel( model); 
} 

Ошибка:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 

Edit: Моя проблема в том, что мне нужно обновить данные в JComboBox каждый раз, когда я хочу использовать его, потому что струны в массив может отличаться от того, когда я впервые использовал поле со списком.

+0

Что такое тип данных 'currentGames.get (currentGame) .currentPlayers()'? Список? Карта? ... – STaefi

+0

Многопоточность? Убедитесь, что условия гонки отсутствуют. Например. 'currentGames.get (currentGame) .currentPlayers()' может потенциально возвращать число, которое станет недействительным во время выполнения цикла, если в/из списка будет добавлено и удалено элементы добавления/удаления потоков. Сначала проверьте элементы GUI со статическими данными. –

+0

'currentGames.get (currentGame) .currentPlayers()' return int и 'currentGames.get (currentGame) .getPlayer (i) .getId()' возвращает строку –

ответ

2

I need to update the data in the JComboBox every time I want to use it because the strings in the array might be different than when I used the combo box the first time.

Хотя иногда целесообразно заменить ComboBoxModel с помощью setModel(), как показано here, вы можете обновление модели в месте с помощью removeAllElements() с последующей петлей, которая вызывает addElement().

+1

Thx. Он работал с альтернативным способом, которым вы ввели –

Смежные вопросы