首页上一页 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编辑