?? booklist.java
字號:
package library.book;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import library.hibernate.Books;
import library.main.HibernateUtil;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
/**
* 圖書信息一覽類
*
* @author lianhw
*
*/
public class BookList extends JFrame implements ActionListener {
Container container;
JPanel panel1, panel2, panel3;
JLabel bookNameLabel, authorLabel, pressLabel;
JTextField bookNameText, authorText, pressText;
JButton searchButton, exitButton;
JTable table = null;
DefaultTableModel defaultModel = null;
public BookList() {
super("書籍信息一覽!");
container = getContentPane();
container.setLayout(new BorderLayout());
//“名稱”標簽
bookNameLabel = new JLabel("名稱", JLabel.CENTER);
//“作者”標簽
authorLabel = new JLabel("作者", JLabel.CENTER);
//“出版社”標簽
pressLabel = new JLabel("出版社", JLabel.CENTER);
//輸入書名文本框
bookNameText = new JTextField(15);
//輸入作者姓名文本框
authorText = new JTextField(15);
//輸入出版社姓名文本框
pressText = new JTextField(15);
//“查詢”按鈕
searchButton = new JButton("查詢");
//為“查詢”按鈕增加事件監聽者
searchButton.addActionListener(this);
//“退出”按鈕
exitButton = new JButton("退出");
//為“退出”按鈕添加事件監聽者
exitButton.addActionListener(this);
panel1 = new JPanel();
panel3 = new JPanel();
panel1.add(bookNameLabel);
panel1.add(bookNameText);
panel1.add(authorLabel);
panel1.add(authorText);
panel3.add(pressLabel);
panel3.add(pressText);
panel3.add(searchButton);
panel3.add(exitButton);
//表格的列名
String[] name = { "書名", "出版社", "作者", "地址", "出版日期", "定價", "評論" };
String[][] data = new String[0][0];
defaultModel = new DefaultTableModel(data, name);
table = new JTable(defaultModel);
table.setPreferredScrollableViewportSize(new Dimension(400, 80));
JScrollPane s = new JScrollPane(table);
panel2 = new JPanel();
panel2.add(s);
container.add(panel1, BorderLayout.NORTH);
container.add(panel3, BorderLayout.CENTER);
container.add(panel2, BorderLayout.SOUTH);
}
/**
* 動作響應方法,從數據庫中查詢所有圖書信息
*
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
public void actionPerformed(ActionEvent action) {
if (action.getSource() == searchButton) {
String hql = " from Books";
String strSql = null;
if (bookNameText.getText().trim().equals("")
&& authorText.getText().trim().equals("")
&& pressText.getText().trim().equals("")) {
// 如果沒有查詢條件
strSql = hql;
} else if (bookNameText.getText().trim().equals("")
&& authorText.getText().trim().equals("")) {
// 按照出版社查詢書籍
strSql = hql + " where press='" + pressText.getText().trim()
+ "'";
} else if (bookNameText.getText().trim().equals("")
&& pressText.getText().trim().equals("")) {
// 按照作者姓名查詢書籍
strSql = hql + " where author='" + authorText.getText().trim()
+ "'";
} else if (authorText.getText().trim().equals("")
&& pressText.getText().trim().equals("")) {
// 按照書名查詢書籍
strSql = hql + " where bookName='"
+ bookNameText.getText().trim() + "'";
} else if (bookNameText.getText().trim().equals("")) {
// 按照作者和出版社兩個條件來查詢書籍
strSql = hql + " where author='" + authorText.getText().trim()
+ "'and press='" + pressText.getText().trim() + "'";
} else if (authorText.getText().trim().equals("")) {
// 按照書名和出版社兩個條件來查詢書籍
strSql = hql + " where bookName='"
+ bookNameText.getText().trim() + "'and press='"
+ pressText.getText().trim() + "'";
} else if (pressText.getText().trim().equals("")) {
// 按照書名和作者兩個條件來查詢書籍
strSql = hql + " where bookname='"
+ bookNameText.getText().trim() + "'and author='"
+ authorText.getText().trim() + "'";
} else {
// 按照書名、作者和出版社三個條件來查詢書籍
strSql = hql + " where bookname='"
+ bookNameText.getText().trim() + "'and author='"
+ authorText.getText().trim() + "'and press='"
+ pressText.getText().trim() + "'";
}
// 首先要刪除table中的數據
int rowCount = defaultModel.getRowCount() - 1;// 取得table中的數據行;
int j = rowCount;
for (int i = 0; i <= rowCount; i++) {
defaultModel.removeRow(j);// 刪除rowCount行的數據;
defaultModel.setRowCount(j);// 重新設置行數;
j = j - 1;
}
// 取得SessionFactory
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
// 打開session
Session session = sessionFactory.openSession();
// 創建一個事務
Transaction tx = session.beginTransaction();
// 執行查詢
Query userList = session.createQuery(strSql);
// 將查詢結果放置到一個list鏈表中
List list = userList.list();
for (int index = 0; index < list.size(); index++) {
Vector data = new Vector();
Books book = (Books) list.get(index);
data.addElement(book.getBookName());
data.addElement(book.getPress());
data.addElement(book.getAuthor());
data.addElement(book.getAddress());
data.addElement(book.getPressDate());
data.addElement(book.getPrice());
data.addElement(book.getCom());
defaultModel.addRow(data);
}
table.revalidate();
// 事務提交
tx.commit();
// 關閉session
session.close();
} else if (action.getSource() == exitButton) {
this.dispose();
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -