Ошибка списка <Integer> - PullRequest
       13

Ошибка списка <Integer>

0 голосов
/ 19 февраля 2012

Сначала я положил ...

List<int> age = new ArrayList<int>();
     for (int i = 1; i <= 100; ++i) {
     age.add(i);
     }
JComboBox ageComboBox = new JComboBox(age);

Ошибка, которую я получил, была ... синтаксическая ошибка в измерениях токена int, ожидаемая после этого токена ... в двух.

Итак, после принятия предложений, предоставленных Eclipse, я получил ...

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

for (int i = 1; i <= 100; ++i) {
ageList.add(i);
}

JComboBox<ArrayList<Integer>> ageEntries = new JComboBox<ArrayList<Integer>>(ageList);

Почему я не могу добавить ageList в JComboBox?

Ошибка: конструктор JComboBox> (ArrayList) не определен

Ответы [ 3 ]

2 голосов
/ 19 февраля 2012

Согласно документации JComboBox имеет только конструктор по умолчанию, который принимает ComboBoxModel, массив и Vector:

JComboBox() 
JComboBox(ComboBoxModel aModel) 
JComboBox(Object[] items) 
JComboBox(Vector<?> items) 

An Arraylist не является Vector (и не является List, хотя Vector является List).

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

new JComboBox(ageList.toArray(new Integer[]));

Только что понял, что вы, вероятно, на Java 7, где JCombobox параметризован .Однако параметром типа JCombobox должен быть тип элементов коллекции - , а не самой коллекции.Но мое быстрое исправление все еще должно работать.

IOW,

JComboBox<Integer> ageEntries = new JComboBox<Integer>(ageList.toArray(new Integer[]));
0 голосов
/ 19 февраля 2012

Вы создаете поле со списком ArrayList в качестве элементов.Я предполагаю, что вы просто хотите добавить целые числа, так что используйте тип Integer напрямую.Затем вы передаете ageList, который является ArrayList в конструкторе.

В jcombobox есть несколько конструкторов:

  • JComboBox ()
  • JComboBox (Векторные элементы)
  • JComboBox (E [] items)
  • JComboBox (ComboBoxModel aModel)

Ничто из того, что вы можете использовать, для ageList не используетсявектор или массив, это ArrayList.

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

DefaultComboBoxModel<Integer> model = new DefaultComboBoxModel<Integer>();
for (Integer i : ageList) {
    model.addElement(i);
}

JComboBox<Integer> ageEntries = new JComboBox<Integer>();
ageEntries.setModel(model);
0 голосов
/ 19 февраля 2012

Попробуйте с Vector<Integer> и не параметризуйте JComboBox.См. Также документацию

В документации говорится, что JComboBox не параметризован и что у него есть конструктор JComboBox(Vector<?> items) (среди прочих, где этот является лучшим для вас).

...