码迷,mamicode.com
首页 > 其他好文 > 详细

MailTest

时间:2015-07-07 02:03:52      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:

GridBagLayout把一个界面分为m行n列的网格

gridx表示组件位于第几列,gridy表示组件位于第几行
gridwidth表示组件占几列,gridheight表示组件占几行
fill指定当组件小于单元格大小时的填充方式
anchor表示当组件小于单元格大小时的对齐方式
weighx表示当界面有收缩放大时,组件的宽度收缩放大的程度,
weighty表示组件高度收缩放大的程度
ipadx表示组件最小的宽度,
ipady表示组件最小的高度

技术分享

package swing.mail;

import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Scanner;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingWorker;

/*2015-7-7*/
public class MailTest {
    public static void main(String[] args) {
        JFrame frame = new MailTestFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        frame.setLocationRelativeTo(null);
    }

}

class MailTestFrame extends JFrame {
    private static final long serialVersionUID = 1L;

    private Scanner in;
    private PrintWriter out;
    private JTextField from;
    private JTextField to;
    private JTextField smtpServer;
    private JTextArea message;
    private JTextArea comm;

    public static final int DEFAULT_WIDTH = 300;
    public static final int DEFAULT_HEIGHT = 300;

    public MailTestFrame() {
        setTitle("MailTest");
        setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

        setLayout(new GridBagLayout());

        add(new JLabel("From:"), new GBC(0, 0).setFill(GBC.HORIZONTAL));

        from = new JTextField(20);
        add(from, new GBC(1, 0).setFill(GBC.HORIZONTAL).setWeight(100, 0));

        add(new JLabel("To:"), new GBC(0, 1).setFill(GBC.HORIZONTAL));

        to = new JTextField(20);
        add(to, new GBC(1, 1).setFill(GBC.HORIZONTAL).setWeight(100, 0));

        add(new JLabel("SMTP server:"), new GBC(0, 2).setFill(GBC.HORIZONTAL));

        smtpServer = new JTextField(20);
        add(smtpServer, new GBC(1, 2).setFill(GBC.HORIZONTAL).setWeight(100, 0));

        message = new JTextArea();
        add(new JScrollPane(message), new GBC(0, 3, 2, 1).setFill(GBC.BOTH).setWeight(100, 100));

        comm = new JTextArea();
        add(new JScrollPane(comm), new GBC(0, 4, 2, 1).setFill(GBC.BOTH).setWeight(100, 100));

        JPanel buttonPanel = new JPanel();
        add(buttonPanel, new GBC(0, 5, 2, 1));

        JButton sendButton = new JButton("Send");
        buttonPanel.add(sendButton);
        sendButton.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                new SwingWorker<Void, Void>() {

                    @Override
                    protected Void doInBackground() throws Exception {
                        comm.setText("");
                        sendMail();
                        return null;
                    }
                }.execute();

            }
        });

    }

    public void sendMail() {
        try {
            Socket s = new Socket(smtpServer.getText(), 25);
            InputStream inputStream = s.getInputStream();
            OutputStream outputStream = s.getOutputStream();

            in = new Scanner(inputStream);
            out = new PrintWriter(outputStream, true);

            String hostName = InetAddress.getLocalHost().getHostName();
            receive();
            send("Hello" + hostName);
            receive();
            send("Mail From:<" + from.getText() + ">");
            receive();
            send("RCPT TO:<" + to.getText() + ">");
            receive();
            send("DATA");
            receive();
            send(message.getText());
            send(".");
            receive();
            s.close();
        } catch (Exception e) {
            comm.append("Error:" + e);

        }

    }

    private void send(String string) {
        comm.append(string);
        comm.append("\n");
        out.println(string.replace("\n", "\r\n"));
        out.print("\r\n");
        out.flush();
    }

    private void receive() {
        String line = in.nextLine();
        comm.append(line);
        comm.append("\n");
    }

}

 

package swing.mail;

import java.awt.GridBagConstraints;

/**
 * This class simplifies the use of the GridBagConstraints class.
 */
public class GBC extends GridBagConstraints
{
    private static final long serialVersionUID = 1L;

    /**
     * Constructs a GBC with a given gridx and gridy position and all other grid
     * bag constraint values set to the default.
     * 
     * @param gridx
     *            the gridx position
     * @param gridy
     *            the gridy position
     */
    public GBC(int gridx, int gridy)
    {
        this.gridx = gridx;
        this.gridy = gridy;
    }

    /**
     * Constructs a GBC with given gridx, gridy, gridwidth, gridheight and all
     * other grid bag constraint values set to the default.
     * 
     * @param gridx
     *            the gridx position
     * @param gridy
     *            the gridy position
     * @param gridwidth
     *            the cell span in x-direction
     * @param gridheight
     *            the cell span in y-direction
     */
    public GBC(int gridx, int gridy, int gridwidth, int gridheight) {
        this.gridx = gridx;
        this.gridy = gridy;
        this.gridwidth = gridwidth;
        this.gridheight = gridheight;
    }

    /**
     * Sets the cell spans.
     * 
     * @param gridwidth
     *            the cell span in x-direction
     * @param gridheight
     *            the cell span in y-direction
     * @return this object for further modification
     */
    public GBC setSpan(int gridwidth, int gridheight)
    {
        this.gridwidth = gridwidth;
        this.gridheight = gridheight;
        return this;
    }

    /**
     * Sets the anchor.
     * 
     * @param anchor
     *            the anchor value
     * @return this object for further modification
     */
    public GBC setAnchor(int anchor)
    {
        this.anchor = anchor;
        return this;
    }

    /**
     * Sets the fill direction.
     * 
     * @param fill
     *            the fill direction
     * @return this object for further modification
     */
    public GBC setFill(int fill)
    {
        this.fill = fill;
        return this;
    }

    /**
     * Sets the cell weights.
     * 
     * @param weightx
     *            the cell weight in x-direction
     * @param weighty
     *            the cell weight in y-direction
     * @return this object for further modification
     */
    public GBC setWeight(double weightx, double weighty)
    {
        this.weightx = weightx;
        this.weighty = weighty;
        return this;
    }

    /**
     * Sets the insets of this cell.
     * 
     * @param distance
     *            the spacing to use in all directions
     * @return this object for further modification
     */
    public GBC setInsets(int distance)
    {
        this.insets = new java.awt.Insets(
                distance, distance, distance, distance);
        return this;
    }

    /**
     * Sets the insets of this cell.
     * 
     * @param top
     *            the spacing to use on top
     * @param left
     *            the spacing to use to the left
     * @param bottom
     *            the spacing to use on the bottom
     * @param right
     *            the spacing to use to the right
     * @return this object for further modification
     */
    public GBC setInsets(int top, int left, int bottom, int right)
    {
        this.insets = new java.awt.Insets(
                top, left, bottom, right);
        return this;
    }

    /**
     * Sets the internal padding
     * 
     * @param ipadx
     *            the internal padding in x-direction
     * @param ipady
     *            the internal padding in y-direction
     * @return this object for further modification
     */
    public GBC setIpad(int ipadx, int ipady)
    {
        this.ipadx = ipadx;
        this.ipady = ipady;
        return this;
    }
}

 http://bbs.csdn.net/topics/300244821

MailTest

标签:

原文地址:http://www.cnblogs.com/softidea/p/4625827.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!