Предупреждение JComboBox, предотвращающее открытие страницы дизайна в eclipse
OK Я использую eclipse и его редактор GUI, и у меня есть такая строка:
public static String[] blah = {"Blah", "Blah", "Blah", "Blah"};
и JComboBox, как это:
JComboBox comboBox = new JComboBox(blah);
comboBox.setBounds(10, 56, 312, 37);
contentPane.add(comboBox);
combobox использует строку выше, чтобы получить свои данные, но когда я ввожу "БЛА" в 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 ответов
проблема в том, что WindowBuilder не может обрабатывать версию generics JComboBox<E>
whitch является новым в jre7.
У меня была та же проблема и починил его путем добавления jre6 под Настройки - > Java - > Установленные JREs и обеспечение того, чтобы проект использовал среду выполнения 'JavaSE-1.6' под проект - > свойства - > компилятор Java.
поэтому, если вам не нужна java 7, Вы можете легко исправить это, иначе вы нужно дождаться Windowbuilder для поддержки версии generics.
// comboBoxTraceModeSelection = new JComboBox<TraceMode>(TraceMode.values());
comboBoxTraceModeSelection = new JComboBox<TraceMode>();
comboBoxTraceModeSelection.setModel(new DefaultComboBoxModel<TraceMode>
(TraceMode.values()));
это обходной путь для использования перечисления в JComboBox (с WindowBuilder на Eclipse 3.7.2 для java 6). Да, похоже, это связано с Java-генераторами для объектов, которые немного необычны (перечисление, строка и т. д.). TraceMode-это пользовательское перечисление. Прокомментированная строка вызывает ту же ошибку, что и исходный плакат. Это проблема WindowBuilder, а не проблема Eclipse или Java.
Я думаю, что OP уже получил полезный ответ, так как прошло 3 года :D однако, надеюсь, вы найдете это полезным:
на самом деле я не знаю, почему мы получаем эту ошибку, но u может легко избавиться от нее, разделив создание ComboBoxModel и создание JComboBox.
определение сначала модели (например, с помощью DefaultComboBoxModel), добавление необходимых элементов, а затем передача вышеуказанной модели конструктору JComboBox, не приводит к этой ошибке и работает штраф.
Э. Г.
public static String[] blah = {"Blah", "Blah", "Blah", "Blah"};
DefaultComboBoxModel<String> comboModel = new DefaultComboBoxModel<String>(blah);
JComboBox comboBox = new JComboBox(comboModel);`
довольно лаконично и читабельно, я думаю:)