正文

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

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


(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");

}

}

}


上一章目錄下一章

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