張丹丹



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