加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何将Java Deque转换为DefaultListModel?

发布时间:2020-12-15 08:42:05 所属栏目:Java 来源:网络整理
导读:我写了一个包含Deque T的类(我们称之为Model. java),其中包含用于入队和出列项的方法.现在我想把它绑定到GUI JList.我对如何以某种方式使用我的“模型”数据 – Deque – 作为JList想要的DefaultListModel感到困惑.我仍然在努力真正获得OO概念,因为它们适用
我写了一个包含Deque< T>的类(我们称之为Model. java),其中包含用于入队和出列项的方法.现在我想把它绑定到GUI JList.我对如何以某种方式使用我的“模型”数据 – Deque – 作为JList想要的DefaultListModel感到困惑.我仍然在努力真正获得OO概念,因为它们适用于GUI编程. DefaultListModel文档说明:

This class loosely implements the java.util.Vector API,in that it implements the 1.1.x version of java.util.Vector,has no collection class support,and notifies the ListDataListeners when changes occur. Presently it delegates to a Vector ….

有没有办法让DefaultListModel使用我的Deque< T>而不是Vector,从而允许我的Model.java代码保持基本不变,同时免费提供所有的收听/通知行为?或者我是否必须重写Model.java以使用DefaultListModel而不是Deque< T>?

解决方法

请注意,JList构造函数采用ListModel(接口),而不是DefaultListModel(实现).这是一个OO原则(契约),指定JList可以使用碰巧实现ListModel接口的任何对象.来自 Object Oriented Programming Concepts的Java教程:

An interface is a contract between a class and the outside world. When
a class implements an interface,it promises to provide the behavior
published by that interface.

由于ListModel只有四个方法,因此您的类应该很容易实现它们并将操作委托给您的内部Deque.你的班级应该被宣布为

public class Model implements ListModel
{
     ....

并将包含四个实现ListModel方法的其他方法.这些实现可以完成您需要的任何内容,但必须遵守ListModel的定义以及在JavaDoc中作为ListModel协定的一部分指定的任何行为.

完成此操作后,您可以构造一个JList,将类Model的实例传递给构造函数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读