1.7.2 基礎(chǔ)信息模塊技術(shù)分析
基礎(chǔ)信息模塊中使用了Java Swing的JTabbedPane選項(xiàng)卡面板組件分別為客戶信息管理、商品信息管理和供應(yīng)商信息管理提供了多個操作界面,例如供應(yīng)商信息管理中分別存在供應(yīng)商添加和供應(yīng)商修改與刪除界面,而這兩個界面都存在于一個窗體中,可以通過選擇頂部的兩個選項(xiàng)卡,在不同的界面間來回切換。
1.7.3 供應(yīng)商添加實(shí)現(xiàn)過程
供應(yīng)商添加使用的數(shù)據(jù)表:tb_gysinfo。
(1)創(chuàng)建GysTianJiaPanel類,用于實(shí)現(xiàn)本系統(tǒng)的供應(yīng)商添加功能。該類將在界面中顯示多個用于輸入供應(yīng)商信息的文本框。界面中定義的主要控件如表1.6所示。
(2)創(chuàng)建ResetActionListener類,該類是“重填”按鈕的事件監(jiān)聽器,它必須實(shí)現(xiàn)ActionListener接口,并在actionPerformed()方法中清除界面中的所有文本框內(nèi)容。關(guān)鍵代碼如下:
例程16 代碼位置:光盤\TM\01\JXCManager\src\internalFrame\gysGuanLi\GysTianJiaPanel.java
u class ResetActionListener implements ActionListener { //“重填”按鈕的事件監(jiān)聽類
v public void actionPerformed(
w final ActionEvent e) {
diZhiF.setText(""); //將文本框中的內(nèi)容設(shè)置為空字符串
bianMaF.setText("");
chuanZhenF.setText("");
jianChengF.setText("");
lianXiRenF.setText("");
lianXiRenDianHuaF.setText("");
EMailF.setText("");
quanChengF.setText("");
dianHuaF.setText("");
yinHangF.setText("");
}
}
U 代碼貼士
u ActionListener接口:該接口是控件的動作監(jiān)聽器接口,實(shí)現(xiàn)該接口的類可以成為按鈕和菜單項(xiàng)等控件的監(jiān)聽器。
v actionPerformed():該方法是監(jiān)聽器ActionListener接口定義的方法,當(dāng)事件產(chǎn)生時,將調(diào)用監(jiān)聽器實(shí)現(xiàn)類的actionPerformed()方法處理相應(yīng)的業(yè)務(wù)邏輯。
w ActionEvent:該類是動作事件類,當(dāng)用戶單擊按鈕時,將產(chǎn)生該事件,這個事件會被監(jiān)聽器捕獲并執(zhí)行相應(yīng)的業(yè)務(wù)邏輯。
(3)創(chuàng)建TjActionListener類,該類是“添加”按鈕的事件監(jiān)聽器,它必須實(shí)現(xiàn)ActionListener接口,并在actionPerformed()方法中實(shí)現(xiàn)用戶輸入的驗(yàn)證和供應(yīng)商信息的保存。關(guān)鍵代碼如下:
例程17 代碼位置:光盤\TM\01\JXCManager\src\internalFrame\gysGuanLi\GysTianJiaPanel.java
class TjActionListener implements ActionListener { //“添加”按鈕的事件監(jiān)聽類
public void actionPerformed(final ActionEvent e) {
if (diZhiF.getText().equals("") || quanChengF.getText().equals("") //驗(yàn)證用戶輸入
|| chuanZhenF.getText().equals("")|| jianChengF.getText().equals("")
|| yinHangF.getText().equals("")|| bianMaF.getText().equals("")
|| diZhiF.getText().equals("")|| lianXiRenF.getText().equals("")
|| lianXiRenDianHuaF.getText().equals("")
|| EMailF.getText().equals("")|| dianHuaF.getText().equals("")) {
JOptionPane.showMessageDialog(GysTianJiaPanel.this, "請?zhí)顚懭啃畔?);
return;
}
try { //驗(yàn)證是否存在同名供應(yīng)商
ResultSet haveUser = Dao.query("select * from tb_gysinfo where name='"
+ quanChengF.getText().trim() + "'");
if (haveUser.next()) {
JOptionPane.showMessageDialog(GysTianJiaPanel.this,
"供應(yīng)商信息添加失敗,存在同名供應(yīng)商", "供應(yīng)商添加信息",
JOptionPane.INFORMATION_MESSAGE);
return;
}
ResultSet set = Dao.query("select max(id) from tb_gysinfo"); //獲取供應(yīng)商的最大 ID 編號
String id = null;
if (set != null && set.next()) { //創(chuàng)建新的供應(yīng)商編號
String sid = set.getString(1).trim();
if (sid == null)
id = "gys1001";
else {
String str = sid.substring(3);
id = "gys" + (Integer.parseInt(str) + 1);
}
}
TbGysinfo gysInfo = new TbGysinfo(); //創(chuàng)建供應(yīng)商實(shí)體對象
gysInfo.setId(id); //初始化供應(yīng)商對象
gysInfo.setAddress(diZhiF.getText().trim());
gysInfo.setBianma(bianMaF.getText().trim());
gysInfo.setFax(chuanZhenF.getText().trim());
gysInfo.setYh(yinHangF.getText().trim());
gysInfo.setJc(jianChengF.getText().trim());
gysInfo.setName(quanChengF.getText().trim());
gysInfo.setLian(lianXiRenF.getText().trim());
gysInfo.setLtel(lianXiRenDianHuaF.getText().trim());
gysInfo.setMail(EMailF.getText().trim());
gysInfo.setTel(dianHuaF.getText().trim());
Dao.addGys(gysInfo); //調(diào)用addGys()方法存儲供應(yīng)商
JOptionPane.showMessageDialog(GysTianJiaPanel.this, "已成功添加客戶",
"客戶添加信息", JOptionPane.INFORMATION_MESSAGE);
resetButton.doClick(); //觸發(fā)“重填”按鈕的單擊動作
} catch (SQLException e1) {
e1.printStackTrace();
}
}
}