⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 writingmailpanel.java

📁 该系统是一个基于p2p的即时聊天系统
💻 JAVA
字号:
/* * @(#) WritingMailPanel.java * Copyright 2004 HWStudio. All rights reserved. */package hws.item.smart.panel.function.mail;//导入核心Java类库import java.awt.Cursor;import java.awt.Insets;import java.awt.Graphics;import java.awt.FontMetrics;import java.awt.FlowLayout;import java.awt.GridBagLayout;import java.awt.GridBagConstraints;import java.awt.event.MouseEvent;import java.awt.event.MouseAdapter;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JButton;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.JScrollPane;//导入自定义Java类库import hws.item.smart.Smart;import hws.item.smart.misc.ColorShop;import hws.item.smart.misc.ImageShop;import hws.item.smart.misc.SBChanger;import hws.item.smart.action.mail.writing.SaveMailAction;import hws.item.smart.action.mail.writing.SendMailAction;import hws.item.smart.action.mail.writing.DraftMailAction;import hws.item.smart.action.mail.writing.PrintMailAction;import hws.item.smart.action.mail.writing.AttachmentAction;/** * 写邮件面板 * * @version 0.1 2005-08-07 * @author Hwerz */public class WritingMailPanel extends JPanel {    /*------------------------------------------------------------------------*     *                                属性定义                                *     *------------------------------------------------------------------------*/    /**     * 该类自身的一个静态引用     */    private static WritingMailPanel panel;    /**     * 邮件头面板     */    private MailHeaderPanel header;    /**     * 邮件体面板     */    private MailBodyPanel body;    /*------------------------------------------------------------------------*     *                                构造函数                                *     *------------------------------------------------------------------------*/    /**     * 构造函数为私有,这样在整个运行过程中该类就只能有一个实例     */    private WritingMailPanel() {        super(new GridBagLayout());        //工具栏面板        GridBagConstraints constraints = new GridBagConstraints(            //gridx, gridy            0, 0,            //gridwidth, gridheight            1, 1,            //weightx, weighty            1.0, 0.0,            //anchor            GridBagConstraints.NORTHEAST,            //fill            GridBagConstraints.HORIZONTAL,            //insets            new Insets(5, 0, 0, 0),            //ipadx, ipady            0, 0);        add(new Toolbar(), constraints);        //邮件头面板        header = new MailHeaderPanel();        constraints.gridy = 1;        constraints.insets = new Insets(0, 0, 0, 0);        add(header, constraints);        //邮件体面板        body = new MailBodyPanel();        constraints.gridy = 2;        constraints.weighty = 1.0;        constraints.fill = GridBagConstraints.BOTH;        add(body, constraints);    }    /*------------------------------------------------------------------------*     *                                公共方法                                *     *------------------------------------------------------------------------*/    /**     * 对该类提供的一个全局访问点,用来实例化该对象     *     * @return 该类唯一的一个实例     */    public static WritingMailPanel getInstance() {        if (panel == null) {            panel = new WritingMailPanel();        }        return panel;    }    /*------------------------------------------------------------------------*     *                                 内部类                                 *     *------------------------------------------------------------------------*/    /**     * 工具栏面板     */    class Toolbar extends JPanel {        /**         * Create a new instance of this class         */        public Toolbar() {            super(new FlowLayout(FlowLayout.CENTER, 5, 0));            //发送            JButton button = new JButton(SendMailAction.getInstance());            button.setIcon(ImageShop.SEND_IMAGEICON);            button.addMouseListener(new SBChanger(                SendMailAction.getInstance().getHintInfo(), false));            add(button);            //保存            button = new JButton(SaveMailAction.getInstance());            button.setIcon(ImageShop.SAVE_IMAGEICON);            button.addMouseListener(new SBChanger(                SaveMailAction.getInstance().getHintInfo(), false));            add(button);            //草稿            button = new JButton(DraftMailAction.getInstance());            button.setIcon(ImageShop.DRAFT_IMAGEICON);            button.addMouseListener(new SBChanger(                DraftMailAction.getInstance().getHintInfo(), false));            add(button);            //打印            button = new JButton(PrintMailAction.getInstance());            button.setIcon(ImageShop.PRINT_IMAGEICON);            button.addMouseListener(new SBChanger(                PrintMailAction.getInstance().getHintInfo(), false));            add(button);            //附件            button = new JButton(AttachmentAction.getInstance());            button.setIcon(ImageShop.ATTACHMENT_IMAGEICON);            button.addMouseListener(new SBChanger(                AttachmentAction.getInstance().getHintInfo(), false));            add(button);        }    }    /**     * 邮件头面板     */    class MailHeaderPanel extends JPanel {        /**         * 发件人文本框         */        private JTextField fromTextField;        /**         * 回复文本框         */        private JTextField replyTextField;        /**         * 收件人文本框         */        private JTextField toTextField;        /**         * 抄送文本框         */        private JTextField copyTextField;        /**         * 暗送文本框         */        private JTextField hideTextField;        /**         * 主题文本框         */        private JTextField subjectTextField;        /**         * Create a new instance of this class         */        public MailHeaderPanel() {            super(new GridBagLayout());            //发件人标签            GridBagConstraints constraints = new GridBagConstraints(                //gridx, gridy                0, 0,                //gridwidth, gridheight                1, 1,                //weightx, weighty                0.0, 0.0,                //anchor                GridBagConstraints.NORTHWEST,                //fill                GridBagConstraints.NONE,                //insets                new Insets(5, 10, 0, 0),                //ipadx, ipady                0, 0);            add(new JLabel("发件人:"), constraints);            //发件人文本框            fromTextField = new JTextField();            constraints.gridx = 1;            constraints.gridwidth = GridBagConstraints.REMAINDER;            constraints.weightx = 1.0;            constraints.fill = GridBagConstraints.HORIZONTAL;            constraints.insets = new Insets(5, 0, 0, 10);            add(fromTextField, constraints);            //回复标签            constraints.gridx = 0;            constraints.gridy = 1;            constraints.gridwidth = 1;            constraints.weightx = 0.0;            constraints.fill = GridBagConstraints.NONE;            constraints.insets = new Insets(5, 10, 0, 0);            add(new JLabel("回复:"), constraints);            //回复文本框            replyTextField = new JTextField();            constraints.gridx = 1;            constraints.gridwidth = GridBagConstraints.REMAINDER;            constraints.weightx = 1.0;            constraints.fill = GridBagConstraints.HORIZONTAL;            constraints.insets = new Insets(5, 0, 0, 10);            add(replyTextField, constraints);            //收件人标签            constraints.gridx = 0;            constraints.gridy = 2;            constraints.gridwidth = 1;            constraints.weightx = 0.0;            constraints.fill = GridBagConstraints.NONE;            constraints.insets = new Insets(5, 10, 0, 0);            add(new LabelPlus("收件人:"), constraints);            //收件人文本框            toTextField = new JTextField();            constraints.gridx = 1;            constraints.gridwidth = GridBagConstraints.REMAINDER;            constraints.weightx = 1.0;            constraints.fill = GridBagConstraints.HORIZONTAL;            constraints.insets = new Insets(5, 0, 0, 10);            add(toTextField, constraints);            //抄送标签            constraints.gridx = 0;            constraints.gridy = 3;            constraints.gridwidth = 1;            constraints.weightx = 0.0;            constraints.fill = GridBagConstraints.NONE;            constraints.insets = new Insets(5, 10, 0, 0);            add(new LabelPlus("抄送:"), constraints);            //抄送文本框            copyTextField = new JTextField();            constraints.gridx = 1;            constraints.gridwidth = GridBagConstraints.REMAINDER;            constraints.weightx = 1.0;            constraints.fill = GridBagConstraints.HORIZONTAL;            constraints.insets = new Insets(5, 0, 0, 10);            add(copyTextField, constraints);            //暗送标签            constraints.gridx = 0;            constraints.gridy = 4;            constraints.gridwidth = 1;            constraints.weightx = 0.0;            constraints.fill = GridBagConstraints.NONE;            constraints.insets = new Insets(5, 10, 0, 0);            add(new LabelPlus("暗送:"), constraints);            //暗送文本框            hideTextField = new JTextField();            constraints.gridx = 1;            constraints.gridwidth = GridBagConstraints.REMAINDER;            constraints.weightx = 1.0;            constraints.fill = GridBagConstraints.HORIZONTAL;            constraints.insets = new Insets(5, 0, 0, 10);            add(hideTextField, constraints);            //主题标签            constraints.gridx = 0;            constraints.gridy = 5;            constraints.gridwidth = 1;            constraints.weightx = 0.0;            constraints.fill = GridBagConstraints.NONE;            constraints.insets = new Insets(5, 10, 0, 0);            add(new JLabel("主题:"), constraints);            //主题文本框            subjectTextField = new JTextField();            constraints.gridx = 1;            constraints.gridwidth = GridBagConstraints.REMAINDER;            constraints.weightx = 1.0;            constraints.fill = GridBagConstraints.HORIZONTAL;            constraints.insets = new Insets(5, 0, 0, 10);            add(subjectTextField, constraints);        }        /**         * 返回发件人地址         *         * @return 发件人地址         */        public String getFrom() {            return fromTextField.getText().trim();        }        /**         * 返回回复地址         *         * @return 回复地址         */        public String getReply() {            return replyTextField.getText().trim();        }        /**         * 返回收件人地址         *         * @return 收件人地址         */        public String getTo() {            return toTextField.getText().trim();        }        /**         * 返回抄送地址         *         * @return 抄送地址         */        public String getCopy() {            return copyTextField.getText().trim();        }        /**         * 返回暗送地址         *         * @return 暗送地址         */        public String getHide() {            return hideTextField.getText().trim();        }        /**         * 返回邮件主题         *         * @return 邮件主题         */        public String getSubject() {            return subjectTextField.getText().trim();        }    }    /**     * 邮件体面板     */    class MailBodyPanel extends JPanel {        /**         * 邮件内容文本域         */        private JTextArea bodyTextArea;        /**         * Create a new instance of this class         */        public MailBodyPanel() {            super(new GridBagLayout());            bodyTextArea = new JTextArea();            JScrollPane scroller = new JScrollPane(bodyTextArea,                JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,                JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);            GridBagConstraints constraints = new GridBagConstraints(                //gridx, gridy                0, 0,                //gridwidth, gridheight                1, 1,                //weightx, weighty                1.0, 1.0,                //anchor                GridBagConstraints.NORTHWEST,                //fill                GridBagConstraints.BOTH,                //insets                new Insets(10, 10, 5, 10),                //ipadx, ipady                0, 0);            add(scroller, constraints);        }        /**         * 返回邮件内容         *         * @return 邮件内容         */        public String getBody() {            return bodyTextArea.getText().trim();        }    }    /**     * 自定义标签     */    class LabelPlus extends JLabel {        /**         * 标记鼠标是否进入到标签的边界内         */        private boolean mouseEntered;        /**         * Create a new instance of this class         *         * @param text 标签上显示的文本         */        public LabelPlus(String text) {            super(text);            mouseEntered = false;            addMouseListener(new MouseAdapter() {                public void mouseEntered(MouseEvent event) {                    mouseEntered = true;                    setForeground(ColorShop.HYPERLINK1_COLOR);                    Smart.getInstance().setCursor(                        Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));                }                public void mouseExited(MouseEvent event) {                    mouseEntered = false;                    setForeground(ColorShop.HYPERLINK2_COLOR);                    Smart.getInstance().setCursor(Cursor.getDefaultCursor());                }                public void mouseClicked(MouseEvent event) {                    //...                }            });        }        /**         * 覆盖超类JLabel的方法         *         * @param g the specified Graphics context         */        public void paint(Graphics g) {            super.paint(g);            if (mouseEntered == true) {                FontMetrics metrics = g.getFontMetrics();                int width = metrics.stringWidth(getText()) - 5;                int height = metrics.getHeight() - 1;                g.drawLine(0, height, width, height);            }        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -