Предупреждение JComboBox, препятствующее открытию страницы дизайна в затмении - PullRequest
6 голосов
/ 13 января 2012

ОК, я использую eclipse и его графический редактор, и у меня есть такая строка:

public static String[] blah = {"Blah", "Blah", "Blah", "Blah"};

и JComboBox вроде этого:

JComboBox comboBox = new JComboBox(blah);
    comboBox.setBounds(10, 56, 312, 37);
    contentPane.add(comboBox);

В комбинированном ящике используется строка выше, чтобы получить свои данные, но когда я вхожу в "бла" в комбинированном ящике, появляется эта ошибка ...

Type safety: The constructor JComboBox(Object[]) belongs to the raw type JComboBox.    References to generic type JComboBox<E> should be parameterized

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

INVALID SOURCE. No Constructor Binding. ---  new JComboBox(locations) is not valid source for component creation, it references not existing constructor. 

поэтому я хотел бы знать, есть ли другой способ преодолеть эту проблему

Ответы [ 3 ]

9 голосов
/ 11 февраля 2013
// comboBoxTraceModeSelection = new JComboBox<TraceMode>(TraceMode.values());
   comboBoxTraceModeSelection = new JComboBox<TraceMode>();
   comboBoxTraceModeSelection.setModel(new DefaultComboBoxModel<TraceMode>
(TraceMode.values()));

Это обходной путь при использовании enum в JComboBox (с WindowBuilder на Eclipse 3.7.2 для Java 6).Да, похоже, это связано с обобщениями Java для объектов, которые немного необычны (enum, String и т. Д.).TraceMode - это пользовательское перечисление.Закомментированная строка вызывает ту же ошибку, что и у исходного постера.Это проблема WindowBuilder, а не проблема Eclipse или Java.

6 голосов
/ 25 января 2012

Проблема заключается в том, что WindowBuilder не может обрабатывать универсальную версию JComboBox<E>, которая является новой в jre7.

У меня была та же проблема, и я исправил ее, добавив jre6 в Предпочтения -> Java -> Установленные JRE и обеспечение того, чтобы проект использовал Среду выполнения 'JavaSE-1.6' в Проект -> Свойства -> Java Compiler .

Так что, если вам не нужна Java 7, вы можете легко это исправить, иначе вам придется подождать, пока Windowbuilder поддержит версию дженериков.

2 голосов
/ 02 марта 2015

Я думаю, что ОП уже получил полезный ответ, так как прошло 3 года: D, однако, надеюсь, вы найдете это полезным:

На самом деле я не знаю, почему мы получаем эту ошибку, но вы можете легко получитьизбавиться от него, разделив создание ComboBoxModel и создание JComboBox.

Определение сначала модели (например, с помощью DefaultComboBoxModel), добавление необходимых элементов и последующая передача вышеуказанной модели в конструктор JComboBox, не приводит к этой ошибке иотлично работает.

Например,

public static String[] blah = {"Blah", "Blah", "Blah", "Blah"};

DefaultComboBoxModel<String> comboModel = new DefaultComboBoxModel<String>(blah);

JComboBox comboBox = new JComboBox(comboModel);`

Довольно лаконично и читабельно, я думаю:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...