📄 mailsendui.java
字号:
package mail.ui;import java.awt.Color;import java.awt.FileDialog;import java.awt.Rectangle;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.io.File;import java.util.LinkedList;import javax.swing.BorderFactory;import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.UIManager;import mail.control.send.EmailSend;import mail.message.MailMessage;public class MailSendUI extends JFrame implements ActionListener, ItemListener{ JLabel labDestination = new JLabel(); JTextField tfDest = new JTextField(); JTextField tfCopySend = new JTextField(); JLabel labCopySend = new JLabel(); JTextField tfSubject = new JTextField(); JLabel labSubject = new JLabel(); JTextArea taMail = new JTextArea(); JScrollPane jspMail = new JScrollPane(taMail); JButton bAttach = new JButton(); JPanel listAttach = new JPanel(); JScrollPane jspAttach = new JScrollPane(listAttach); JButton bSend = new JButton(); JButton bCancel = new JButton(); private int attachSize = 0; /** * 邮件客户端 */ private MailClientUI mailClient; private MailMessage nowMailItem = null; public MailSendUI(MailClientUI mailClient) { initUI(); this.mailClient = mailClient; } private void initUI() { this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JFrame.setDefaultLookAndFeelDecorated(true); labDestination.setBorder(BorderFactory.createLineBorder(Color.black)); labDestination.setToolTipText(""); labDestination.setText(" 收信人地址"); labDestination.setBounds(new Rectangle(28, 32, 100, 28)); this.getContentPane().setLayout(null); tfDest.setBorder(BorderFactory.createLineBorder(Color.black)); tfDest.setBounds(new Rectangle(136, 32, 440, 28)); tfCopySend.setBorder(BorderFactory.createLineBorder(Color.black)); tfCopySend.setBounds(new Rectangle(136, 74, 440, 28)); labCopySend.setBounds(new Rectangle(28, 74, 100, 28)); labCopySend.setBorder(BorderFactory.createLineBorder(Color.black)); labCopySend.setText(" 抄送"); tfSubject.setBorder(BorderFactory.createLineBorder(Color.black)); tfSubject.setBounds(new Rectangle(136, 113, 440, 28)); labSubject.setBounds(new Rectangle(28, 113, 100, 28)); labSubject.setBorder(BorderFactory.createLineBorder(Color.black)); labSubject.setText(" 主题"); taMail.setBounds(new Rectangle(25, 249, 560, 247)); jspMail.setBounds(new Rectangle(25, 249, 560, 247)); jspMail.setBorder(BorderFactory.createLineBorder(Color.black)); bAttach.setBorder(BorderFactory.createLineBorder(Color.black)); bAttach.setText("添加附件"); bAttach.setBounds(new Rectangle(486, 181, 85, 32)); jspAttach.setBorder(BorderFactory.createLineBorder(Color.black)); listAttach.setBounds(new Rectangle(27, 159, 448, 80)); jspAttach.setBounds(new Rectangle(27, 159, 448, 80)); bSend.setBackground(UIManager.getColor("ComboBox.selectionForeground")); bSend.setBorder(BorderFactory.createLineBorder(Color.black)); bSend.setText("发送"); bSend.setBounds(new Rectangle(177, 506, 95, 38)); bCancel.setBounds(new Rectangle(324, 506, 95, 38)); bCancel.setBackground(UIManager .getColor("ComboBox.selectionForeground")); bCancel.setBorder(BorderFactory.createLineBorder(Color.black)); bCancel.setText("放弃"); this.getContentPane().setBackground(Color.lightGray); this.setResizable(false); this.getContentPane().add(tfDest, null); this.getContentPane().add(jspAttach, null); this.getContentPane().add(jspMail, null); this.getContentPane().add(bAttach, null); this.getContentPane().add(bSend, null); this.getContentPane().add(bCancel, null); this.getContentPane().add(labDestination, null); this.getContentPane().add(tfCopySend, null); this.getContentPane().add(labCopySend, null); this.getContentPane().add(tfSubject, null); this.getContentPane().add(labSubject, null); listAttach.setLayout(null); this.bAttach.addActionListener(this); this.bCancel.addActionListener(this); this.bSend.addActionListener(this); this.setSize(620, 580); this.setLocation(100, 5); this.setTitle("发送邮件窗口"); } public static void main(String[] args) { new MailSendUI(new MailClientUI()).setVisible(true); } public void actionPerformed(ActionEvent e) { if (e.getSource().equals(this.bAttach)) { addAttach(); } else if (e.getSource().equals(this.bCancel)) { cancel(); } else if (e.getSource().equals(this.bSend)) { send(); } } public void newMail() { this.tfCopySend.setText(""); this.tfDest.setText(""); this.tfSubject.setText(""); this.taMail.setText(""); this.setVisible(true); this.attachSize = 0; this.tfDest.setFocusable(true); } /** * 添加附件 */ private void addAttach() { if (attachSize == 4) { JOptionPane.showMessageDialog(this, "您最多只能设置4个附件"); return; } FileDialog fd = new FileDialog(this, "打开文件", FileDialog.LOAD); fd.setVisible(true); if ((fd.getDirectory() != null) && (fd.getFile() != null)) { try { File file1 = new File(fd.getDirectory(), fd.getFile()); JCheckBox jcb = new JCheckBox(file1.toString()); jcb.setBounds(new Rectangle(20, attachSize * 18, 400, 18)); jcb.setSelected(true); jcb.addItemListener(this); listAttach.add(jcb, null); attachSize++; } catch (Exception e) { e.printStackTrace(); } } fd = null; } /** * 发送邮件 */ private void send() { if (checkSendMail() == 1) { sendEmail(); } } /** * 发送邮件代码实现 */ private void sendEmail() { try { EmailSend emailSend = new EmailSend(); emailSend.setFrom(mailClient.getEmailName()); emailSend.setTo(this.tfDest.getText()); emailSend.setCc(this.tfCopySend.getText()); emailSend.setSubject(this.tfSubject.getText()); emailSend.setContent(this.taMail.getText()); int endIndex = mailClient.getEmailName().indexOf("@"); emailSend.setUser(mailClient.getEmailName().substring(0, endIndex)); emailSend.setPassword(mailClient.getEmailPsw()); emailSend.setMailhost(mailClient.getSmtpServer()); emailSend.prepareSend(); for (int i = 0; i < attachSize; i++) { JCheckBox jcb = (JCheckBox) listAttach.getComponent(i); emailSend.addAttach(jcb.getText()); } emailSend.send(); info("目的地址为" + tfDest.getText() + "的邮件已被成功发送"); } catch (Exception e) { error("目的地址为" + tfDest.getText() + "的邮件发送失败,错误原因如下:" + e.getMessage()); e.printStackTrace(); } } /** * 转发邮件 * * @param item */ public void TSendMailMessage(MailMessage item) { nowMailItem = item; tfDest.setText(""); tfSubject.setText(item.getSubject()); taMail.setText(item.getContent()); attachSize = 0; listAttach.removeAll(); LinkedList list = item.getAttachList(); if (item.isFlag() == true && list != null) { for (int i = 0; i < list.size(); i++) { File nowdir = new File(".").getAbsoluteFile(); String dirString = nowdir.toString(); String subs = dirString.substring(0, dirString.length() - 1); File tempDir = new File(subs + "info/enclosure/"); File filename = new File(tempDir, (String) list.get(i)); JCheckBox jcb = new JCheckBox(filename.toString()); jcb.setBounds(new Rectangle(20, attachSize * 18, 400, 18)); jcb.setSelected(true); jcb.addItemListener(this); listAttach.add(jcb, null); attachSize++; } } listAttach.updateUI(); this.setVisible(true); } /** * 回复邮件 * * @param item */ public void replyMailMessage(MailMessage item) { nowMailItem = item; attachSize = 0; listAttach.removeAll(); this.tfDest.setText(item.getFrom()); this.tfSubject.setText("回复:" + item.getSubject()); this.taMail.setText("\r\n\r\n\r\n您在给我的信中写到:\r\n" + item.getContent()); this.taMail.setFocusable(true); this.setVisible(true); } /** * 检查设置 */ private int checkSendMail() { if (this.tfDest.getText().trim().equals("")) { error("发送邮件错误:您必须输入收信人地址"); return 0; } if (this.tfDest.getText().trim().indexOf("@") < 0) { error("发送邮件错误:您必须输入正确的收信人地址"); return 0; } if (this.taMail.getText().trim().equals("")) { error("发送邮件错误:您必须输入邮件正文信息"); return 0; } return 1; } /** * 显示信息 * * @param errorInfo */ private synchronized void info(String info) { mailClient.log(info); JOptionPane.showMessageDialog(this, info); } /** * 显示错误信息 * * @param errorInfo */ private synchronized void error(String errorInfo) { mailClient.errorLog(errorInfo); JOptionPane.showMessageDialog(this, errorInfo); } public void itemStateChanged(ItemEvent e) { for (int i = 0; i < attachSize; i++) { JCheckBox jcb = (JCheckBox) listAttach.getComponent(i); if (jcb.isSelected() == false) { listAttach.remove(i); attachSize--; break; } } for (int i = 0; i < attachSize; i++) { JCheckBox jcb = (JCheckBox) listAttach.getComponent(i); jcb.setBounds(new Rectangle(20, i * 18, 400, 18)); } listAttach.updateUI(); } /** * 取消 */ private void cancel() { this.setVisible(false); mailClient.getReceiveUI().setVisible(true); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -