编程思路
首先我们设计一个邮件发送程序的交互界面,界面中包括用户输入邮件的收件人、发信人和主题组件的单行文本框,书写邮件内容的多行文本框等。然后为了能够实现E-mail的发送和设置,我们设计一个SmtpMail类,它封装了与邮件服务器之间的Socket 通信操作,以及SMTP 命令的发送和响应信息的接收。
编程技巧说明
1.设置窗体和组件
我们设计了一个MailSendFrame()类继承Frame 对象,作为容纳组件的主窗体。Main()函数实现将窗体启动时置于屏幕的正中央,窗口定义代码如下:
public static void main(String[] args) { mailSendFrame mailSendFrame = new mailSendFrame(); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = mailSendFrame.getSize(); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; } mailSendFrame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); mailSendFrame.setVisible(true); mailSendFrame.show(); } | 在Main()函数中,首先利用代表系统信息的Toolkit对象得到当前系统中设置的屏幕分辨率,并且用分辨率和窗体的大小作比较,然后,调用MailSendFrame的SetLocation()方法设置窗体的左上角坐标,使窗体的中心和屏幕的中心正好重合,从而将窗体居中。
//组件实例变量的定义 Panel panelMain = new Panel(); Panel panelUp = new Panel(); Panel panel3 = new Panel(); Panel panel4 = new Panel(); Panel panel6 = new Panel(); Panel panel7 = new Panel(); TextField txtServer = new TextField(); TextField txtTo = new TextField(); TextField txtFrom = new TextField(); TextField txtSubject = new TextField(); Panel panel8 = new Panel(); Label lblFile = new Label(); Button cmdBrowse = new Button(); Panel panelDown = new Panel(); TextArea txtMail = new TextArea(); Panel panel10 = new Panel(); Button cmdSend = new Button(); Button cmdExit = new Button(); ....... ....... panelMain.add(panelUp, null); panelUp.add(panel3, null); panel3.add(new Label("发信服务器:"), null); panel3.add(txtServer, null); panelUp.add(panel4, null); panel4.add(new Label("收件人:"), null); panel4.add(txtTo, null); panelUp.add(panel6, null); panelUp.add(panel7, null); panel7.add(new Label("主题:"), null); panel7.add(txtSubject, null); panel6.add(new Label("发件人:"), null); panel6.add(txtFrom, null); panelUp.add(panel8, null); panel8.add(new Label("附件: "), null); panel8.add(lblFile, null); panel8.add(cmdBrowse, null); panelMain.add(panelDown, null); panelDown.add(txtMail, BorderLayout.CENTER); panelDown.add(panel10, BorderLayout.SOUTH); panel10.add(cmdSend, null); panel10.add(cmdExit, null); panelDown.add(new Label(" "), BorderLayout.EAST); panelDown.add(new Label(" "), BorderLayout.WEST); ........ ........ | 窗体组件的定义都是在Init()方法中完成,设置好收件人、发信人和主题组件的单行文本框,书写邮件内容的多行文本框,以及附件中的浏览按钮、发送和退出按钮。
|
|