?? liujiao.java
字號:
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 liujiao {
public static void main(String[] args) {
liujiao.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"));
redoPopup.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -