📄 mailreceiveui.java
字号:
package mail.ui;import java.awt.Color;import java.awt.Rectangle;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.LinkedList;import javax.swing.BorderFactory;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import mail.control.receive.EmailReceive;import mail.message.MailMessage;public class MailReceiveUI extends JFrame implements ActionListener{ JPanel panelList = new JPanel(); JScrollPane jspList=new JScrollPane(panelList); JButton bReceive = new JButton(); JButton bWriteNew = new JButton(); JButton bSetting = new JButton(); /** * 邮件客户端 */ private MailClientUI mailClient; /** * 保存邮件的链表 */ LinkedList emailList=null; public MailReceiveUI(MailClientUI mailClient) { initUI(); this.mailClient = mailClient; } private void initUI() { this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JFrame.setDefaultLookAndFeelDecorated(true); this.getContentPane().setBackground(Color.lightGray); this.getContentPane().setLayout(null); panelList.setBackground(Color.white); panelList.setBounds(new Rectangle(20, 15, 585, 420)); jspList.setBounds(new Rectangle(25, 15, 580, 420)); jspList.setBorder(BorderFactory.createLineBorder(Color.black)); bReceive.setBackground(Color.white); bReceive.setBorder(BorderFactory.createLineBorder(Color.black)); bReceive.setText("接收邮件"); bReceive.setBounds(new Rectangle(150, 450, 100, 31)); bWriteNew.setBackground(Color.white); bWriteNew.setBorder(BorderFactory.createLineBorder(Color.black)); bWriteNew.setText("撰写新邮件"); bWriteNew.setBounds(new Rectangle(265, 450, 100, 31)); bSetting.setBackground(Color.white); bSetting.setBorder(BorderFactory.createLineBorder(Color.black)); bSetting.setText("设置帐户"); bSetting.setBounds(new Rectangle(380, 450, 100, 31)); this.getContentPane().add(jspList, null); this.getContentPane().add(bReceive, null); this.getContentPane().add(bSetting, null); this.getContentPane().add(bWriteNew, null); panelList.setLayout(null); this.bReceive.addActionListener(this); this.bSetting.addActionListener(this); this.bWriteNew.addActionListener(this); this.setSize(630,530); this.setLocation(80,10); this.setTitle("接收邮件窗口"); } public static void main(String[] args) { new MailReceiveUI(new MailClientUI()).setVisible(true); } public void actionPerformed(ActionEvent e) { if(e.getSource().equals(this.bReceive)) { receive(); } else if(e.getSource().equals(this.bSetting)) { setting(); } else if(e.getSource().equals(this.bWriteNew)) { writeNew(); }else { MailButton mailB=(MailButton)e.getSource(); doReadOrReplyOrTSend(mailB.getType(),mailB.getIndex()); } } /** * 接受邮件 * */ private void receive() { emailList=null; EmailReceive receiveEmail=new EmailReceive(); receiveEmail.setPopServer(mailClient.getPop3Server()); receiveEmail.setPopPassword(mailClient.getEmailPsw()); int endIndex=mailClient.getEmailName().indexOf("@"); receiveEmail.setPopUser(mailClient.getEmailName().substring(0,endIndex)); receiveEmail.receive(); emailList=receiveEmail.getEmailList(); displayMail();//显示 } /** * 显示邮件 * */ private void displayMail() { if(emailList==null) { error("您没有读取邮件,无法显示"); } panelList.removeAll();//删除所有控件 for(int i=0;i<emailList.size();i++) { MailMessage item=(MailMessage)emailList.get(i); JLabel labIndex=new JLabel(i+":"); labIndex.setBounds(new Rectangle(0, 5+30*i, 15, 25)); JLabel labFrom=new JLabel(item.getFrom()); labFrom.setBounds(new Rectangle(20, 5+30*i, 150, 25)); JLabel labSubject=new JLabel(item.getSubject()); labSubject.setBounds(new Rectangle(180, 5+30*i, 200, 25)); MailButton bRead=new MailButton("阅读"); bRead.setBounds(new Rectangle(390, 5+30*i, 60, 25)); bRead.setIndex(i); bRead.setType(0); MailButton bReply=new MailButton("回复"); bReply.setBounds(new Rectangle(455, 5+30*i, 60, 25)); bReply.setIndex(i); bReply.setType(1); MailButton bTSend=new MailButton("转发"); bTSend.setBounds(new Rectangle(520, 5+30*i, 60, 25)); bTSend.setIndex(i); bTSend.setType(2); bRead.addActionListener(this); bReply.addActionListener(this); bTSend.addActionListener(this); panelList.add(labIndex); panelList.add(labFrom); panelList.add(labSubject); panelList.add(bRead); panelList.add(bReply); panelList.add(bTSend); } panelList.updateUI(); info("您接收了:"+emailList.size()+"封邮件"); } /** * 设置帐户信息 * */ private void setting() { this.setVisible(false); mailClient.getAccountUI().setVisible(true); } /** * 撰写新邮件 * */ private void writeNew() { this.setVisible(false); mailClient.getSendUI().newMail(); } /** * 读邮件或回复或转发 * type:类型 * index;编号 */ private void doReadOrReplyOrTSend(int type,int index) { switch(type) { case 0: { readMail(index); break; } case 1: { replyMail(index); break; } case 2: { TSendMail(index); break; } } } /** * 读邮件 * */ private void readMail(int index) { MailMessage item=(MailMessage)emailList.get(index); mailClient.getDisplayUI().displayMailMessage(item); } /** * 回复邮件 * */ private void replyMail(int index) { MailMessage item=(MailMessage)emailList.get(index); mailClient.getSendUI().replyMailMessage(item); } /** * 转发邮件 * */ private void TSendMail(int index) { MailMessage item=(MailMessage)emailList.get(index); mailClient.getSendUI().TSendMailMessage(item); } /** * 显示信息 * * @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); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -