最近工作需要,做一个邮件群发系统,功能实现邮件群发,右键删除全选等功能,大致设计如下:
smtp设置窗口:
发送页面:
导入功能设计:
final JButton importButton = new JButton("导入地址"); importButton.addActionListener(new ActionListener(){ //添加事件 public void actionPerformed(ActionEvent e){ //TODO 读取excel文件,写入list JFileChooser fc=new JFileChooser(); int i=fc.showOpenDialog(scrollPane); if(i==JFileChooser.APPROVE_OPTION){ File file=fc.getSelectedFile(); if(file.toString().endsWith("xls")){ String URL=file.getPath(); try{ List<List<String>> list = ExcelCommonUtil.readExcelCommon(file.toString(),true); if(list==null || list.size()==0){ JOptionPane.showMessageDialog(null,"电子表格内容为空!"); return; } int listLength = list.size(); String [][] tableVales= new String[listLength][list.get(0).size()]; //数据 for(int j = 0; j < listLength;j++){ if(list.get(j).size()>0){ String id = OperateProperties.genId(); //tableVales[j][1]=list.get(j).get(excelCloumnId); tableVales[j][1]=id; if(list.get(j).size()>1){ tableVales[j][2]=list.get(j).get(excelCloumnEmail); }else{ tableVales[j][2]= ""; } } int rowCount = table.getRowCount() +1; //行数加上1 Object[] temp = {String.valueOf(rowCount),tableVales[j][1],tableVales[j][2],true,INITSTATUS}; tableModel.addRow(temp); } table.updateUI(); }catch(Exception e1){ e1.printStackTrace(); JOptionPane.showMessageDialog(null,"读取电子表格文件异常!"); } }else{ JOptionPane.showMessageDialog(null,"必须是excel2003电子表格文件!"); } } } }); panel.add(importButton);
编辑发送功能:
大致功能就这些。
final JButton sendButton = new JButton("编辑发送"); sendButton.addActionListener(new ActionListener(){ //添加事件 public void actionPerformed(ActionEvent e){ username = OperateProperties.ReadProperties(filename, "username"); password = OperateProperties.ReadProperties(filename, "password"); smtp = OperateProperties.ReadProperties(filename, "smtp"); String excelCloumn = OperateProperties.ReadProperties(filename, "excelCloumnEmail"); excelCloumnEmail = Integer.parseInt(excelCloumn); if(table.getRowCount()==0){ JOptionPane.showMessageDialog(null,"电子邮件地址为空!"); return; } //TODO 获取复选框值 tempList 供调用 for(int i = 0;i<table.getRowCount();i++){ if((Boolean)tableModel.getValueAt(i,3)){ int key = i; String value = (String)tableModel.getValueAt(i, 2); tempMap.put(key, value); } } if(tempMap.size()<=0){ JOptionPane.showMessageDialog(null,"请选择要发送的邮件地址!"); return; } new Message(); title = Message.getEmailCap(); content = Message.getContent(); fujian = Message.getFujian(); color = new String[table.getRowCount()]; if(title!=null&& content!=null){ buttonActionPerformed(e); } Message.setEmailCap(null); Message.setContent(null); Message.setFujian(null); } }); panel.add(sendButton);
关键代码:
1.右键功能:
声明邮件菜单:
private JPopupMenu popupMenu;
初始化邮件菜单内容:
//右键 popupMenu = new JPopupMenu(); del = new JMenuItem("删除"); slectAll = new JMenuItem("全选"); popupMenu.add(del); popupMenu.add(slectAll);
添加事件:
//删除事件 del.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int selectedRow = table.getSelectedRow();//获得选中行的索引 if(selectedRow!=-1) //存在选中行 { String id = (String) tableModel.getValueAt(selectedRow, 0); String genId = (String) tableModel.getValueAt(selectedRow, 1); String email = (String) tableModel.getValueAt(selectedRow, 2); boolean select = (Boolean) tableModel.getValueAt(selectedRow, 3); String status = (String) tableModel.getValueAt(selectedRow, 4); Object[] temp = {id,genId,email,select,status}; tableModel.removeRow(temp); //删除行 //强制刷新界面 table.updateUI(); }else{ JOptionPane.showMessageDialog(null,"请选择一行"); } }});