`
pz0513
  • 浏览: 18556 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

JList的使用大集合

阅读更多
  JList: ListModel
JTable: TableModel JComboBox: ComboBoxModel JTree: TreeModel 各类Text控件:Document 

ListModel  


Swing首先定义了接口ListModel

然后定义了抽象类AbstractListModel实现这个接口。在抽象类里没有定义实际数据的存储方式。因此要实现AbstractListModel,用户还需要定义这两个函数
public int getSize(); public Object getElementAt(int index);
因为没有定义实际数据的存储方式,当然没有办法提供这两个函数的实现。

最后Swing提供缺省类DefaultListModel实现抽象类,缺省类以Vector作为存储数据的方式。

构造一个JList的实例有四种方式:

JList()          

JList(final Object[] listData)

JList(final Vector listData)

JList(ListModel dataModel)

前三种构造函数里会分别生成相应的ListModel。还可以在构造完后JList还可以用以下的函数来制定ListModel

void setListData(final Object[] listData)          

void setListData(final Vector listData)          

void setModel(ListModel model) 



JList 没有提供编辑其Item的方法,用户是无法直接编辑其Item的(这点和JComboBox不同,JComboBox提供了直接编辑其Item的方法), 要改变Item的内容需要直接操作ListModel(用数组和Vector生成JList不适合用来显示可变内容的数据)。要显示可变内容的 JList,最方便的方法是用DefaultListModel,但由于它用Vcetor作为其内部的存储数据的方式,决定他们在处理大数据量的显示时是 不适宜的。首先Vector有内部容量的概念,当容量不足以容纳更多的数据时,它需要重新分配一块内存,复制原内存的东西,并把原来的内存丢弃,这是非常 耗时的动作;其次,Vector是线程安全的容器(thread-safe collection),所有对容器的操作都需要同步(synchronized),对于包含大数据量的collection这也是非常耗时的。因此对于 大数据量的Application-data,用户如果想用collection,应该在ArrayList和LinkedList(thread- unsafe collection)之间选择:ArrayList也有内部容量的概念,但它提供了随机存取的功能 (random access), 使用它时可以预先申请一块较大的内存,以免以后重新分配内存。
分享到:
评论

相关推荐

    疯狂JAVA讲义

    学生提问:使用组合关系来实现复用时,需要创建两个Animal对象,是不是意味着使用组合关系时系统开销更大? 159 5.9 初始化块 159 5.9.1 使用初始化块 160 5.9.2 初始化块和构造器 161 5.9.3 静态初始化块 162 ...

    JIDE Grids (表格)开发员技术手册

    它涵盖不只是JTable,还包括JList和JTree。您务必运行我们提供的演示程序才能体会到我们在该产品上花了多少精力,所有这些都是为了让您能更容易地进一步开发。 功能介绍 界面组件 PropertyGrid - 属性表格,一...

    javaSE代码实例

    14.6.9 使用for-each循环遍历集合 300 14.7 映射集 301 14.7.1 Map接口及含义 301 14.7.2 HashMap类的使用 302 14.7.3 Hashtable类的使用 303 14.7.4 LinkedHashMap类的使用 304 14.7.5 SortedMap接口...

    Java开发技术大全 电子版

    14.8.7列表框(JList)使用示例502 14.8.8组合框(JComboBox)使用示例506 14.8.9表格(Jtable)使用示例508 14.8.10树(JTree)使用示例518 14.8.11菜单使用示例523 14.9布局管理527 14.9.1流式布局...

    java编程宝典

    1.4 JList用法 2 1.5 JTable用法 3 1.6 JPanel绘制背景图 4 2数据库 5 2.1 增 8 2.1.1 单个增加 8 2.1.2 批量增加 8 2.2 删 8 2.2.1单个删除 8 2.1.2批量删除 9 2.3 改 9 2.4 查 9 2.4.1 根据主键精确查询 9 2.4.2 ...

    JINI 核心技术

    9.4 通用Jini类型的JList表元交付工具 212 9.4.1 LookupCellRenderer 213 9.4.2 ServiceCellRenderer 214 9.4.3 AttrCellRenderer 215 9.5 浏览器框架的核心 217 9.5.1 在列表中存储数据 217 9.5.2 使用发现 218 ...

    JINI核心技术

    9.4 通用Jini类型的JList表元交付工具 212 9.4.1 LookupCellRenderer 213 9.4.2 ServiceCellRenderer 214 9.4.3 AttrCellRenderer 215 9.5 浏览器框架的核心 217 9.5.1 在列表中存储数据 217 9.5.2 使用发现 218 ...

    java实现别踩白块儿源码-JavaCode:我专门介绍以下主题:Java基本数据类型,声明语句,表达式语句,导入类库,用户输入之外,检查有效

    Swing及其组件的图形用户界面(GUI),GUI事件处理,ChangeListener,JOptionPane,组合框,列表框,JLists,DefaultListModel,将JScrollpane与JList,JSpinner,JTree,Flow,Border,和框布局管理器。 使用Java ...

    Java开发详解.zip

    031314_【第13章:Java类集】_集合工具类:Collections笔记.pdf 031315_【第13章:Java类集】_Stack类笔记.pdf 031316_【第13章:Java类集】_属性类:Properties笔记.pdf 031317_〖第13章:Java类集〗_范例讲解:一...

Global site tag (gtag.js) - Google Analytics