Я использую JList и JComboBox в разных местах. Содержание обоих динамически меняется.
После создания comboBox вы не можете просто сказать comboBox.setModel(String[]), вам нужно создать новую модель, а затем установить ее в comboBox.
То же самое происходит с JList.
Вместо того, чтобы создавать свои собственные Jlist и ComboBox только для добавления нового метода с именем .setNewModel(String[]), я создал статический метод в своем «служебном» классе, который получает String[] и возвращает ListModel.
Итак, я могу сделать это:
someComboBox.setModel((ComboBoxModel)UtilityClass.convetToListModel(aStringArray));
Я использую то же самое для JList.
someList.setModel(UtilityClass.convetToListModel(anotherStringArray));
мой вопрос:
Может ли приведение listModel к ComboBoxModel иметь неожиданные последствия? Если да, то можно ли изменить все содержимое comboBox без необходимости преобразования ArrayString в модель?
вот код метода:
public static ListModel convertToListModel(String[] nList)
{
return (new JComboBox(nList).getModel());
}
Программа компилируется и работает нормально, но кастинг всегда вызывает у меня сомнения, особенно сложные объекты. Да, я знаю, что могу расширить JComboBox и JList, чтобы добавить метод, который выполняет эту работу, но это требует много дополнительной работы. Почему ComboBox и Jlist не обновляют или не изменяют модель, чем принимают простой массив строк?