?? bookbackiframe.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.List;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.Timer;
import javax.swing.border.TitledBorder;
import javax.swing.table.DefaultTableModel;
import com.lishan.JComPz.MapPz;
import com.lishan.dao.Dao;
import com.lishan.model.Back;
import com.lishan.model.BookType;
import com.lishan.model.Operater;
import com.lishan.util.MyDocument;
public class BookBackIFrame extends JInternalFrame {// 還書控制面板
private Operater user = BookLoginIFrame.getUser();
private JTable table, tableByBookISBN; // 用來顯示和編輯規則的二維單元表
private JTextField operator; // 輸入操作人員
private JTextField todaydate; // 輸入歸還日期
private JTextField fkmoney; // 罰款金額
private JTextField ccdays; // 超出天數
private JTextField realdays; // 實際天數
private JTextField borrowdays; // 可以借閱天數
private JTextField borrowDate; // 結束日期
private JTextField readerISBN; // 讀者條形碼
private String[] columnNames = { "圖書名稱", "圖書條形碼", "圖書類別", "讀者姓名", "讀者條形碼",
"借書時間", "歸還時間", "ID" };
DefaultTableModel model = new DefaultTableModel();// 默認的表類型
DefaultTableModel modelBook = new DefaultTableModel();
SimpleDateFormat myfmt = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
private String bookISBNs = null;
private String readerISBNs = null;
private JTextField bookISBN;
private int id;
public final void add() { // 添加指定讀者借書信息到表格中
readerISBNs = readerISBN.getText().trim();
if (!"".equals(bookISBN.getText().trim())) {
List list = Dao.selectBookBackByBookISBN(bookISBN.getText()
.toString().trim());
for (int i = 0; i < list.size(); i++) {
Back back = (Back) list.get(i);
String str[] = new String[8];
str[0] = back.getBookName();
str[1] = back.getBookISBN();
str[2] = String.valueOf(MapPz.getMap().get(
back.getTypeId() + ""));
str[3] = back.getReaderName();
str[4] = back.getReaderISBN();
str[5] = back.getBorrowDate();
str[6] = back.getBackDate();
str[7] = back.getId() + "";
modelBook.addRow(str);
}
} else if (!"".equals(readerISBNs)) {
List list = Dao.selectBookBack(readerISBNs);
if (list.size() == 0) {
JOptionPane.showMessageDialog(null, "編號為" + readerISBNs
+ "的讀者,沒有借書記錄");
return;
}
for (int i = 0; i < list.size(); i++) {
Back back = (Back) list.get(i);
// id = back.getId();
String str[] = new String[8];
str[0] = back.getBookName();
str[1] = back.getBookISBN();
str[2] = String.valueOf(MapPz.getMap().get(
back.getTypeId() + ""));
str[3] = back.getReaderName();
str[4] = back.getReaderISBN();
str[5] = back.getBorrowDate();
str[6] = back.getBackDate();
str[7] = back.getId() + "";
model.addRow(str);
}
}
}
/**
* Create the frame
*/
public BookBackIFrame() {
super();
setIconifiable(true); // 設置窗體可最小化---必須
setClosable(true); // 設置窗體可關閉---必須
setTitle("圖書歸還管理");
setBounds(100, 100, 550, 480);
final JTabbedPane tabbedPane = new JTabbedPane();
tabbedPane.setPreferredSize(new Dimension(0, 60));
getContentPane().add(tabbedPane);
final JPanel panel_totle1 = new JPanel();
panel_totle1.setLayout(new BorderLayout());
tabbedPane.addTab("輸入學生編號", null, panel_totle1, null);
final JPanel panel = new JPanel();
// 在指定位置以指定對齊方式顯示字符串標題的邊框
panel.setBorder(new TitledBorder(null, "基本信息",
TitledBorder.DEFAULT_JUSTIFICATION,
TitledBorder.DEFAULT_POSITION, null, null));
panel.setPreferredSize(new Dimension(0, 200));
panel_totle1.add(panel, BorderLayout.NORTH);
final JPanel panel_5 = new JPanel();
final GridLayout gridLayout_1 = new GridLayout(0, 2);
gridLayout_1.setVgap(5); // 設置垂直間隙
panel_5.setLayout(gridLayout_1);
panel_5.setPreferredSize(new Dimension(400, 20));
panel.add(panel_5);
final JLabel label_4 = new JLabel();
label_4.setText("讀者編號:");
panel_5.add(label_4);
readerISBN = new JTextField();
readerISBN.setDocument(new MyDocument(13));
readerISBN.addKeyListener(new readerISBNListenerlostFocus()); // 注冊鍵盤對象監聽事件
panel_5.add(readerISBN);
final JPanel panel_4 = new JPanel();
panel_4.setLayout(new FlowLayout());
panel_4.setPreferredSize(new Dimension(450, 130));
panel.add(panel_4);
final JScrollPane scrollPane = new JScrollPane();
scrollPane.setPreferredSize(new Dimension(450, 120));
panel_4.add(scrollPane);
table = new JTable();
scrollPane.setViewportView(table);
model.setColumnIdentifiers(columnNames);
table.setModel(model);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
table.addMouseListener(new TableListener()); // 注冊鼠標對象監聽事件
final JPanel panel_1 = new JPanel();
panel_1.setLayout(new BorderLayout());
panel_totle1.add(panel_1);
final JPanel panel_2 = new JPanel();
final GridLayout gridLayout_2 = new GridLayout(0, 2);
gridLayout_2.setVgap(20);
panel_2.setLayout(gridLayout_2);
panel_2.setBorder(new TitledBorder(null, "罰款信息",
TitledBorder.DEFAULT_JUSTIFICATION,
TitledBorder.DEFAULT_POSITION, null, null));
panel_2.setPreferredSize(new Dimension(250, 230));
panel_1.add(panel_2, BorderLayout.WEST);
final JLabel label_11 = new JLabel("借書日期:");
panel_2.add(label_11);
borrowDate = new JTextField();
borrowDate.setEditable(false);// 設置為不可編輯的
panel_2.add(borrowDate);
final JLabel label_12 = new JLabel("規定天數:");
panel_2.add(label_12);
borrowdays = new JTextField();
borrowdays.setEditable(false);
panel_2.add(borrowdays);
final JLabel label_13 = new JLabel("實際天數:");
panel_2.add(label_13);
realdays = new JTextField();
realdays.setEditable(false);
panel_2.add(realdays);
final JLabel label_14 = new JLabel("超出天數:");
panel_2.add(label_14);
ccdays = new JTextField();
ccdays.setEditable(false);
panel_2.add(ccdays);
final JLabel label_15 = new JLabel("罰款金額:");
panel_2.add(label_15);
fkmoney = new JTextField();
fkmoney.setEditable(false);
panel_2.add(fkmoney);
final JPanel panel_3 = new JPanel();
panel_3.setBorder(new TitledBorder(null, "系統信息",
TitledBorder.DEFAULT_JUSTIFICATION,
TitledBorder.DEFAULT_POSITION, null, null));
panel_3.setPreferredSize(new Dimension(280, 230));
panel_1.add(panel_3);
final JPanel panel_7 = new JPanel();
final GridLayout gridLayout_3 = new GridLayout(0, 2);
gridLayout_3.setVgap(35);
panel_7.setLayout(gridLayout_3);
panel_7.setPreferredSize(new Dimension(260, 90));
panel_3.add(panel_7);
final JLabel label_10_1 = new JLabel("當前時間:");
panel_7.add(label_10_1);
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_1 = new JLabel("操作員:");
panel_7.add(label_11_1);
operator = new JTextField(user.getName());
operator.setEditable(false);
panel_7.add(operator);
final JButton buttonback = new JButton("圖書歸還");
buttonback.addActionListener(new BookBackActionListener(model));
panel_3.add(buttonback);
final JButton buttonExit = new JButton();
buttonExit.setText("退出");
buttonExit.addActionListener(new CloseActionListener());
panel_3.add(buttonExit);
setVisible(true);
//
final JPanel panel_totle2 = new JPanel();
panel_totle2.setLayout(new BorderLayout());
tabbedPane.addTab("輸入圖書編號", null, panel_totle2, null);
final JPanel panel_2_1 = new JPanel();
panel_2_1.setBorder(new TitledBorder(null, "相關圖書信息",
TitledBorder.DEFAULT_JUSTIFICATION,
TitledBorder.DEFAULT_POSITION, null, null));
panel_2_1.setPreferredSize(new Dimension(250, 230));
panel_totle2.add(panel_2_1);
final JLabel label = new JLabel("圖書編號 ");
panel_2_1.add(label);
bookISBN = new JTextField(20);
bookISBN.setDocument(new MyDocument(20));
bookISBN.addKeyListener(new bookISBNListener());
panel_2_1.add(bookISBN);
final JScrollPane scrollPaneBook = new JScrollPane();
scrollPaneBook.setPreferredSize(new Dimension(500, 250));
panel_2_1.add(scrollPaneBook);
tableByBookISBN = new JTable();
scrollPaneBook.setViewportView(tableByBookISBN);
modelBook.setColumnIdentifiers(columnNames);
tableByBookISBN.setModel(modelBook);
tableByBookISBN.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
final JPanel panel_2_2 = new JPanel();
JButton buttonbookback = new JButton("圖書歸還");
JButton buttonbookexit = new JButton("退出");
buttonbookexit.addActionListener(new CloseActionListener());
panel_2_2.add(buttonbookback);
panel_2_2.add(buttonbookexit);
panel_totle2.add(panel_2_2, BorderLayout.SOUTH);
}
class readerISBNListenerlostFocus extends KeyAdapter {
public void keyTyped(KeyEvent e) {
if (e.getKeyChar() == '\n') {// 判斷在文本框是否輸入回車
int rowCount = table.getRowCount();
// System.out.println("selRow = " + rowCount);
if (rowCount != 0) {
for (int i = rowCount - 1; i >= 0; i--) {
// System.out.println("remove i = " + i);
model.removeRow(i);
}
}
add(); // 添加該讀者借書信息到table中
}
}
}
class bookISBNListener extends KeyAdapter {
public void keyTyped(KeyEvent e) {
if (e.getKeyChar() == '\n') {
add();
}
}
}
class TableListener extends MouseAdapter {
public void mouseClicked(final MouseEvent e) {
java.util.Date date = new java.util.Date(); // 當前時間
String fk = "";
String days1 = "";
int selRow = table.getSelectedRow(); // 獲取選中表格中借書記錄的行數
List list = Dao.selectBookTypeFk(table.getValueAt(selRow, 2)
.toString().trim()); // 取得各類書的罰款金額
for (int i = 0; i < list.size(); i++) {
BookType booktype = (BookType) list.get(i);
fk = booktype.getFakuan(); // 取出圖書類型的罰款金額
days1 = booktype.getDays();// 可借天數
}
borrowDate.setText(table.getValueAt(selRow, 5).toString().trim());
int days2, days3;// days2實際借閱天數 days3超出借閱天數
borrowdays.setText(days1 + "");
// 計算實際借閱時間 = 當前時間 - 時間借閱時間
days2 = date.getDate()
- java.sql.Timestamp.valueOf(
table.getValueAt(selRow, 5).toString().trim())
.getDate();
//System.out.println("table.getValueAt(selRow, 5).toString().trim()是"+table.getValueAt(selRow, 5).toString().trim());
realdays.setText(days2 + "");
// 計算超出借閱多少天 = 實際借閱天數 - 可借閱天數
days3 = days2 - Integer.parseInt(days1);
if (days3 > 0) {
ccdays.setText(days3 + "");
Double zfk = Double.valueOf(fk) * days3;
fkmoney.setText(zfk + "元");
} else {
ccdays.setText("沒有超過規定天數");
fkmoney.setText("0");
}
bookISBNs = table.getValueAt(selRow, 1).toString().trim();
id = new Integer(table.getValueAt(selRow, 7).toString().trim());
}
}
class TimeActionListener implements ActionListener {
public TimeActionListener() {
Timer t = new Timer(1000, this);// 創建一個每1000毫秒將通知其偵聽器的 Timer
t.start();// 啟動該 Timer,以使它開始向其偵聽器發送操作事件。
}
public void actionPerformed(ActionEvent e) {
todaydate.setText(myfmt.format(new java.util.Date()).toString());
}
}
class BookBackActionListener implements ActionListener { // 添加圖書歸還按鈕的事件監聽器
private final DefaultTableModel model;
public BookBackActionListener(DefaultTableModel model) {
this.model = model;
}
public void actionPerformed(ActionEvent e) {
// 自動生成方法存根
if (readerISBNs == null) {
JOptionPane.showMessageDialog(null, "請輸入讀者編號!");
} else {
// System.out.print(bookISBNs == null);
if (table.getSelectedRow() == -1) {
JOptionPane.showMessageDialog(null, "請選擇要歸還的圖書");
return;
}
int i = Dao.updateBookBack(bookISBNs, readerISBNs, id);
System.out.println("i = " + i);
if (i == 1) {
int j = Dao.updateReaderBackBook(readerISBNs);
System.out.println("j = " + j);
if (j == 1) {
int selectedRow = table.getSelectedRow();
model.removeRow(selectedRow);
JOptionPane.showMessageDialog(null, "還書操作完成!");
} else {
Dao.updateBookBackRollBack(bookISBNs, readerISBNs, id);
JOptionPane.showMessageDialog(null,
"圖書歸還失敗!請重新登入!在進行操作!");
}
} else {
JOptionPane.showMessageDialog(null, "圖書歸還失敗!請重新登入!在進行操作!");
}
}
}
}
class CloseActionListener implements ActionListener { // 添加關閉按鈕的事件監聽器
public void actionPerformed(ActionEvent e) {
doDefaultCloseAction();
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -