(2)編寫initTable()方法,該方法用于初始化商品表格的表頭、列編輯器等。設(shè)置表格中第一列的編輯器使用下拉列表框樣式的編輯器,通過該編輯器選擇商品的名稱,其他的商品信息將自動(dòng)填充。關(guān)鍵代碼如下:
例程22 代碼位置:光盤\TM\01\JXCManager\src\internalFrame\JinHuoDan.java
private void initTable() { //初始化表格
String[] columnNames = {"商品名稱", "商品編號(hào)", "產(chǎn)地", "單位", "規(guī)格", "包裝", "單價(jià)",
"數(shù)量", "批號(hào)", "批準(zhǔn)文號(hào)"};
((DefaultTableModel) table.getModel())
.setColumnIdentifiers(columnNames); //設(shè)置表格的表頭
TableColumn column = table.getColumnModel().getColumn(0); //獲取表格第一列
final DefaultCellEditor editor = new DefaultCellEditor(sp); //創(chuàng)建表格列編輯器
editor.setClickCountToStart(2);
column.setCellEditor(editor);
}
(3)編寫initSpBox()方法,該方法用于初始化表格中的商品下拉列表框。它首先調(diào)用Dao類的query()方法獲取指定供應(yīng)商所提供的所有商品信息,然后將這些商品信息封裝成商品對(duì)象,并把這些對(duì)象添加到商品下拉列表框中。關(guān)鍵代碼如下:
例程23 代碼位置:光盤\TM\01\JXCManager\src\internalFrame\JinHuoDan.java
private void initSpBox() { //初始化商品下拉列表框
List list = new ArrayList();
ResultSet set = Dao.query("select * from tb_spinfo where gysName='"
+ gys.getSelectedItem() + "'"); //調(diào)用query()方法
sp.removeAllItems();
sp.addItem(new TbSpinfo());
for (int i = 0; table != null && i < table.getRowCount(); i++) {
TbSpinfo tmpInfo = (TbSpinfo) table.getValueAt(i, 0);
if (tmpInfo != null && tmpInfo.getId() != null)
list.add(tmpInfo.getId());
}
try {
while (set.next()) {
TbSpinfo spinfo = new TbSpinfo(); //創(chuàng)建商品對(duì)象
spinfo.setId(set.getString("id").trim()); //初始化商品對(duì)象
//如果表格中已存在同樣商品,商品下拉列表框中就不再包含該商品
if (list.contains(spinfo.getId()))
continue;
spinfo.setSpname(set.getString("spname").trim()); //封裝商品信息
spinfo.setCd(set.getString("cd").trim());
spinfo.setJc(set.getString("jc").trim());
spinfo.setDw(set.getString("dw").trim());
spinfo.setGg(set.getString("gg").trim());
spinfo.setBz(set.getString("bz").trim());
spinfo.setPh(set.getString("ph").trim());
spinfo.setPzwh(set.getString("pzwh").trim());
spinfo.setMemo(set.getString("memo").trim());
spinfo.setGysname(set.getString("gysname").trim());
sp.addItem(spinfo); //將商品對(duì)象添加到下拉列表框
}
} catch (SQLException e) {
e.printStackTrace();
}
}
代碼貼士
setSpname ():該方法用于設(shè)置商品實(shí)體類的商品名稱。
setCd ():該方法用于設(shè)置商品實(shí)體類的商品產(chǎn)地。
setJc ():該方法用于設(shè)置商品實(shí)體類的商品簡稱。
setDw ():該方法用于設(shè)置商品實(shí)體類的商品單位。
setGg ():該方法用于設(shè)置商品實(shí)體類的商品規(guī)格。
setBz ():該方法用于設(shè)置商品實(shí)體類的商品包裝。
setPh ():該方法用于設(shè)置商品實(shí)體類的商品批號(hào)。
setPzwh ():該方法用于設(shè)置商品實(shí)體類的商品批準(zhǔn)文號(hào)。
setMemo ():該方法用于設(shè)置商品實(shí)體類的商品簡介信息。
setGysname ():該方法用于設(shè)置商品實(shí)體類的供應(yīng)商名稱。
(4)編寫“入庫”按鈕的事件監(jiān)聽器RkActionListener類,該類必須實(shí)現(xiàn)ActionListener接口和接口中的actionPerformed()方法,并在actionPerformed()方法中獲取界面中的商品表格數(shù)據(jù),然后將這些數(shù)據(jù)封裝到進(jìn)貨數(shù)據(jù)表的實(shí)體對(duì)象中,最后調(diào)用Dao類的insertRukuInfo()方法在事務(wù)中保存進(jìn)貨單數(shù)據(jù)。關(guān)鍵代碼如下:
例程24 代碼位置:光盤\TM\01\JXCManager\src\internalFrame\JinHuoDan.java
class RkActionListener implements ActionListener { //“入庫”按鈕的事件監(jiān)聽器
public void actionPerformed(ActionEvent e) {
stopTableCellEditing(); //結(jié)束表格中沒有編寫的單元
clearEmptyRow(); //清除空行
String hpzsStr = hpzs.getText(); //貨品總數(shù)
String pzsStr = pzs.getText(); //品種數(shù)
String jeStr = hjje.getText(); //合計(jì)金額
String jsfsStr = jsfs.getSelectedItem().toString(); //結(jié)算方式
String jsrStr = jsr.getText().trim(); //經(jīng)手人
String czyStr = czy.getText(); //操作人員
String rkDate = jhsjDate.toLocaleString(); //入庫時(shí)間
String ysjlStr = ysjl.getText().trim(); //驗(yàn)收結(jié)論
String id = piaoHao.getText(); //票號(hào)
String gysName = gys.getSelectedItem().toString(); //供應(yīng)商名稱
if (jsrStr == null || jsrStr.isEmpty()) {
JOptionPane.showMessageDialog(JinHuoDan.this, "請(qǐng)?zhí)顚懡?jīng)手人");
return;
}
if (ysjlStr == null || ysjlStr.isEmpty()) {
JOptionPane.showMessageDialog(JinHuoDan.this, "添寫驗(yàn)收結(jié)論");
return;
}
if (table.getRowCount() <= 0) {
JOptionPane.showMessageDialog(JinHuoDan.this, "添加入庫商品");
return;
}
TbRukuMain ruMain = new TbRukuMain(id, pzsStr, jeStr, ysjlStr,
gysName, rkDate, czyStr, jsrStr, jsfsStr); //創(chuàng)建入庫主表實(shí)體對(duì)象
Set<TbRukuDetail> set = ruMain.getTabRukuDetails(); //獲取入庫主表的詳細(xì)表集合
int rows = table.getRowCount();
for (int i = 0; i < rows; i++) {
TbSpinfo spinfo = (TbSpinfo) table.getValueAt(i, 0); //獲取商品對(duì)象
String djStr = (String) table.getValueAt(i, 6); //獲取商品的單價(jià)
String slStr = (String) table.getValueAt(i, 7); //獲取商品的數(shù)量
Double dj = Double.valueOf(djStr);
Integer sl = Integer.valueOf(slStr);
TbRukuDetail detail = new TbRukuDetail(); //創(chuàng)建商品詳細(xì)表實(shí)體對(duì)象
detail.setTabSpinfo(spinfo.getId()); //初始化商品詳細(xì)表對(duì)象
detail.setTabRukuMain(ruMain.getRkId());
detail.setDj(dj);
detail.setSl(sl);
set.add(detail);
}
boolean rs = Dao.insertRukuInfo(ruMain); //調(diào)用insertRukuInfo()方法保存進(jìn)貨單
if (rs) {
JOptionPane.showMessageDialog(JinHuoDan.this, "入庫完成");
DefaultTableModel dftm = new DefaultTableModel();
table.setModel(dftm);
initTable();
pzs.setText("0");
hpzs.setText("0");
hjje.setText("0");
}
}
}