📄 mailtree.java~66~
字号:
package mailofjava;import javax.swing.*;import java.awt.*;import java.util.*;import javax.swing.JTree;import javax.swing.tree.*;import javax.mail.*;import javax.activation.*;import java.util.EventObject.*;import javax.swing.event.*;/** 用于演示邮件文件夹的树形显示*/public class MailTree extends JFrame{ private int mailCount=0; MessageWrapper[] mw; private JLabel jl = new JLabel("初始化状态"); private JEditorPane je = new JEditorPane(); public MailTree() { Container ct; ct=this.getContentPane() ; ct.setLayout(new BorderLayout()) ;//布局 CreateMessage cm=new CreateMessage(0);//readonly mode Message[] mymessages = cm.getMessage() ;//取得数据 mailCount=mymessages.length ;//多少邮件 mw = new MessageWrapper[mailCount];//开一个邮件数组类 for(int i=0;i<mailCount;i++) { mw[i]= new MessageWrapper(mymessages[i]);//全部装入封装类 mw[i].getMailContent() ; mw[i].getAttachMent() ; } run(); } public void run(){ DefaultMutableTreeNode top = new DefaultMutableTreeNode("曾海的邮件根目录"); createNodes(top); final JTree tree = new JTree(top); tree.getSelectionModel().setSelectionMode (TreeSelectionModel.SINGLE_TREE_SELECTION);//一次选一个哦//Listen for when the selection changes.tree.addTreeSelectionListener(new TreeSelectionListener() { public void valueChanged(TreeSelectionEvent e) { DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();//取得当前选择 if (node == null) return;//没有选中什么破东西。 Object nodeInfo = node.getUserObject();//取结点 if(nodeInfo instanceof String) { jl.setText((String) nodeInfo ); je.setText((String) nodeInfo ); } if( (node.isLeaf())&& (nodeInfo instanceof MessageWrapper )){ MessageWrapper book = (MessageWrapper )nodeInfo; je.setText(book.toString() ); jl.setText(book.getMail() ); } else { je.setText("当前不是叶结点" ); } }}); JScrollPane treeView = new JScrollPane(tree); this.getContentPane().add(treeView,BorderLayout.CENTER );//顶部的东西 JPanel jp1 =new JPanel(); jp1.setLayout(new FlowLayout()); JButton jb=new JButton("附件列表"); jp1.add(jb); jp1.add(jl); this.getContentPane().add(jp1,BorderLayout.EAST ); je.setText("文字在这里"); JScrollPane jsp = new JScrollPane(je); this.getContentPane().add(jsp,BorderLayout.SOUTH ); }//runprivate void createNodes(DefaultMutableTreeNode top) {//top是根,然后。。。 DefaultMutableTreeNode category = null;//分支结占 DefaultMutableTreeNode book = null;//叶结点 category = new DefaultMutableTreeNode( "收件箱"); for(int k=0;k<mailCount;k++){ book = new DefaultMutableTreeNode(mw[k]); category.add(book); } top.add(category);//第一层结束 category = new DefaultMutableTreeNode("垃圾箱"); top.add(category); book = new DefaultMutableTreeNode("你好!中国出口"); category.add(book); book = new DefaultMutableTreeNode("天知道,垃圾邮件"); category.add(book); } public static void main(String[] args) { MailTree mailTree1 = new MailTree(); mailTree1.setTitle("这是邮件树演示"); mailTree1.setSize(new Dimension(800,600)); mailTree1.setVisible(true) ; mailTree1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ); mailTree1.show() ; }}class MessageWrapper{ private Message msga; Stack attachmentList= new Stack();//存放附件名 Stack attachmentTypeList = new Stack();//附件类型 private String mailBody=""; public MessageWrapper(Message aa){ msga=aa; }//constructor public String toString(){ try{ Address addr[] = msga.getFrom(); String myaddr= addr[0].toString() ; return "来自"+myaddr+"主题"+msga.getSubject() ; }catch(Exception e){ System.err.println("取邮件头失败"); e.printStackTrace();return("失败"); }; } public String getMailContent(){ try{ if( msga.isMimeType("text/plain") )//纯文本直接返回字串 return (String) msga.getContent(); if( msga.isMimeType("multipart/*") ) { Multipart mp= (Multipart) msga.getContent() ; int mpCount=mp.getCount() ; for(int h=0;h<mpCount;h++){ Part pt = mp.getBodyPart(h) ; this.attachmentList.push(pt.getFileName() ); this.attachmentTypeList.push(pt.getContentType() ); }//for return "多部份邮件,请看附件表"; }//if multipart else return "类型不定"; }catch(Exception e){ e.printStackTrace(); return "取邮件意外" ;}; }//get mail content public String getMail() { return mailBody; } public String getAttachMent(){ String body=""; while(! this.attachmentList.isEmpty() ) { body+= (String) this.attachmentList.pop(); body+="=="+(String) this.attachmentTypeList.pop(); }//不空 mailBody=body; return body; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -