Cha*_*hap 3 java containers defaultlistmodel
我写了一个类(我们称之为Model.java),它包含一个Deque<T>用于入队和出列项的方法.现在我想把它绑定到GUI JList.我对如何以某种方式使用我的"模型"数据 - Deque - 作为JList想要的DefaultListModel感到困惑.我仍然在努力真正获得OO概念,因为它们适用于GUI编程.DefaultListModel文档说明:
此类松散地实现了java.util.Vector API,因为它实现了1.1.x版本的java.util.Vector,没有集合类支持,并在发生更改时通知ListDataListeners.目前它代表一个矢量......
有没有办法让DefaultListModel使用我Deque<T>而不是Vector,从而允许我的Model.java代码保持基本不变,同时免费提供所有的监听/通知行为?或者我是否必须重写Model.java以使用DefaultListModel而不是Deque<T>?
请注意,JList构造函数采用ListModel(接口)而不是DefaultListModel(实现).这是一个OO原则(契约),指定JList可以使用碰巧实现ListModel接口的任何对象.来自面向对象编程概念的Java教程:
界面是一个类和外部世界之间的契约.当类实现接口时,它承诺提供该接口发布的行为.
由于ListModel只有四种方法,因此您的类应该很容易实现它们并将操作委托给您的内部Deque.你的班级应该被宣布为
public class Model implements ListModel
{
....
Run Code Online (Sandbox Code Playgroud)
并将包含四个实现方法的其他方法ListModel.这些实现可以在封面下执行您需要的任何操作,但必须遵守JavaDoc中定义的ListModel任何行为以及作为ListModel合同的一部分.
完成此操作后,您可以构造JList将类的实例传递Model给构造函数.
| 归档时间: |
|
| 查看次数: |
212 次 |
| 最近记录: |