📄 javaword.java~2~
字号:
package word;import java.awt.BorderLayout;import java.awt.Container;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.InputEvent;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.event.WindowEvent;import java.awt.event.WindowListener;import java.awt.print.PrinterJob;import java.io.BufferedReader;import java.io.File;import java.io.FileOutputStream;import java.io.FileReader;import java.io.PrintWriter;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.Statement;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Vector;import javax.print.attribute.HashPrintRequestAttributeSet;import javax.print.attribute.PrintRequestAttributeSet;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JCheckBoxMenuItem;import javax.swing.JDialog;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.JPanel;import javax.swing.JPasswordField;import javax.swing.JPopupMenu;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.JToolBar;import javax.swing.KeyStroke;import javax.swing.SwingConstants;import javax.swing.SwingUtilities;import javax.swing.UIManager;import javax.swing.event.UndoableEditEvent;import javax.swing.event.UndoableEditListener;import javax.swing.filechooser.FileFilter;import javax.swing.undo.UndoManager;public class JavaWord { public static void main(String[] args) { JavaWord.start(); } public static void start() { JFrame mainWindow = new MainWindow(); //mainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); mainWindow.setVisible(true); }}class MainWindow extends JFrame implements ActionListener, KeyListener, MouseListener, UndoableEditListener, WindowListener { JMenuBar menuBar; JMenu file, edit, see, database, face, help; JMenuItem new1, open, save, exit, redo, undo, cut, copy, paste, selectAll, newline, metal, motif, windows, helpContent, about, redoPopup, undoPopup, cutPopup, copyPopup, pastePopup, selectAllPopup, dConection, print, timeDate, find; ActionAbout dialog; JCheckBoxMenuItem toolBar; JToolBar bar; JTextArea text; JScrollPane scroll; MainWindow exitWindow; JFileChooser chooser; BufferedReader in; PrintWriter write; JButton bnew, bopen, bsave, bexit, bredo, bundo, bcut, bcopy, bpaste, bselectAll, bhelp, babout, bprint, bfind; String metalFace, motifFace, windowsFace; boolean textAction = false; // 定义记录文本区第一次按下的行为,实现窗口关闭时,提示用户保存文件 UndoManager undoManger;// 定义出undo/ redo对象 JPopupMenu textPopup; PrintRequestAttributeSet attributes; MainWindow() { setTitle("JAVA Word文档编辑器"); setExtendedState(JFrame.MAXIMIZED_BOTH); setSize(700, 500); setLayout(new BorderLayout()); // 设置窗口响应事件 this.addWindowListener(this); text = new JTextArea(); // text = new JTextPane(); scroll = new JScrollPane(text); getContentPane().add(scroll, BorderLayout.CENTER); // 设置文本区响应事件 text.addMouseListener(this); text.addKeyListener(this); // 设置菜单栏 menuBar = new JMenuBar(); setJMenuBar(menuBar); // 设置文件菜单 file = new JMenu("文件(F)"); file.setMnemonic('F'); menuBar.add(file); new1 = new JMenuItem("新建", new ImageIcon("ico/new16.gif")); new1.setHorizontalTextPosition(SwingConstants.RIGHT); new1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK)); open = new JMenuItem("打开", new ImageIcon("ico/open16.gif")); open.setHorizontalTextPosition(SwingConstants.RIGHT); open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK)); save = new JMenuItem("保存", new ImageIcon("ico/save16.gif")); save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK)); print = new JMenuItem("打印", new ImageIcon("ico/print16.gif")); print.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, InputEvent.CTRL_MASK)); exit = new JMenuItem("退出", new ImageIcon("ico/exit.gif")); exit.setHorizontalTextPosition(SwingConstants.RIGHT); exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, InputEvent.CTRL_MASK)); file.add(new1); file.add(open); file.add(save); file.addSeparator(); file.add(print); file.addSeparator(); file.add(exit); // 增加文件菜单事件响应 new1.addActionListener(this); open.addActionListener(this); save.addActionListener(this); print.addActionListener(this); exit.addActionListener(this); // 设置编辑菜单 edit = new JMenu("编辑(E)"); edit.setMnemonic('E'); menuBar.add(edit); redo = new JMenuItem("重复", new ImageIcon("ico/redo16.gif")); redo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R, InputEvent.CTRL_MASK)); undo = new JMenuItem("撤消", new ImageIcon("ico/undo16.gif")); undo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.CTRL_MASK)); cut = new JMenuItem("剪贴", new ImageIcon("ico/cut16.gif")); cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_MASK)); copy = new JMenuItem("复制", new ImageIcon("ico/copy16.gif")); copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK)); paste = new JMenuItem("粘贴", new ImageIcon("ico/paste16.gif")); paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK)); timeDate = new JMenuItem("插入日期时间", new ImageIcon("ico/date.gif")); timeDate.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.CTRL_MASK)); find = new JMenuItem("查找/替换", new ImageIcon("ico/find16.gif")); find.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_MASK)); selectAll = new JMenuItem("全选", new ImageIcon("ico/selectAll.gif")); selectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_MASK)); edit.add(redo); edit.add(undo); edit.add(cut); edit.add(copy); edit.add(paste); edit.add(timeDate); edit.add(find); edit.add(selectAll); // 增加编辑菜单事件响应 redo.addActionListener(this); undo.addActionListener(this); cut.addActionListener(this); copy.addActionListener(this); paste.addActionListener(this); selectAll.addActionListener(this); timeDate.addActionListener(this); find.addActionListener(this); // 设置查看菜单 see = new JMenu("查看(V)"); see.setMnemonic('V'); newline = new JMenuItem("自动换行"); toolBar = new JCheckBoxMenuItem("是否隐藏工具栏"); toolBar.setSelected(true); menuBar.add(see); see.add(newline); see.add(toolBar); // 增加工具事件响应 newline.addActionListener(this); toolBar.addActionListener(this); // 设置查询数据库菜单 database = new JMenu("查询数据库(D)"); database.setMnemonic('D'); dConection = new JMenuItem("连接数据库", new ImageIcon("ico/cserver.gif")); menuBar.add(database); database.add(dConection); // 增加查询数据库菜单事件响应 dConection.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Database db = new Database(MainWindow.this); db.setVisible(true); } }); // 设置外观 face = new JMenu("外观设置(A)"); face.setMnemonic('A'); metal = new JMenuItem("JAVA 外观", new ImageIcon("ico/metal-Inform.gif")); motif = new JMenuItem("UNIX 外观", new ImageIcon("ico/metal-Inform.gif")); windows = new JMenuItem("Windows 外观", new ImageIcon( "ico/metal-Inform.gif")); menuBar.add(face); face.add(metal); face.add(motif); face.add(windows); // 增加外观事件响应 metal.addActionListener(this); motif.addActionListener(this); windows.addActionListener(this); // 设置帮助菜单 help = new JMenu("帮助(H)"); help.setMnemonic('H'); menuBar.add(help); helpContent = new JMenuItem("帮助内容(H)"); helpContent.setMnemonic('H'); helpContent.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0)); // 快捷键为F1,其中的"0"代表不使用控制键 helpContent.setIcon(new ImageIcon("ico/help16.gif")); helpContent.addActionListener(this); about = new JMenuItem("关于", new ImageIcon("ico/About16.gif")); help.add(helpContent); help.add(about); about.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dialog = new ActionAbout(MainWindow.this);// 调用自定义关于对话框 dialog.setVisible(true); } }); // 工具栏上按钮定义 bnew = new JButton(new ImageIcon("ico/new24.gif")); bopen = new JButton(new ImageIcon("ico/open24.gif")); bsave = new JButton(new ImageIcon("ico/save24.gif")); bprint = new JButton(new ImageIcon("ico/print24.gif")); bredo = new JButton(new ImageIcon("ico/Redo24.gif")); bundo = new JButton(new ImageIcon("ico/undo24.gif")); bcut = new JButton(new ImageIcon("ico/cut24.gif")); bcopy = new JButton(new ImageIcon("ico/copy24.gif")); bpaste = new JButton(new ImageIcon("ico/paste24.gif")); bfind = new JButton(new ImageIcon("ico/Find24.gif")); bselectAll = new JButton(new ImageIcon("ico/selectAll.gif")); bhelp = new JButton(new ImageIcon("ico/Help24.gif")); bexit = new JButton(new ImageIcon("ico/shutdown.gif")); // 设置提示文本 bnew.setToolTipText("新建"); bopen.setToolTipText("打开"); bsave.setToolTipText("保存"); bredo.setToolTipText("重复"); bundo.setToolTipText("撤消"); bcut.setToolTipText("剪贴"); bcopy.setToolTipText("复制"); bpaste.setToolTipText("粘贴"); bfind.setToolTipText("查找/替换"); bselectAll.setToolTipText("全选"); bhelp.setToolTipText("帮助"); bprint.setToolTipText("打印"); bexit.setToolTipText("退出"); bar = new JToolBar(); getContentPane().add(bar, BorderLayout.NORTH); bar.add(bnew); bar.add(bopen); bar.add(bsave); bar.add(bprint); bar.addSeparator(); bar.add(bredo); bar.add(bundo); bar.add(bcut); bar.add(bcopy); bar.add(bpaste); bar.add(bfind); //bar.add(bselectAll); bar.addSeparator(); bar.add(bhelp); bar.addSeparator(); bar.add(bexit); // 增加工具栏按钮事件 bnew.addActionListener(this); bopen.addActionListener(this); bsave.addActionListener(this); bredo.addActionListener(this); bundo.addActionListener(this); bcut.addActionListener(this); bcopy.addActionListener(this); bpaste.addActionListener(this); bfind.addActionListener(this); bselectAll.addActionListener(this); bhelp.addActionListener(this); bprint.addActionListener(this); bexit.addActionListener(this); // 设置弹出菜单 textPopup = new JPopupMenu(); // text.add(textPopup); redoPopup = new JMenuItem("重复", new ImageIcon("ico/redo.jpg"));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -