張丹丹
摘要:在構(gòu)造Java組件時(shí),通常有多個(gè)構(gòu)造方法,簡(jiǎn)單一些的通過(guò)文本、圖標(biāo)來(lái)初始化。在制作下拉列表框和列表框時(shí),可以使用additem()或setListData()等方法輔助構(gòu)造函數(shù)來(lái)完成列表項(xiàng)的創(chuàng)建,還可以通過(guò)帶有ComboBoxModel和ListModel等參數(shù)的構(gòu)造方法來(lái)構(gòu)建,為了封裝該類(lèi)模型,可以通過(guò)繼承ComboBoxModel接口、AbstractListModel類(lèi)來(lái)完成,在封裝完畢后,可以在菜單構(gòu)造函數(shù)中將創(chuàng)建為JComboBoxModel對(duì)象或JlistModel對(duì)象,這些對(duì)象作為參數(shù)構(gòu)建JComboBox或JList。
關(guān)鍵詞:ComboBoxModel;ListModel;AbstractListModel
中圖分類(lèi)號(hào):TP311? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)26-0214-02
1 下拉菜單的制作
制作下拉菜單一般可通過(guò)實(shí)現(xiàn)ComboBoxModel接口來(lái)構(gòu)造下拉選項(xiàng),因此需要實(shí)現(xiàn)該接口的兩個(gè)方法:設(shè)置選擇下拉選項(xiàng)使用:public void setSelectedItem(Object item);獲取下拉選項(xiàng)在顯示框中的顯示使用:public void getSelectedItem();因?yàn)镃omboBoxModel接口是ListModel接口的子類(lèi),所以還可以繼承AbstractListModel類(lèi),繼承后也需要實(shí)現(xiàn)其中的兩個(gè)方法:獲取下拉選項(xiàng)的個(gè)數(shù)使用:public intgetSize();根據(jù)索引返回下拉選項(xiàng)內(nèi)容使用:public Object getElementAt(int index)。綜上所述,ComboBoxModel接口的兩個(gè)方法主要實(shí)現(xiàn)下拉菜單最上面顯示框的內(nèi)容。而AbstractListModel類(lèi)的兩個(gè)方法主要完成下拉菜單下拉后的內(nèi)容。
具體實(shí)現(xiàn)過(guò)程,創(chuàng)建了兩個(gè)類(lèi),一個(gè)是下拉菜單的構(gòu)造類(lèi)mycombox,一個(gè)是窗體類(lèi)comboxframe。構(gòu)造下拉菜單類(lèi)mycombox上段陳述是通過(guò)繼承ComboBoxModel接口和AbstractListModel類(lèi)來(lái)實(shí)現(xiàn)的,具體函數(shù)為public class mycombox extends AbstractListModel implements ComboBoxModel,然后再設(shè)置一個(gè)字符串?dāng)?shù)組,把下拉項(xiàng)存入該數(shù)組,如String list[]= {"青菜 ","白菜 ","菠菜","黃瓜"},再創(chuàng)建一個(gè)字符串變量,初始為null,作為下拉菜單頂上的選項(xiàng)框內(nèi)容項(xiàng),如String item=null。接下來(lái)實(shí)現(xiàn)四個(gè)方法:第一個(gè)方法public intgetSize()先獲取數(shù)組長(zhǎng)度,即獲取選項(xiàng)數(shù)量。public Object getElementAt(int index)根據(jù)索引返回選項(xiàng)內(nèi)容。public void setSelectedItem(Object item)設(shè)置顯示框初始化內(nèi)容,在這里初始化為null。public Object getElementAt(int index)設(shè)置顯示框選擇下拉項(xiàng)后的顯示內(nèi)容。以上四個(gè)方法只需要按模式完成,其他變量或方法間的關(guān)聯(lián)均由上述接口和抽象類(lèi)根據(jù)組件內(nèi)部來(lái)實(shí)現(xiàn)。具體代碼如下圖:
和下拉列表框相似,通過(guò)無(wú)參函數(shù)可以初始化列表框,之后使用setListData()在列表框中添加列表選項(xiàng)。而使用setListData()方法列出選項(xiàng)的模式較為固定。在本文,使用Public void JList(ListModeldataModel)構(gòu)建一個(gè)列表框,在這里參數(shù)是ListModel,因?yàn)樯婕捌渌承o(wú)須使用的方法,因此這里通過(guò)繼承AbstractListModel來(lái)完成,只需實(shí)現(xiàn)該抽象類(lèi)的兩個(gè)方法:getElementAt()和getSize(),其他方法無(wú)須考慮。在此例中,仍然創(chuàng)建兩個(gè)類(lèi),一個(gè)窗體類(lèi),一個(gè)ListModel類(lèi)。
具體實(shí)現(xiàn)過(guò)程中,將創(chuàng)建的ListModel類(lèi)繼承AbstractListModel,接著先創(chuàng)建列表項(xiàng),即創(chuàng)建字符串?dāng)?shù)組,如:private String contents[]= {"蘇軾","蘇洵","蘇轍","王安石","韓愈","曾鞏","柳宗元","歐陽(yáng)修"}。然后實(shí)現(xiàn)getElementAt(),在該方法中返回列表項(xiàng)值,如:if(n 在窗體類(lèi)中,使用JFrame窗體,將其設(shè)置為容器后,添加組件。在此當(dāng)列表項(xiàng)較多時(shí),可以使用滾動(dòng)條來(lái)顯示。因此可以添加滾動(dòng)面板,將組件添加至該面板即可。最后將面板添加至頂級(jí)容器。列表框代碼如下。 參考文獻(xiàn): [1] 武瑞嬋.“禮讓”原則學(xué)習(xí)Java對(duì)象初始化順序[J].襄陽(yáng)職業(yè)技術(shù)學(xué)院學(xué)報(bào),2014,13(2):121-123. [2] 盧楠.Java動(dòng)態(tài)代理的研究與應(yīng)用[J].計(jì)算機(jī)與網(wǎng)絡(luò),2014,40(12):50-52. [3] 蔡宇.利用上轉(zhuǎn)型對(duì)象提高Java程序可擴(kuò)展性的案例研究[J].電子元器件與信息技術(shù),2019,3(3):5-7,11. [4] 王艷娟.淺析面向?qū)ο笳Z(yǔ)言C++與Java區(qū)別[J].科技信息,2012(34):299. [5] 李寧.JAVA中的方法重寫(xiě)與方法重載[J].科技信息,2009(3):83,93. [6] 張克軍.深入解析Java的多態(tài)性及應(yīng)用研究[J].電腦知識(shí)與技術(shù)(學(xué)術(shù)交流),2007,3(16):1069-1070,1168. 【通聯(lián)編輯:王力】