本文針對(duì)Java語(yǔ)言的特點(diǎn),提出了在程序中動(dòng)態(tài)添加和刪除列表框中的列表元素并在結(jié)束操作時(shí)獲取列表元素的實(shí)現(xiàn)方法,并給出了具體開發(fā)的實(shí)例。

  關(guān)鍵詞 Java 列表框

  引言

  Java是一種純粹的面向?qū)ο蟮木幊陶Z(yǔ)言,由于具有良好的移植性已經(jīng)成為程序員開發(fā)應(yīng)用系統(tǒng)的常用工具。在開發(fā)人機(jī)交互界面時(shí),程序員與用戶都想盡量少的輸入數(shù)據(jù)。如果有很多固定的選項(xiàng)供用戶選擇,列表框是很好的解決方案。用戶在列表框中選擇所需要的列表元素,可以在另外一個(gè)列表框中顯示出來(lái),后一列表框中的元素就要能夠動(dòng)態(tài)的添加和刪除,最后需要獲得用戶選擇的列表元素值進(jìn)行其他的運(yùn)算或者處理。由于Java語(yǔ)言的特點(diǎn),解決這個(gè)問題還需要一定的技巧,下面給出了對(duì)這一問題的解決方法

  實(shí)現(xiàn)方法

  1、初始化

  首先添加JScrollPane的實(shí)例jScrollPane1,DefaultListModel 實(shí)例model1,然后使用model1生成JList的實(shí)例。在對(duì)話框合適的位置添加jScrollPane1,調(diào)整到合適的大小,然后在jScrollPane1上增加jList1。這樣帶有滾動(dòng)條的列表框就添加完成了。

  初始化一個(gè)Vector實(shí)例用來(lái)存儲(chǔ)選擇的列表元素。由于選擇的元素具有不確定性,所以使用Vector這種存儲(chǔ)空間可以動(dòng)態(tài)變化的數(shù)據(jù)結(jié)構(gòu)。Vector初始化實(shí)例時(shí)不能指定初始化長(zhǎng)度,所以增加一個(gè)整形變量指示Vector中列表中對(duì)象的個(gè)數(shù)。

  2、添加和刪除列表元素

  列表框中的元素添加和刪除是通過model1的addElement方法和removeElement方法實(shí)現(xiàn)的。通過列表框的屬性selectionMode可以設(shè)置列表框單選,單個(gè)間斷選擇和多個(gè)間斷選擇。Vector中存儲(chǔ)的對(duì)象是和選擇的元素相對(duì)應(yīng)的,對(duì)象的添加和刪除是通過addElement方法和removeElement方法實(shí)現(xiàn)的。

  3、獲得選擇元素

  在點(diǎn)擊“確定”按鈕以后,需要將Vector實(shí)例中的對(duì)象轉(zhuǎn)化成為需要的數(shù)據(jù)類型。

  實(shí)例解析

  現(xiàn)以圖1所示為例對(duì)具體實(shí)現(xiàn)方法進(jìn)行描述。由圖1中左面列表框中選擇可用元素,選擇方式設(shè)為多個(gè)間斷選擇,由于其他兩種方式相對(duì)簡(jiǎn)單,實(shí)現(xiàn)方法可在這個(gè)實(shí)例的基礎(chǔ)上修改得到。選定元素之后,點(diǎn)擊“>>”按鈕,選擇的元素就會(huì)在右面的列表框顯示出來(lái)。如果多選或者錯(cuò)選,可在右面的列表框中選定元素后點(diǎn)擊“<<”按鈕移去選定的元素。


圖1 列表框示例


  具體程序?qū)崿F(xiàn)方法如下。

  1) 初始化(僅給出初始化左面的列表框)

private JScrollPane jScrollPane1 = new JScrollPane();
DefaultListModel model1 = new DefaultListModel();
private JList jList1 = new JList(model1);
private Vector selectedElement = new Vector();
private int selectedNumber = 0;

  2)添加和刪除元素

  向右面的列表框中添加元素,也就是單擊“>>”按鈕執(zhí)行的操作。

for(int i = 0;i< jList1.getSelectedValues().length; i++)
{
 //選擇多個(gè)元素,逐個(gè)進(jìn)行操作
 selectedElement.addElement(jList1.getSelectedValues()[i]); //Vector實(shí)例中增加對(duì)象
 model2.addElement(jList1.getSelectedValues()[i]); //右面的列表中增加元素
 selectedNumber = selectedNumber + 1; //選定元素個(gè)數(shù)加1
 selectedElement.setSize(selectedNumber); //設(shè)定Vector實(shí)例的長(zhǎng)度
}

  從右面的列表框中選擇元素進(jìn)行刪除,也就是單擊“<<”按鈕執(zhí)行的操作。

for(int i = 0;i< jList2.getSelectedValues().length; i++)
{
 selectedElement.removeElement(jList2.getSelectedValues()[0]);
 model2.removeElement(jList2.getSelectedValues()[0]);
 //減少元素,需要注意每次移去的都是第0個(gè)元素
 selectedNumber = selectedNumber - 1;
 selectedElement.setSize(selectedNumber);
}

  3)獲取選擇的元素

  以將選定的元素轉(zhuǎn)換成字符串類型為例,這段代碼一般放在“確定”按鈕的單擊操作里面。

String[] selectedProduct = new String[selectedElement.size()];
for (int i = 0; i < selectedElement.size(); i++) {
 selectedProduct[i] = (String)selectedElement.elementAt(i); //強(qiáng)制類型轉(zhuǎn)換成為字符串
}

  總結(jié)

  本文給出了實(shí)現(xiàn)Java列表框中元素動(dòng)態(tài)添加、刪除操作和獲得用戶選擇的元素值的方法和實(shí)例,解決了Java程序設(shè)計(jì)中的列表框元素的動(dòng)態(tài)變化問題。