0

Я немного новичок в программировании, так что извините, если есть несколько вещей, которые могли бы быть сделаны лучше Моя combobox успешно заполнена моим строковым массивом, и автозаполнение работает нормально. Я просто не могу получить текст в поле со списком.getSelectedItem JComboBox с застекленными списками AutocompleteSupport Возвращает Null

возвращает java.lang.NullPointerException

private ArrayList<String> arrRekening; 
private ArrayList<String> arrEienaar; 
private String[] sarrRekening; 
private String[] sarrEienaar; 

    public NewConnectionPoint() { 

    arrAccount = new ArrayList<String>(); 
    arrOwner = new ArrayList<String>(); 

    FillCombo(arrAccount , "Owners", "OwnerName"); 
    FillCombo(arrOwner , "Accounts", "AccountName"); 
    sarrOwner= arrOwner.toArray(new String[arrOwner .size()]); 
    sarrAccount= arrAccount.toArray(new String[arrAccount.size()]); 

    JComboBox<String> comboAccount = new JComboBox<String>(); 
    AutoCompleteSupport<String> supAccount = AutoCompleteSupport.install(comboRekening, GlazedLists.eventList(Arrays.asList(sarrAccount))); 
    supAccount.setStrict(true); 

    JComboBox<String> comboOwner = new JComboBox<String>(); 
    AutoCompleteSupport<String> supOwner = AutoCompleteSupport.install(comboOwner,GlazedLists.eventList(Arrays.asList(sarrOwner))); 
    supOwner.setStrict(true); 

    JButton btnShow = new JButton("ShowSelectedr"); 
    btnShow.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) { 
     //Error occurs at this line 
      JOptionPane.showMessageDialog(null, comboOwner.getSelectedItem().toString()); 

    });} 

}

// Данные загружаются в ArrayLists из базы данных с SQL

private void FillCombo(ArrayList<String> ComboElements, String sTable, String sColumn){ 
try{ 
    Data.changeQuery(sTable);// database connection fine returns and fills combobox 

    while(MyData.rs.next()){ 
     String sReturn= MyData.rs.getString(sColumn); 
     ComboElements.add(sReturn); 
    } 

}catch(Exception e){ 
    JOptionPane.showMessageDialog(null, e); 
} 

}

ответ

1

Основная трудность вы» здесь возникает проблема, заключающаяся в том, что вы пытаетесь использовать пакет GlazedLists с правильно используя его основную полезность: EventLists.

Вы можете легко преодолеть свои трудности, если используете EventLists, а не ArrayLists.

Если вы действительно хотите, то можете сохранить ваш FillCombo метод возвращающую ArrayList (возможно, лучше название, как getElements()), но прямо-таки начать EventList, используйте GlazedLists EventComboBoxModel связать EventList с JComboBox, и тогда вы увидите, ваш combobox getSelectedItem() должен работать нормально.

Измененный код, чтобы подключить список до выпадающего списка с поддержкой автозавершения будет выглядеть примерно так:

... 
FillCombo(arrOwner , "Owners", "OwnerName"); 
EventList<String> ownerEventList = GlazedLists.eventList(arrOwner); 
EventComboBoxModel<String> ownerModel = new EventComboBoxModel<String>(ownerEventList); 
JComboBox comboOwner = new JComboBox(ownerModel); 
AutoCompleteSupport<String> supOwner = AutoCompleteSupport.install(comboOwner,ownerEventList); 
supOwner.setStrict(true); 
... 
Смежные вопросы