📄 writingmailpanel.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 + -