Обратите внимание, что конструктор JList
принимает ListModel
(интерфейс), а не DefaultListModel
(реализация). Это принцип ОО (контракт), определяющий, что JList
может использовать ЛЮБОЙ объект, который реализует интерфейс ListModel
. Из учебника по Java Концепции объектно-ориентированного программирования :
Интерфейс - это контракт между классом и внешним миром. когда
класс реализует интерфейс, он обещает обеспечить поведение
опубликовано этим интерфейсом.
Поскольку ListModel
имеет только четыре метода, вашему классу должно быть очень легко реализовать их и делегировать операции вашему внутреннему Deque
. Ваш класс должен быть объявлен как
public class Model implements ListModel
{
....
и будет содержать четыре дополнительных метода, реализующих методы ListModel
. Реализации могут делать все, что вам нужно под прикрытием, но они должны придерживаться определения ListModel
и любого поведения, указанного как часть ListModel
контракта, в JavaDoc.
Как только вы это сделаете, вы можете создать JList
, передав экземпляр вашего класса Model
в конструктор.