浅析使用模型参数构造Java Swing组件
2020-11-02张丹丹
张丹丹
摘要:在构造Java组件时,通常有多个构造方法,简单一些的通过文本、图标来初始化。在制作下拉列表框和列表框时,可以使用additem()或setListData()等方法辅助构造函数来完成列表项的创建,还可以通过带有ComboBoxModel和ListModel等参数的构造方法来构建,为了封装该类模型,可以通过继承ComboBoxModel接口、AbstractListModel类来完成,在封装完毕后,可以在菜单构造函数中将创建为JComboBoxModel对象或JlistModel对象,这些对象作为参数构建JComboBox或JList。
关键词:ComboBoxModel;ListModel;AbstractListModel
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2020)26-0214-02
1 下拉菜单的制作
制作下拉菜单一般可通过实现ComboBoxModel接口来构造下拉选项,因此需要实现该接口的两个方法:设置选择下拉选项使用:public void setSelectedItem(Object item);获取下拉选项在显示框中的显示使用:public void getSelectedItem();因为ComboBoxModel接口是ListModel接口的子类,所以还可以继承AbstractListModel类,继承后也需要实现其中的两个方法:获取下拉选项的个数使用:public intgetSize();根据索引返回下拉选项内容使用:public Object getElementAt(int index)。综上所述,ComboBoxModel接口的两个方法主要实现下拉菜单最上面显示框的内容。而AbstractListModel类的两个方法主要完成下拉菜单下拉后的内容。
具体实现过程,创建了两个类,一个是下拉菜单的构造类mycombox,一个是窗体类comboxframe。构造下拉菜单类mycombox上段陈述是通过继承ComboBoxModel接口和AbstractListModel类来实现的,具体函数为public class mycombox extends AbstractListModel implements ComboBoxModel,然后再设置一个字符串数组,把下拉项存入该数组,如String list[]= {"青菜 ","白菜 ","菠菜","黄瓜"},再创建一个字符串变量,初始为null,作为下拉菜单顶上的选项框内容项,如String item=null。接下来实现四个方法:第一个方法public intgetSize()先获取数组长度,即获取选项数量。public Object getElementAt(int index)根据索引返回选项内容。public void setSelectedItem(Object item)设置显示框初始化内容,在这里初始化为null。public Object getElementAt(int index)设置显示框选择下拉项后的显示内容。以上四个方法只需要按模式完成,其他变量或方法间的关联均由上述接口和抽象类根据组件内部来实现。具体代码如下图:
和下拉列表框相似,通过无参函数可以初始化列表框,之后使用setListData()在列表框中添加列表选项。而使用setListData()方法列出选项的模式较为固定。在本文,使用Public void JList(ListModeldataModel)构建一个列表框,在这里参数是ListModel,因为涉及其他某些无须使用的方法,因此这里通过继承AbstractListModel来完成,只需实现该抽象类的两个方法:getElementAt()和getSize(),其他方法无须考虑。在此例中,仍然创建两个类,一个窗体类,一个ListModel类。
具体实现过程中,将创建的ListModel类继承AbstractListModel,接着先创建列表项,即创建字符串数组,如:private String contents[]= {"苏轼","苏洵","苏辙","王安石","韩愈","曾巩","柳宗元","欧阳修"}。然后实现getElementAt(),在该方法中返回列表项值,如:if(n 在窗体类中,使用JFrame窗体,将其设置为容器后,添加组件。在此当列表项较多时,可以使用滚动条来显示。因此可以添加滚动面板,将组件添加至该面板即可。最后将面板添加至顶级容器。列表框代码如下。 参考文献: [1] 武瑞婵.“礼让”原则学习Java对象初始化顺序[J].襄阳职业技术学院学报,2014,13(2):121-123. [2] 卢楠.Java动态代理的研究与应用[J].计算机与网络,2014,40(12):50-52. [3] 蔡宇.利用上转型对象提高Java程序可扩展性的案例研究[J].电子元器件与信息技术,2019,3(3):5-7,11. [4] 王艳娟.浅析面向对象语言C++与Java区别[J].科技信息,2012(34):299. [5] 李宁.JAVA中的方法重写与方法重载[J].科技信息,2009(3):83,93. [6] 张克军.深入解析Java的多态性及應用研究[J].电脑知识与技术(学术交流),2007,3(16):1069-1070,1168. 【通联编辑:王力】