Jcombobox custommodel generics предупреждение [Duplicate]JAVA

Программисты JAVA общаются здесь
Anonymous
Jcombobox custommodel generics предупреждение [Duplicate]

Сообщение Anonymous »

чистая Java 8 без IDE. У меня есть проблема с созданием JCombobox с пользовательской моделью без предупреждений из -за дженериков. Моя цель - иметь динамический список объектов, где имя объектов отображается в JCombobox и может быть выбрано там. Объекты данных находятся в классе DataLink с несколькими свойствами и одним методом ToString (), который возвращает имя объекта как строка. Он расширяет AbstractListmodel и реализует ComboBoxModel. Он работает с элементами класса объекта, которые он содержит в ArrayList. Он содержит значение SelectedIndex и переопределяет 4 метода getElementat (), getSize (), getSelectedItem (), setSelectedItem (). Additinally Itremtes clear (), size (), get (), add () и remove () для работы в ArrayList.
Затем у меня есть класс DataLinkModel (это дополнительно реализует методы, чтобы действовать как JTableModel, но не важен здесь и сейчас). Он использует комплексную комбодель для хранения своих элементов, которые имеют тип DataLink. Он имеет метод Public Compomodel getCombolist (), чтобы вернуть комбо -ходель, чтобы передать его в метод Jomcbobox или метод SetModel (). DataLinkModel создается в данных обработки данных как DataLink, который имеет метод публичного комбо -ходеля getDatalinkCombolist (), который возвращает dataLink.getCombolist (). В jframe у меня сейчас есть это объявление и инсталляция (DataClass Instanced): < /p>

Код: Выделить всё

JComboBox   comboDataObject;
comboDataObject = new JComboBox((ComboBoxModel)dataClass.getDataLinkComboList()); // Line 3649
< /code>
Этот синтаксис дает (с xlint: unchecked): < /p>
AppFrame.java:3649: warning: [unchecked] unchecked cast required: ComboBoxModel found:    ComboModel 1 warning
< /code>
Я попробовал это с помощью типа в виде DataLink, или комболера, или DataLinkModel в разных комбинациях. Иногда я получаю два предупреждения, иногда одно, но всегда предупреждения. Я понятия не имею, как сказать тип. Пропуск актера предупреждает о неконтролированном обращении. По крайней мере, это строка, которая поступает из метода ToString () в объекте DataLink, который должен быть показан в JCombobox. В поисках здесь и Googled я обнаружил только решения String [], никогда не сложные списки объектов.

Помимо предупреждений, которые приложение работает, как и ожидалось.public class DataLink {
... several properties, getter, setter
public String toString() {
return name;
}
}
class ComboModel extends AbstractListModel implements ComboBoxModel {
List    data;
int         selectedIndex;
public ComboModel() {
data        = new ArrayList();
selectedIndex   = -1;
}
public Object getElementAt(int index)   // Overides operate on data list
public int getSize()
public Object getSelectedItem()
public void setSelectedItem(Object anItem)
// Custom methods:
public void clear()
public int size()
public Object get(int index)
public void add(Object object)
public void remove(int index)   // remove, add and clear after data change have: fireContentsChanged(this, -1, -1);
}
public class DataLinkModel extends AbstractTableModel {
ComboModel comboList;
public DataLinkModel() {
comboList = new ComboModel();
}
public ComboModel getComboList() {
return comboList;
}
... some methods to extend abstractTableModel
... methods as proxie methods that operate on the comboList(add, remove etc).
}
public class DataClass {
DataLinkModel   dataLink;
...
public DataClass() {
dataLink = new DataLinkModel();
createDataInDataLink();
}
public ComboModel getDataLinkComboList() {
return dataLink.getComboList();
}
...
}
Спасибо, Фрэнки

Подробнее здесь: https://stackoverflow.com/questions/796 ... cs-warning

Вернуться в «JAVA»