欢迎来到天天文库
浏览记录
ID:38966750
大小:2.29 MB
页数:34页
时间:2019-06-22
《JavaSwing图形界面开发(第8章)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第8章如何使用列表框和下拉列表框组件列表框---将“所有选项”都列在框中,提供用户选择。下拉列表框---用户未操作列表框时,只显示出一个数据。但当单击下拉箭头时,数据将以下拉方式显示。说明:列表框、下拉列表框均属于“选择性组件”。虽然用途相同,但各有其使用环境。一般用法:当数据较少时,使用列表框;当数据较多时,尽量使用下拉列表框。28.1如何使用列表框JList列表框组件以“目录形式”显示字符串,允许用户从中选取一项或多项,其中每一项数据称为元素(也称为:列表项Item)。JList类为用户提供了可选择的一组选项,以一列
2、或多列的形式显示。JList可有多个选项,这些选项通常被存放在一个可以滚动的窗格内。创建列表框的方式:数组方式Vector方式ListModel方式38.1.1使用数组方式创建列表框---将“数组”中的每一项数据,作为列表框中的每一项。数组name列表框l4程序运行结果:图8.2:列表框中的选项图8.1:列表框的使用说明:将一些数据存储到数组中,再通过列表框的构造器“JList(Stringtext)”将这些数据列举出来。58.1.2使用Vector方式创建列表框---Vector数据结构l1l2l3窗口事件处理6程序运
3、行结果:说明:●与数组方式相似,只是“存储数据的方式”不同。●主要创建了三个列表框对象,有两个列表框对象是通过数组方式创建,而另一个则使用Vector方式创建。●通过建立的Vector数据结构对象,将数据存储到这个对象中,然后将这个对象显示到列表框中。图8.3:使用Vector创建列表框78.1.3使用ListModel方式创建列表框ListModel是一个接口,其主要功能是定义一些方法,让JList组件取得每个项目的值,并可限定项目的显示时间与方式。表8.1ListModel接口定义的方法8只有实现ListModel接
4、口中的所有方法,才能利用构造器建立JList。不过,若要实现ListModel所有的方法比较麻烦,因为一般不会用addListDataListener()和removeListDataListener()这两个方法。因此,Java提供了“AbstractListModel”抽象类,此抽象类已经实现addListDataListener()与removeListDataListener()两个方法。只要继承AbstractListModel类,则无须实现上述两个方法,只需实现getElementAt()与getSize()
5、方法即可。AbstractListModel抽象类:9AbstractListModel程序示例:通过创建一个“实现了抽象类AbstractListModel”的“DataModel类”来创建一个列表框。10程序运行结果:图8.4:使用ListModel方法创建JList11Java本身还提供了另一个类---“DefaultListModel”实体类。此类继承了AbstractListModel抽象类,并实现了其中所有的抽象方法。因此,无需再让程序员自己实现任何方法,相当方便。DefaultListModel类提供了不少
6、好用的方法,如:◆增加一个项目---addElement()◆删除一个项目---removeElement()◆查询项目---getElementAt()◆汇出项目---copyInto()另外,还可直接动态地更改JList的项目值,而不需要自行产生一个Vector对象,相当于JList(Vectorv)构造函数而言,更加方便实用。DefaultListModel实体类:12DefaultListModel程序示例:13程序运行结果:图8.5:使用DefaultListModel方法创建JList148.1.4列表框选取
7、事件的处理JList类中“addListSelectionListener()”方法,可检测用户是否对JList的选取有任何改变。ListSelectionListener接口中只定义一个方法,即:valueChanged(ListSelectionEvente);只有实现这个方法,才能在用户改变选取值时,取得用户最后的选取状态。15addListSelectionListener()方法程序示例:16图8.6JList的选取事件处理图8.7选取事件的结果178.1.5列表框双击事件的处理列表框的常用事件:---如何处理
8、在JList上双击鼠标的操作。JList本身未提供EventListener监听器,为能处理双击操作,必须利用“鼠标监听器”来捕获双击鼠标。如何知道在哪个Item上双击鼠标?可使用JList类提供的“LocatToindex()方法”获知。18列表框双击事件处理程序示例:代码:19图8.8列表框的双击事件程序说明:首
此文档下载收益归作者所有