最近工作需要,做一个邮件群发系统,功能实现邮件群发,右键删除全选等功能,大致设计如下:
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,"请选择一行");
}
}});