主窗体代码如下:
package frame;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.List;
import javax.swing.table.DefaultTableModel;
import com.mr.contact.dao.Dao;
import com.mr.contact.dao.DaoFactory;
import com.mr.contact.swing.ContactFrame;
import com.mr.contact.swing.FixedTable;
import pojo.Customer;
public class Mainframe extends ContactFrame {
private Dao dao;
private FixedTable table;
private DefaultTableModel tableModle;
public Mainframe() {
setTitle("通讯录系统");
init();//组件初始化
validate();//重新加载组件
addAction();//调用组件监听方法
}
private void addAction() {
table.addMouseListener(new MouseAdapter() {//表格添加鼠标事件监听
public void mouseClicked(MouseEvent e) {//当鼠标单击时
if(e.getClickCount()==2) {//如果鼠标是双击事件
//获得选中行的第一列数据,赋值为id
String id =(String)table.getValueAt(table.getSelectedRow(), 0);
//获取此id的持久化客户信息对象
Customer cust = dao.selectCustomer(Integer.parseInt(id));
cust.setId(Integer.parseInt(id));//将id值转成int值并赋给客户对象
//打开详细信息展示窗体
ShowInfoFrame info = new ShowInfoFrame(cust, Mainframe.this);
info.setVisible(true);//窗体可见
}
}
});
}
protected void init() {
super.init();// 调用父类init()方法
dao = DaoFactory.getDao();// 实例化数据库接口
table = getTable(); // 创建指定表格模型的表格
table.setCellEditable(false);// 让表格不可编辑
initTable();// 初始化表格数据
}// init()结束
public void initTable() {
tableModle = getUsableModleSoure();// 获取所有有效客户信息
table.setModel(tableModle);// 客户信息表格加载数据模型
}
private DefaultTableModel getUsableModleSoure() {
List<Customer> usablelist = dao.selectUsableCustomer();// 获取所有有效客户
return assembledModleSource(usablelist);//返回所有有效客户表格数据模型
}
private DefaultTableModel assembledModleSource(List<Customer> usableList ) {
int customerCount = usableList.size();//获取集合的客户数量
String [] columnNames = {"编号","姓名","性别","出生日期","工作单位","职位","工作地点","家庭住址"};
//定义表格列名数组
String [] [] tableValues = new String[customerCount][8]; //创建表格数据数组
for(int i = 0;i<customerCount;i++) {//遍历表格所有行
Customer cust = usableList.get(i);//获取行用户对象
tableValues[i][0] = " "+cust.getId();//第一列为编号
tableValues[i][1] = " "+cust.getName();//第二列为名称
tableValues[i][2] = " "+cust.getSex();//第三列为性别
tableValues[i][3] = " "+cust.getBirth();//第四列为出生日期
tableValues[i][4] = " "+cust.getWork_unit();//第五列为公司名称
tableValues[i][5] = " "+cust.getRole();//第六列为职位
tableValues[i][6] = " "+cust.getWork_addr();//第七列为公司地址
tableValues[i][7] = " "+cust.getHome_addr();//第八列为家庭住址
}//for结束
DefaultTableModel tmp = new DefaultTableModel(tableValues, columnNames);
return tmp;
}
public static void main(String[] args) {
new Mainframe();
}
}