package 通讯录;
import java.awt.*;
import java.awt.event.*;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
public class MyAddressBook extends JFrame implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 1L;
private Map<String, String> PersonInfo;
public static Vector<Vector<String>> info = new Vector<Vector<String>>();
private JLabel keyLab;
private JButton searchBtn, createBtn, updateBtn, deleteBtn;
public static JTable infoTable;
private JTextField keyText;
public static Vector<String> column;
public MyAddressBook() {
PersonInfo = new HashMap<String, String>();
Font font = new Font(Font.DIALOG, Font.PLAIN, 14);
ImageIcon searchImage = new ImageIcon("image/search.png");
searchImage.setImage(searchImage.getImage().getScaledInstance(20, 20, Image.SCALE_AREA_AVERAGING));
ImageIcon createImage = new ImageIcon("image/create.png");
createImage.setImage(createImage.getImage().getScaledInstance(20, 20, Image.SCALE_AREA_AVERAGING));
ImageIcon updateImage = new ImageIcon("image/update.png");
updateImage.setImage(updateImage.getImage().getScaledInstance(20, 20, Image.SCALE_AREA_AVERAGING));
ImageIcon deleteImage = new ImageIcon("image/delete.png");
deleteImage.setImage(deleteImage.getImage().getScaledInstance(20, 20, Image.SCALE_AREA_AVERAGING));
JPanel pNorth = new JPanel();
pNorth.setLayout(new FlowLayout(FlowLayout.RIGHT));
keyLab = new JLabel("关键字:");
keyText = new JTextField(10);
searchBtn = new JButton("搜索", searchImage);
createBtn = new JButton("新增", createImage);
updateBtn = new JButton("修改", updateImage);
deleteBtn = new JButton("删除", deleteImage);
keyLab.setFont(font);
searchBtn.setFont(font);
searchBtn.addActionListener(this);
createBtn.setFont(font);
createBtn.addActionListener(this);
updateBtn.setFont(font);
updateBtn.addActionListener(this);
deleteBtn.setFont(font);
deleteBtn.addActionListener(this);
pNorth.add(keyLab);
pNorth.add(keyText);
pNorth.add(searchBtn);
// pNorth.add(createBtn);
// pNorth.add(updateBtn);
// pNorth.add(deleteBtn);
JPanel pSouth = new JPanel();
pSouth.add(createBtn);
pSouth.add(updateBtn);
pSouth.add(deleteBtn);
column = new Vector<String>();
column.add("编号");
column.add("姓名");
column.add("性别");
column.add("电话");
column.add("地址");
column.add("生日");
flashInfo();
infoTable = new JTable(info, column);
TableColumn column1 = infoTable.getColumnModel().getColumn(0);
column1.setMaxWidth(40);
column1.setMinWidth(40);
TableColumn column3 = infoTable.getColumnModel().getColumn(2);
column3.setMaxWidth(40);
column3.setMinWidth(40);
JScrollPane pCenter = new JScrollPane(infoTable);
this.add(pNorth, "North");
this.add(pCenter, "Center");
this.add(pSouth, "South");
this.setTitle("通讯录");
this.setSize(600, 450);
this.setVisible(true);
this.setLocationRelativeTo(null);
this.setResizable(false);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
protected static void flashInfo() {
DBConn dbconn = new DBConn();
Statement stmt = null;
ResultSet rs = null;
info.clear();
try {
stmt = dbconn.getConnection().createStatement();
rs = stmt.executeQuery("select * from my_address_book");
while (rs.next()) {
Vector<String> row = new Vector<String>();
row.add(rs.getString(1));
row.add(rs.getString(2));
row.add(rs.getString(3));
row.add(rs.getString(4));
row.add(rs.getString(5));
row.add(rs.getString(6));
info.add(row);
}
rs.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (stmt != null) {
stmt.close();
}
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
int rowNum = infoTable.getSelectedRow();
if (rowNum != -1) {
PersonInfo = new HashMap<String, String>();
PersonInfo.put("id", (String) infoTable.getValueAt(rowNum, 0));
PersonInfo.put("name", (String) infoTable.getValueAt(rowNum, 1));
PersonInfo.put("sex", (String) infoTable.getValueAt(rowNum, 2));
PersonInfo.put("telephone", (String) infoTable.getValueAt(rowNum, 3));
PersonInfo.put("address", (String) infoTable.getValueAt(rowNum, 4));
PersonInfo.put("birthday", (String) infoTable.getValueAt(rowNum, 5));
}
if (e.getSource() == searchBtn) {
String keyStr = keyText.getText();
if (keyStr.isEmpty()) {
return;
} else {
searchInfo(keyStr);
}
} else if (e.getSource() == createBtn) {
MyDialog InsertPane = new MyDialog("新建联系人", new HashMap<String, String>());
InsertPane.setVisible(true);
} else if (e.getSource() == updateBtn) {
if (rowNum == -1) {
JOptionPane.showMessageDialog(null, "请选择联系人");
return;
}
MyDialog UpdatePane = new MyDialog("修改联系人", PersonInfo);
UpdatePane.setVisible(true);
} else if (e.getSource() == deleteBtn) {
if (rowNum == -1) {
JOptionPane.showMessageDialog(null, "请选择联系人");
return;
}
MyDialog DeletePane = new MyDialog("删除联系人", PersonInfo);
DeletePane.setVisible(true);
}
}
protected void searchInfo(String key) {
DBConn dbconn = new DBConn();
Statement stmt = null;
ResultSet rs = null;
try {
stmt = dbconn.getConnection().createStatement();
String sql = "select * from my_address_book where name like'%" + key + "%'";
rs = stmt.executeQuery(sql);
info.clear();
while (rs.next()) {
Vector<String> row = new Vector<String>();
row.add(rs.getString(1));
row.add(rs.getString(2));
row.add(rs.getString(3));
row.add(rs.getString(4));
row.add(rs.getString(5));
row.add(rs.getString(6));
info.add(row);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (stmt != null) {
stmt.close();
}
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
DefaultTableModel model = new DefaultTableModel(MyAddressBook.info, MyAddressBook.column);
MyAddressBook.infoTable.setModel(model);
TableColumn column1 = MyAddressBook.infoTable.getColumnModel().getColumn(0);
column1.setMaxWidth(40);
column1.setMinWidth(40);
TableColumn column3 = MyAddressBook.infoTable.getColumnModel().getColumn(2);
column3.setMaxWidth(40);
column3.setMinWidth(40);
}
}
public static void main(String[] args) {
new MyAddressBook();
}
}