?? bookborrowiframe.java
字號:
package com.lishan.iframe;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.swing.Timer;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import com.lishan.JComPz.MapPz;
import com.lishan.dao.Dao;
import com.lishan.iframe.ReaderModiAndDelIFrame.TableListener;
import com.lishan.model.BookInfo;
import com.lishan.model.BookType;
import com.lishan.model.Operater;
import com.lishan.model.Reader;
import com.lishan.util.MyDocument;
public class BookBorrowIFrame extends JInternalFrame {
private Operater user = BookLoginIFrame.getUser();// 操作人員
private final JTextField operator;
private JTextField todaydate;
private JTable table;
private JTextField price;
private JTextField bookType;
private JTextField bookName;
private JTextField bookISBN;
private JTextField keepMoney;
private JTextField number;// 讀者可借數量
private JTextField readerName;
private JTextField readerISBN;
private List readerlist, booklist;
private String[] columnNames = { "書籍編號", "借書日期", "應還日期", "讀者編號" };
private Map map = MapPz.getMap();
private int secTableRow;
DefaultTableModel model = new DefaultTableModel();
SimpleDateFormat myfmt = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
public final void add() { // 把借書信息添加到table中
String str[] = new String[4];
str[0] = bookISBN.getText().trim();// 存放圖書編號
str[1] = String.valueOf(myfmt.format(new java.util.Date()));// 存放借出日期
str[2] = getBackTime().toLocaleString();// 存放歸還日期
str[3] = readerISBN.getText().trim();// 存放讀者編號
model.addRow(str);
}
public Date getBackTime() { // 取還書時間
String days = "0";
List list2 = Dao.selectBookCategory(bookType.getText().trim());
for (int j = 0; j < list2.size(); j++) {
BookType type = (BookType) list2.get(j);
days = type.getDays(); // 取出該類圖書可借天數
}
java.util.Date date = new java.util.Date(); // 當前時間
date.setDate(date.getDate() + Integer.parseInt(days));// 歸還日期 = 當前時間 + 可借日期
return date;
}
/**
* create the frame
*/
public BookBorrowIFrame() {
super();
System.out.println(user.getName());
setTitle("圖書借閱管理");
setIconifiable(true); // 設置窗體可最小化---必須
setClosable(true); // 設置窗體可關閉---必須
setBounds(100, 100, 500, 375);
final JPanel panel = new JPanel();
getContentPane().add(panel);
final JScrollPane scrollPane = new JScrollPane();
scrollPane.setPreferredSize(new Dimension(400, 100));
panel.add(scrollPane);
table = new JTable();
scrollPane.setViewportView(table);
model.setColumnIdentifiers(columnNames);
table.setModel(model);
final JPanel panel_1 = new JPanel();
panel_1.setPreferredSize(new Dimension(0, 120));
getContentPane().add(panel_1, BorderLayout.NORTH);
final JSplitPane splitPane = new JSplitPane();// 用于分隔兩個Component
panel_1.add(splitPane);
final JPanel panel_3 = new JPanel();// 顯示讀者信息的面板
panel_3.setPreferredSize(new Dimension(240, 110));
splitPane.setLeftComponent(panel_3);
final JPanel panel_5 = new JPanel();
final GridLayout gridLayout = new GridLayout(0, 2);
gridLayout.setHgap(2); // 設置水平間距
gridLayout.setVgap(10);// 設置垂直間距
panel_5.setLayout(gridLayout);
panel_5.setPreferredSize(new Dimension(150, 100));
panel_3.add(panel_5);
final JLabel label = new JLabel();
label.setText("讀者編號:");
panel_5.add(label);
readerISBN = new JTextField(15);
readerISBN.setDocument(new MyDocument(13));
readerISBN.addKeyListener(new ISBNListenerlostFocus());// 注冊在文本框輸入事件監聽對象,用于在panel_5面板中顯示讀者信息
panel_5.add(readerISBN);
final JLabel label_1 = new JLabel();
label_1.setText("讀者姓名:");
panel_5.add(label_1);
readerName = new JTextField();
readerName.setEditable(false);
panel_5.add(readerName);
final JLabel label_2 = new JLabel();
label_2.setText("可借數量:");
panel_5.add(label_2);
number = new JTextField();
number.setEditable(false);
panel_5.add(number);
final JLabel label_4 = new JLabel();
label_4.setText("押 金:");
panel_5.add(label_4);
keepMoney = new JTextField();
keepMoney.setEditable(false);
panel_5.add(keepMoney);
// Icon icon = new ImageIcon("1.gif");
final JPanel panel_4 = new JPanel();// 用于顯示書籍信息
final GridLayout gridLayout_1 = new GridLayout(0, 2);
gridLayout_1.setVgap(10);
panel_4.setLayout(gridLayout_1);
panel_4.setPreferredSize(new Dimension(240, 110));
splitPane.setRightComponent(panel_4);
final JLabel label_5 = new JLabel();
label_5.setText("書籍編號:");
panel_4.add(label_5);
bookISBN = new JTextField();
bookISBN.setEditable(false);
bookISBN.setDocument(new MyDocument(13));
bookISBN.addKeyListener(new bookISBNListenerlostFocus());// 注冊在文本框輸入事件監聽對象,用于在panel_4面板中顯示讀者信息
panel_4.add(bookISBN);
final JLabel label_6 = new JLabel();
label_6.setText("書籍名稱:");
panel_4.add(label_6);
bookName = new JTextField();
bookName.setEditable(false);
panel_4.add(bookName);
final JLabel label_7 = new JLabel();
label_7.setText("書籍類別:");
panel_4.add(label_7);
bookType = new JTextField();
bookType.setEditable(false);
panel_4.add(bookType);
final JLabel label_8 = new JLabel();
label_8.setText("書籍價格:");
panel_4.add(label_8);
price = new JTextField();
price.setEditable(false);
panel_4.add(price);
final JPanel panel_2 = new JPanel();
panel_2.setPreferredSize(new Dimension(0, 100));
getContentPane().add(panel_2, BorderLayout.SOUTH);
final JPanel panel_7 = new JPanel();
final GridLayout gridLayout_2 = new GridLayout(0, 2);
gridLayout_2.setVgap(10);
panel_7.setLayout(gridLayout_2);
panel_7.setPreferredSize(new Dimension(280, 50));
panel_2.add(panel_7);
final JLabel label_9 = new JLabel();
label_9.setText("當前時間:");
panel_7.add(label_9);
todaydate = new JTextField();
todaydate.setEditable(false);
todaydate.setPreferredSize(new Dimension(0, 0));
todaydate.addActionListener(new TimeActionListener());// 注冊顯示當前時間事件監聽對象
todaydate.setFocusable(false);
panel_7.add(todaydate);
final JLabel label_11 = new JLabel();
label_11.setText("操作員:");
panel_7.add(label_11);
operator = new JTextField(user.getName());
operator.setEditable(false);
panel_7.add(operator);
final JPanel panel_8 = new JPanel();
panel_8.setLayout(new FlowLayout());
panel_8.setPreferredSize(new Dimension(200, 60));
panel_2.add(panel_8);
final JButton buttonBorrow = new JButton();
buttonBorrow.setText("借出當前圖書");
buttonBorrow.addActionListener(new BorrowActionListener());// 注冊借書按鈕事件監聽對象
panel_8.add(buttonBorrow);
final JButton buttonClear = new JButton();
buttonClear.setText("清除記錄");
buttonClear.addActionListener(new ClearActionListener(model));// 注冊清除按鈕事件監聽對象
panel_8.add(buttonClear);
setVisible(true);
//
}
class ISBNListenerlostFocus extends KeyAdapter {
public void keyTyped(KeyEvent e) {
if (e.getKeyChar() == '\n') {// 判斷文本款是否輸入回車鍵
String ISBNs = readerISBN.getText().trim();
readerlist = Dao.selectReader(ISBNs);
if (readerlist.isEmpty() && !ISBNs.isEmpty()) {
JOptionPane.showMessageDialog(null,
"此讀者編號沒有注冊,查詢輸入讀者編號是否有誤!");
return;
}
for (int i = 0; i < readerlist.size(); i++) {
bookISBN.setEditable(true);
Reader reader = (Reader) readerlist.get(i);
readerName.setText(reader.getName());
number.setText(reader.getRemainBorrowNum());
keepMoney.setText(reader.getKeepMoney() + "");
// System.out.println("讀者可借書量為" + number.getText().trim());
}
if (readerISBN.getText().trim().length() == 0) {
JOptionPane.showMessageDialog(null, "輸入讀者條形碼!");
}
}
}
}
class bookISBNListenerlostFocus extends KeyAdapter {
public void keyTyped(KeyEvent e) {
if (e.getKeyChar() == '\n') {// 判斷在文本框是否輸入回車
if (readerISBN.getText().trim().length() != 0
&& bookISBN.getText().trim().length() != 0) {// 判斷讀者文本框和圖書文本框是否為空
String ISBNs = bookISBN.getText().trim();
booklist = Dao.selectBookInfo(ISBNs);// 存放圖書信息集合
for (int i = 0; i < booklist.size(); i++) {// 把圖書信息顯示到文本框中
BookInfo book = (BookInfo) booklist.get(i);
bookName.setText(book.getBookname());
bookType.setText(String.valueOf(map.get(book
.getTypeid())));
price.setText(String.valueOf(book.getPrice()));
}
String days = "0";
List list2 = Dao.selectBookCategory(bookType.getText()
.trim());// 存放圖書類型集合
for (int j = 0; j < list2.size(); j++) {
BookType type = (BookType) list2.get(j);
days = type.getDays(); // 取出該種類型的書籍可借天數
}
String readerISBNs = readerISBN.getText().trim();
if (!readerISBNs.isEmpty() && readerlist.isEmpty()) {// 如果readerISBNs文本框輸入不為空,并且數據庫中不存在該readerISBN
JOptionPane.showMessageDialog(null,
"此讀者編號沒有注冊,查詢輸入讀者編號是否有誤!");
} else if (booklist.isEmpty() && !ISBNs.isEmpty()) {// 如果數據庫中編號為ISBN的圖書為空,并且ISBNs文本框輸入不為空
JOptionPane.showMessageDialog(null,
"本圖書館沒有此書,查詢輸入圖書編號是否有誤!");
} else if (Integer.parseInt(number.getText().trim()) <= 0) {
bookISBN.setEditable(false);
JOptionPane.showMessageDialog(null, "借書量已經超過最大借書量!");
} else {
add();
number.setText(String.valueOf(Integer.parseInt(number
.getText().trim()) - 1));
}
} else if (readerISBN.getText().trim().length() != 0
&& bookISBN.getText().trim().length() == 0) {
JOptionPane.showMessageDialog(null, "輸入圖書條形碼!");
return;
} else if (readerISBN.getText().trim().length() == 0) {
JOptionPane.showMessageDialog(null, "輸入讀者條形碼!");
}
}
}
}
class TimeActionListener implements ActionListener {
public TimeActionListener() {
Timer t = new Timer(1000, this);
t.start();
}
public void actionPerformed(ActionEvent e) {
todaydate.setText(myfmt.format(new java.util.Date()).toString());
}
}
class BorrowActionListener implements ActionListener {// 完成借書功能
public void actionPerformed(ActionEvent e) {
String bookISBNs = bookISBN.getText().trim();
String readerISBNs = readerISBN.getText().trim();
String bookNames = bookName.getText().trim();
String operatorId = user.getId();
// String num = table.getRowCount() + "";
String borrowDate = myfmt.format(new java.util.Date());
String backDate = myfmt.format(getBackTime());
int i = 0, j = 0;
// System.out.println(borrowDate);
// System.out.println(java.sql.Timestamp.valueOf(backDate));
if (bookISBNs.length() != 0 || readerISBNs.length() != 0) {
for (int count = 0; count < table.getRowCount(); count++) {
String bookISBNtemp = table.getValueAt(count, 0).toString()
.trim();
i = Dao.InserBookBorrow(bookISBNtemp, readerISBNs,
operatorId, java.sql.Timestamp.valueOf(borrowDate),
java.sql.Timestamp.valueOf(backDate));// 將借書信息插入到借書表中
}
j = Dao.updateReaderBorrowBook(number.getText().trim(), readerISBNs);
if (i == 1 && j == 1) {
JOptionPane.showMessageDialog(null, "圖書借閱完成");
doDefaultCloseAction();
}
} else {
JOptionPane.showMessageDialog(null, "輸入讀者條形碼和圖書條形碼!");
}
}
}
class ClearActionListener implements ActionListener {// 完成清除所有記錄功能
private final DefaultTableModel model;
ClearActionListener(DefaultTableModel model) {
this.model = model;
}
public void actionPerformed(ActionEvent e) {
System.out.println(table.getRowCount());
if (table.getRowCount() != 0) {
int selRow = table.getSelectedRow();
model.removeRow(selRow);
number.setText(Integer.parseInt(number.getText().trim()) + 1
+ "");
bookISBN.setEditable(true);
if (table.getRowCount() == 0) {
bookISBN.setText("");
bookType.setText("");
bookName.setText("");
price.setText("");
readerISBN.setText("");
readerName.setText("");
number.setText("");
keepMoney.setText("");
}
} else {
JOptionPane.showMessageDialog(null, "表格中暫時沒有數據,請進行借閱操作");
}
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -