java 实现简单的记事本.doc_第1页
java 实现简单的记事本.doc_第2页
java 实现简单的记事本.doc_第3页
java 实现简单的记事本.doc_第4页
java 实现简单的记事本.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 主窗体package com.iflysse.week2;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Font;import java.awt.GraphicsEnvironment;import java.awt.Toolkit;import java.awt.datatransfer.Clipboard;import java.awt.datatransfer.DataFlavor;import java.awt.datatransfer.StringSelection;import java.awt.datatransfer.Transferable;import java.awt.datatransfer.UnsupportedFlavorException;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.InputEvent;import java.awt.event.KeyEvent;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.File;import java.io.IOException;import javax.swing.ButtonGroup;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JCheckBoxMenuItem;import javax.swing.JColorChooser;import javax.swing.JComboBox;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JPopupMenu;import javax.swing.JRadioButtonMenuItem;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JToolBar;import javax.swing.KeyStroke;import javax.swing.event.CaretEvent;import javax.swing.event.CaretListener;import javax.swing.undo.UndoManager;public class FileEditor extends JFrame implements ActionListener, CaretListener private JMenuBar jMenuBar;private JMenu jMenu_file, jMenu_edit, jMenu_format, jMenu_help;private JMenuItem item_new, item_open, item_save, item_saveAs, item_print,item_exit;private JMenuItem item_cut, item_copy, item_paste, item_delete, item_all,item_back;private JMenuItem item_newLine, item_font, item_color;private JMenuItem item_userGuide, item_authorInfo;private JCheckBoxMenuItem jcb_bold, jcb_italic;private JRadioButtonMenuItem jrb_black, jrb_red, jrb_green, jrb_pink;private JMenu jMenu_font, jMenu_color;private JComboBox jComboBox_fFamily, jComboBox_fSize;private JToolBar jToolBar;/ 工具栏private JPopupMenu jPopupMenu;/ 弹出菜单菜单项private JMenuItem item_cut_p, item_copy_p, item_paste_p, item_delete_p,item_all_p, item_back_p;private JScrollPane jScrollPane;private JTextArea jTextArea;private JFileChooser jFileChooser;private Clipboard cb;/ java 剪切板private UndoManager undo;/ 撤销管理private String board = ;private boolean wrapLine = false;private int dot;/ private JFileDialog jFileDialog;/* * 简单的文本编辑器 * * param args */public static void main(String args) new FileEditor();public FileEditor() initComponents2();initComponents();showjPopupMenu();EnabledComponents();/ Init Compomentspublic void initComponents() cb = Toolkit.getDefaultToolkit().getSystemClipboard();jMenuBar = new JMenuBar();/ JMenu jMenu_file,jMenu_edit,jMenu_format,jMneu_help;jMenu_file = new JMenu(文件);jMenu_edit = new JMenu(编辑);jMenu_help = new JMenu(帮助);jMenu_format = new JMenu(格式);jMenuBar.add(jMenu_file);jMenuBar.add(jMenu_edit);jMenuBar.add(jMenu_format);jMenuBar.add(jMenu_help);/ JMenuItem/ item_new,item_open,item_save,item_saveAs,item_print,item_exit;item_new = new JMenuItem(新建(N);item_open = new JMenuItem(打开(O);item_save = new JMenuItem(保存(S);item_saveAs = new JMenuItem(另存为(A).);item_print = new JMenuItem(打印(P);item_exit = new JMenuItem(退出(X);/ 快捷键KeyStroke keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK);/ item_new.setMnemonic(KeyEvent.VK_N);item_new.setAccelerator(keyStroke);keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK);item_open.setAccelerator(keyStroke);keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK);item_save.setAccelerator(keyStroke);item_saveAs.setMnemonic(KeyEvent.VK_A);keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_P, InputEvent.CTRL_MASK);item_print.setAccelerator(keyStroke);keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_E, InputEvent.CTRL_MASK);item_exit.setAccelerator(keyStroke);/ 事件监听item_new.addActionListener(this);item_open.addActionListener(this);item_save.addActionListener(this);item_saveAs.addActionListener(this);item_print.addActionListener(this);item_exit.addActionListener(this);jMenu_file.add(item_new);/ jMenu_file.addSeparator();jMenu_file.add(item_open);/ jMenu_file.addSeparator();jMenu_file.add(item_save);/ jMenu_file.addSeparator();jMenu_file.add(item_saveAs);jMenu_file.addSeparator();jMenu_file.add(item_print);jMenu_file.addSeparator();jMenu_file.add(item_exit);/ JMenuItem item_cut,item_copy,item_paste,item_delete;item_cut = new JMenuItem(剪切(X);item_copy = new JMenuItem(复制(C);item_paste = new JMenuItem(粘贴(V);item_delete = new JMenuItem(删除);item_all = new JMenuItem(全选(A);item_back = new JMenuItem(撤销(Z);/ 快捷键keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.CTRL_MASK);item_back.setAccelerator(keyStroke);keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_MASK);item_cut.setAccelerator(keyStroke);keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK);item_copy.setAccelerator(keyStroke);keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK);item_paste.setAccelerator(keyStroke);/ keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,InputEvent.);/ ?item_delete.setMnemonic(KeyEvent.VK_DELETE);item_delete.setAccelerator(KeyStroke.getKeyStroke(Delete);keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_MASK);item_all.setAccelerator(keyStroke);/ 事件监听item_back.addActionListener(this);item_cut.addActionListener(this);item_copy.addActionListener(this);item_paste.addActionListener(this);item_delete.addActionListener(this);item_all.addActionListener(this);jMenu_edit.add(item_back);jMenu_edit.add(item_cut);jMenu_edit.addSeparator();jMenu_edit.add(item_copy);jMenu_edit.addSeparator();jMenu_edit.add(item_paste);jMenu_edit.addSeparator();jMenu_edit.add(item_delete);jMenu_edit.add(item_all);/ JMenuItem item_newLine,item_font;item_newLine = new JMenuItem(自动换行);item_font = new JMenuItem(字体.);item_color = new JMenuItem(颜色面板);/ 事件监听item_newLine.addActionListener(this);item_font.addActionListener(this);item_color.addActionListener(this);jMenu_format.add(item_newLine);jMenu_format.addSeparator();jMenu_format.add(jMenu_font);jMenu_format.add(item_font);jMenu_format.addSeparator();jMenu_format.add(jMenu_color);jMenu_format.add(item_color);/ JMenuItem item_userGuide,item_authorInfo;item_userGuide = new JMenuItem(使用手册);item_authorInfo = new JMenuItem(作者信息);item_userGuide.addActionListener(this);item_authorInfo.addActionListener(this);jMenu_help.add(item_userGuide);jMenu_help.addSeparator();jMenu_help.add(item_authorInfo);/ JTextArea jTextArea;jTextArea = new JTextArea();/ jTextArea.setSize(int)this.getSize().getWidth(),(int)this.getSize().getHeight();/ JScrollPane jScrollPane;jScrollPane = new JScrollPane(jTextArea);/ jScrollPane.add(jTextArea);initRoot();/ 弹出菜单public void showjPopupMenu() / 弹出菜单jPopupMenu = new JPopupMenu();item_cut_p = new JMenuItem(剪切(X);item_copy_p = new JMenuItem(复制(C);item_paste_p = new JMenuItem(粘贴(V);item_delete_p = new JMenuItem(删除);item_all_p = new JMenuItem(全选(A);item_back_p = new JMenuItem(撤销(Z);/ 快捷键item_back_p.setMnemonic(KeyEvent.VK_Z);item_cut_p.setMnemonic(KeyEvent.VK_C);item_copy_p.setMnemonic(KeyEvent.VK_DELETE);item_paste_p.setMnemonic(KeyEvent.VK_DELETE);item_delete_p.setMnemonic(KeyEvent.VK_DELETE);item_all_p.setMnemonic(KeyEvent.VK_DELETE);/ 事件监听item_back_p.addActionListener(this);item_cut_p.addActionListener(this);item_copy_p.addActionListener(this);item_paste_p.addActionListener(this);item_delete_p.addActionListener(this);item_all_p.addActionListener(this);jPopupMenu.add(item_back_p);jPopupMenu.add(item_cut_p);jPopupMenu.addSeparator();jPopupMenu.add(item_copy_p);jPopupMenu.addSeparator();jPopupMenu.add(item_paste_p);jPopupMenu.addSeparator();jPopupMenu.add(item_delete_p);jPopupMenu.add(item_all_p);/ 文本区域添加弹出菜单jTextArea.add(jPopupMenu);/ 设置文本区域的鼠标事件监听,右键弹出菜单jTextArea.addMouseListener(new MouseAdapter() public void mouseClicked(MouseEvent e) if (e.getModifiers() = MouseEvent.BUTTON3_MASK) jPopupMenu.show(jTextArea, e.getX(), e.getY(););/* * 二级JMenu、三级选项及JComboBox的初始化 * 使用实现ActionListener接口的自定义内部类MyActionListener监听事件 */public void initComponents2() MyActionListener listener = new MyActionListener();/ JMenu jMenu_font,jMenu_color;jMenu_font = new JMenu(字形);jMenu_color = new JMenu(颜色);/ JCheckBoxMenuItem jcb_bold,jcb_italic;jcb_bold = new JCheckBoxMenuItem(加粗);jcb_italic = new JCheckBoxMenuItem(倾斜);jcb_bold.addActionListener(listener);jcb_italic.addActionListener(listener);jMenu_font.add(jcb_bold);jMenu_font.add(jcb_italic);/ JRadioButtonMenuItem jrb_black,jrb_red,jrb_green,jrb_pink;jrb_black = new JRadioButtonMenuItem(黑色);jrb_red = new JRadioButtonMenuItem(红色);jrb_green = new JRadioButtonMenuItem(绿色);jrb_pink = new JRadioButtonMenuItem(粉红色);ButtonGroup bg = new ButtonGroup();bg.add(jrb_black);bg.add(jrb_red);bg.add(jrb_green);bg.add(jrb_pink);jrb_black.addActionListener(listener);jrb_red.addActionListener(listener);jrb_green.addActionListener(listener);jrb_pink.addActionListener(listener);jMenu_color.add(jrb_black);jMenu_color.add(jrb_red);jMenu_color.add(jrb_green);jMenu_color.add(jrb_pink);/ JComboBox jComboBox_fFamily,jComboBox_fSize;String fontStyles = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();String fontSizes = 10, 15, 20, 30, 40, 50, 60, 70,80, 90 ;jComboBox_fFamily = new JComboBox(fontStyles);jComboBox_fSize = new JComboBox(fontSizes);jComboBox_fFamily.addActionListener(listener);jComboBox_fSize.addActionListener(listener);/ jMenu_font.add(jComboBox_fFamily);jToolBar = new JToolBar();jToolBar.setBackground(Color.PINK);jToolBar.add(jComboBox_fFamily);jToolBar.add(jComboBox_fSize);/ 初始化根面板public void initRoot() this.setJMenuBar(jMenuBar);this.setLayout(new BorderLayout();this.add(jScrollPane, BorderLayout.CENTER);this.add(jToolBar, BorderLayout.NORTH);this.setSize(500, 600);this.setVisible(true);this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);this.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)/ 保存提示if (jTextArea.getText().length() 0) int option = JOptionPane.showConfirmDialog(null, 是否保存文本?,提示信息, JOptionPane.WARNING_MESSAGE);if (option = JOptionPane.YES_OPTION) saveFileOpt();/ 文本域重置jTextArea.setText();System.exit(0); else if (option = JOptionPane.CANCEL_OPTION) option= JOptionPane.showConfirmDialog(null, 确认退出?,提示信息, JOptionPane.WARNING_MESSAGE);if(option=JOptionPane.OK_OPTION)System.exit(0);elseSystem.exit(0););this.displayCenter();/ 个性化this.setTitle(简单记事本);this.setIconImage(new ImageIcon(this.getClass().getClassLoader().getResource(tabs/test4.jpg).getImage();jTextArea.setBackground(Color.WHITE);jTextArea.setForeground(Color.PINK);jTextArea.setSelectedTextColor(Color.RED);jTextArea.setSelectionColor(Color.decode(#D6D7A0);jTextArea.setFont(new Font(宋体,0,20);/设置文本区初始字体/ 撤销操作undo = new UndoManager();jTextArea.getDocument().addUndoableEditListener(undo);/ 监听CaretListenerjTextArea.addCaretListener(this);/ 屏蔽部分菜单的事件响应public void EnabledComponents() / JMenuItem item_cut,item_copy,item_paste,item_delete,item_all;if (jTextArea.getSelectedText() = null) item_cut.setEnabled(false);item_copy.setEnabled(false);item_delete.setEnabled(false);item_all.setEnabled(true);item_cut_p.setEnabled(false);item_copy_p.setEnabled(false);item_delete_p.setEnabled(false);item_all_p.setEnabled(true); else if (jTextArea.getSelectedText() != null) item_cut.setEnabled(true);item_copy.setEnabled(true);item_delete.setEnabled(true);item_all.setEnabled(false);item_cut_p.setEnabled(true);item_copy_p.setEnabled(true);item_delete_p.setEnabled(true);item_all_p.setEnabled(false);/ 若剪贴板不为空可粘贴try Transferable content = cb.getContents(null);String s = (String) content.getTransferData(DataFlavor.stringFlavor);if (s != null) item_paste_p.setEnabled(true);item_paste.setEnabled(true); else item_paste_p.setEnabled(false);item_paste.setEnabled(false); catch (UnsupportedFlavorException e) showToastInfo(剪贴板出错啦!, 3); catch (IOException e) showToastInfo(剪贴板出错啦!, 3);/ 面板居中显示public void displayCenter() Toolkit toolkit = Toolkit.getDefaultToolkit();int x = (toolkit.getScreenSize().width - this.getSize().width) / 2;int y = (toolkit.getScreenSize().height - this.getSize().height) / 2;this.setLocation(x, y);Overridepublic void actionPerformed(ActionEvent arg0) String str = arg0.getActionCommand().toString();/ 新建操作if (str.equals(新建(N) / 保存提示if (jTextArea.getText().length() 0) int option = JOptionPane.showConfirmDialog(null, 是否保存文本?,提示信息, JOptionPane.WARNING_MESSAGE);if (option = JOptionPane.YES_OPTION) saveFileOpt();/ 文本域重置jTextArea.setText(); else if (option = JOptionPane.CANCEL_OPTION| option = JOptionPane.NO_OPTION) / DO Nothingif (str.equals(打开(O) openFileOpt();System.out.println(str);if (str.equals(保存(S) | str.equals(另存为(A).) saveFileOpt();/ else if(str.equals(另存为(A).)/ if (str.equals(打印(P) showToastInfo(无打印机!, 3);if (str.equals(退出(X) this.dispose();System.exit(0);/ 撤销操作if (str.equals(撤销(Z) undo.undo();if (str.equals(剪切(X) String copy = jTextArea.getSelectedText();if (copy != null & copy.length() 0) board = copy;cb.setContents(new StringSelection(board), null);jTextArea.replaceRange(, jTextArea.getSelectionStart(),jTextArea.getSelectionEnd();showToastInfo(文本已剪切!, 1); else showToastInfo(未选择文本!, 2);if (str.equals(复制(C) String copy = jTextArea.getSelectedText();if (copy != null & copy.length() 0) board = copy;cb.setContents(new StringSelection(board), null);showToastInfo(文本已复制!, 1); else showToastInfo(未选择文本!, 2);if (str.equals(粘贴(V) try Transferable content = cb.getContents(null);String s = (String) content.getTransferData(DataFlavor.stringFlavor);jTextArea.replaceRange(s, jTextArea.getSelectionStart(),jTextArea.getSelectionEnd(); catch (Exception e) e.printStackTrace();if (str.equals(删除) String copy = jTextArea.getSelectedText();if (copy != null & copy.length() 0) jTextArea.replaceRange(, jTextArea.getSelectionStart(),jTextArea.getSelectionEnd();showToastInfo(删除成功!, 1); elseshowToastInfo(未选择文本!, 2);if (str.equals(全选(A) jTextArea.setSelectionStart(0);jTextArea.setSelectionEnd(jTextArea.getText().trim().length();if (str.equals(自动换行) if (wrapLine) wrapLine = false;jTextArea.setLineWrap(false); else wrapLine = true;jTextArea.setLineWrap(true);if (str.equals(字体.) if (str.equals(颜色面板) jTextArea.setForeground(JColorChooser.showDialog(jTextArea, 颜色选择,Color.BLACK);if (str.equals(使用手册) try Runtime.getRuntime().exec(cmd /c start ); catch (IOException e) showToastInfo(无法访问指定网址!, 3);if (str.equals(作者信息) showAuthorInfoJFrame();public void showToastInfo(String msg, int type) if (type = 1)type = JOptionPane.INFORMATION_MESSAGE;else if (type = 2)type = JOptionPane.WARNING_MESSAGE;elsetype = JOptionPane.ERROR_MESSAGE;JOptionPane.showMessageDialog(null, msg, 提示信息, type);/ 作者信息面板public void showAuthorInfoJFrame() final JFrame jFrame = new JFrame(作者信息);jFrame.setSize(170, 200);jFrame.setLayout(new BorderLayout();String info = 讯飞直通车第二期Java2班蒋庆意+ TimeUtil.getCurrentTime() + (安徽农业大学 10网络工程);jFrame.add(new JLabel(info), BorderLayout.CENTER);JButton jbtn = new JButton(关闭);jbtn.addActionListener(new ActionListener() Overridepublic void actionPerformed(Acti

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论