正文

進(jìn)銷存管理系統(tǒng)(20)

Java項目開發(fā)案例全程實錄(第2版) 作者:明日科技


代碼貼士

ItemListener:下拉列表框的事件監(jiān)聽器必須實現(xiàn)的分接口。

ItemStateChanged():當(dāng)下拉列表框的選中項發(fā)生改變時將觸發(fā)該方法。

ItemEvent:這是選項事件類,在用戶更改帶有多項選擇內(nèi)容的組件選項時(例如下拉選擇框組件),將產(chǎn)生該事件。

(4)創(chuàng)建OkActionListener類,它必須實現(xiàn)ActionListener接口和接口中的actionPerformed()方法,在這個方法中獲取新的庫存商品價格,然后調(diào)用Dao類的updateKucunDj()方法更新庫存價格。關(guān)鍵代碼如下:

例程30 代碼位置:光盤\TM\01\JXCManager\src\internalFrame\JiaGeTiaoZheng.java

class OkActionListener implements ActionListener {

public void actionPerformed(final ActionEvent e) {

kcInfo.setDj(Double.valueOf(danJia.getText()));

kcInfo.setKcsl(Integer.valueOf(kuCunShuLiang.getText()));

int rs = Dao.updateKucunDj(kcInfo);

if (rs > 0)

JOptionPane.showMessageDialog(getContentPane(), "價格調(diào)整完畢。",

kcInfo.getSpname() + "價格調(diào)整",

JOptionPane.QUESTION_MESSAGE);

}

}

1.10.4 單元測試

在價格調(diào)整界面中輸入單價時,如果輸入“1l33”程序?qū)伋鯪umberFormatException異常,如圖1.31所示。這是因為輸入單價的數(shù)字格式不對,注意輸入值“1l33”的第二個“l(fā)”字符并不是數(shù)字,而是英文字母L的小寫形式,字母當(dāng)然不能用作數(shù)字,所以產(chǎn)生了這個錯誤,導(dǎo)致程序無法執(zhí)行價格調(diào)整。

解決這一問題的方法是在執(zhí)行價格調(diào)整之前,對輸入的單價進(jìn)行數(shù)字格式驗證??墒?,非要等操作員輸入單價之后,再驗證輸入單價的正確與否嗎?如果利用按鍵監(jiān)聽器,監(jiān)聽“單價”文本框中的每一次按鍵,當(dāng)按鍵是數(shù)字時,繼續(xù)接收輸入;反之,當(dāng)按鍵不是數(shù)字或小數(shù)點時(那它就應(yīng)該是字母或其他的什么,反正不是數(shù)字),就取消本次按鍵的輸入。這樣在用戶輸入時,就能夠有效地屏蔽非數(shù)字格式的輸入,這比之前的數(shù)字格式驗證更有效。關(guān)鍵代碼如下:

例程31  代碼位置:光盤\TM\01\JXCManager\src\internalFrame\JiaGeTiaoZheng.java

danJia.addKeyListener(new KeyAdapter() { //添加按鍵監(jiān)聽器

public void keyTyped(KeyEvent e) {

String numStr = "0123456789." + (char) 8; //數(shù)字格式的字符串,其中(char)8是回退鍵,用于刪除字符

if (numStr.indexOf(e.getKeyChar()) < 0) //如果按鍵字符不在數(shù)字格式字符串中

e.consume(); //銷毀按鍵對象

else //否則

updateJinE(); //更新庫存金額

}

});

 


上一章目錄下一章

Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號