首页上一页 1 下一页尾页 2 条记录 1/1页
老师好,我在练习[通讯录系统]时,做到106页的2.2.6 给主窗体表格添加双击事件 时按照书本添加了鼠标双击监听
组件代码,但是运行后双击鼠标,没有弹出窗口,不知道怎么回事?检查了很多遍代码,没有错误,谢谢您
package frame;
import com.mr.contact.swing.ContactFrame;
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.FixedTable;
import pojo.Customer;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
/*
* 主窗体
*/
public class MainFrame extends ContactFrame// 继承ContactFrame类
{
private Dao dao; // 数据库接口
private FixedTable table; // 通讯录表格
private DefaultTableModel tableModel; // 定义表格模型对象模型
/*
* 构造方法
*/
public MainFrame() {
setTitle("通讯录系统"); // 窗体标题
init(); // 组件初始化
validate(); // 重新加载组件
addAction(); // 调用“开启组件监听”
}// MainFrame方法结束
/**
* 添加组件监听
*/
private void addAction() {
table.addMouseListener(new MouseAdapter()// 表格添加鼠标事件监听
{
public void mouseClicked(MouseEvent e)// 当鼠标点击时
{
if (e.getClickCount() == 2)// 2代表鼠标双击,如果是双击事件
{
// 获得选中的第一列数据,赋值为ID
String id = (String) table.getValueAt(table.getSelectedRow(), 0);//0表示我选中的行的第一列
// 获取此ID的持久化客户信息对象
Customer cust = dao.selectCustomer(Integer.parseInt(id));
cust.setId(Integer.parseInt(id)); // 将ID值转成int值并赋给客户对象
// 打开详细信息展示窗体
ShowInfoFrame info = new ShowInfoFrame(cust, MainFrame.this);
//info.add(info);
info.setVisible(true); // 显示窗体
//info.setSize(400,400);
//info.setDefaultCloseOperation(EXIT_ON_CLOSE);
} // if结束
} // mouseClicked()结束
}); // addMouseListener()结束
} // addAction()结束
/*
* 组件初始化
*/
protected void init() {
super.init(); // 调用父类init()方法
dao = DaoFactory.getDao(); // 实例化数据库接口
table = getTable(); // 创建指定表格模型的表格
table.setCellEditable(false); // 设置表格不可编辑
initTable(); // 初始化表格数据
}
/*
* 初始化表格数据
*/
public void initTable() {
tableModel = getUsableModleSoure(); // 获取所有有效客户信息
table.setModel(tableModel); // 客户信息表格加载数据模型
} // initTable()结束了
/**
* 查询所有有效客户信息
*
* @param 表格数据模型
*/
private DefaultTableModel getUsableModleSoure() {
List<Customer> usableList = dao.selectUsableCustomer(); // 获取所有有效客户
return assembledModleSoure(usableList); // 返回所有有效客户表格数据模型
} // getUsableModelSource()结束了
/**
* 根据不同的客户集合获取相应的表格数据模型
*
* @param usableList - 客户集合
* @return表格数据模型
*/
private DefaultTableModel assembledModleSoure(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;
} // assembledModleSoure()结束
/*
* 主方法
*/
public static void main(String[] args)
{
new MainFrame(); // 将主窗体实例化
}
}
于2021-03-17 13:01:58编辑

购物车
发表新帖
立即签到









