張丹丹



摘要:在構造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. 【通聯編輯:王力】