|
|
package com.yyj.nodepad.view;
|
|
|
|
|
|
import java.awt.BorderLayout;
|
|
|
import java.awt.Color;
|
|
|
import java.awt.Component;
|
|
|
import java.awt.Container;
|
|
|
import java.awt.Dimension;
|
|
|
import java.awt.Event;
|
|
|
import java.awt.EventQueue;
|
|
|
import java.awt.FlowLayout;
|
|
|
import java.awt.Font;
|
|
|
import java.awt.Graphics;
|
|
|
import java.awt.GridLayout;
|
|
|
import java.awt.PrintJob;
|
|
|
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.KeyAdapter;
|
|
|
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.awt.print.PageFormat;
|
|
|
import java.awt.print.PrinterJob;
|
|
|
import java.io.BufferedReader;
|
|
|
import java.io.File;
|
|
|
import java.io.FileInputStream;
|
|
|
import java.io.FileNotFoundException;
|
|
|
import java.io.FileWriter;
|
|
|
import java.io.IOException;
|
|
|
import java.io.InputStreamReader;
|
|
|
import java.util.Calendar;
|
|
|
import java.util.GregorianCalendar;
|
|
|
|
|
|
import javax.swing.BorderFactory;
|
|
|
import javax.swing.ButtonGroup;
|
|
|
import javax.swing.JButton;
|
|
|
import javax.swing.JCheckBox;
|
|
|
import javax.swing.JCheckBoxMenuItem;
|
|
|
import javax.swing.JColorChooser;
|
|
|
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.JPopupMenu;
|
|
|
import javax.swing.JRadioButton;
|
|
|
import javax.swing.JScrollPane;
|
|
|
import javax.swing.JSeparator;
|
|
|
import javax.swing.JTextArea;
|
|
|
import javax.swing.JTextField;
|
|
|
import javax.swing.JToolBar;
|
|
|
import javax.swing.KeyStroke;
|
|
|
import javax.swing.UIManager;
|
|
|
import javax.swing.UnsupportedLookAndFeelException;
|
|
|
import javax.swing.border.EmptyBorder;
|
|
|
import javax.swing.event.CaretEvent;
|
|
|
import javax.swing.event.CaretListener;
|
|
|
import javax.swing.undo.UndoManager;
|
|
|
|
|
|
import com.yyj.nodepad.util.Clock;
|
|
|
import com.yyj.nodepad.util.MQFontChooser;
|
|
|
import com.yyj.nodepad.util.SystemParam;
|
|
|
import com.yyj.nodepad.util.TestLine;
|
|
|
|
|
|
public class NotepadMainFrame extends JFrame implements ActionListener{
|
|
|
|
|
|
/**
|
|
|
* <20><><EFBFBD>к<EFBFBD>
|
|
|
*/
|
|
|
private static final long serialVersionUID = 8585210209467333480L;
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
private JPanel contentPane;
|
|
|
//<2F>༭<EFBFBD><E0BCAD>
|
|
|
private JTextArea textArea;
|
|
|
//<2F>˵<F2BFAAB2><CBB5><EFBFBD>
|
|
|
private JMenuItem itemOpen;
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD>
|
|
|
private JMenuItem itemSave;
|
|
|
|
|
|
//1<><31><EFBFBD>½<EFBFBD>
|
|
|
//2<><32><EFBFBD>Ĺ<DEB8>
|
|
|
//3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
int flag=0;
|
|
|
|
|
|
//<2F><>ǰ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
|
|
String currentFileName=null;
|
|
|
|
|
|
PrintJob p=null;//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ҫ<EFBFBD><D2AA>ӡ<EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD>
|
|
|
Graphics g=null;//Ҫ<><D2AA>ӡ<EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD>
|
|
|
|
|
|
//<2F><>ǰ<EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>
|
|
|
String currentPath=null;
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
|
|
JColorChooser jcc1=null;
|
|
|
Color color=Color.BLACK;
|
|
|
|
|
|
//<2F>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
int linenum = 1;
|
|
|
int columnnum = 1;
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
public UndoManager undoMgr = new UndoManager();
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
public Clipboard clipboard = new Clipboard("ϵͳ<CFB5><CDB3><EFBFBD>а<EFBFBD>");
|
|
|
|
|
|
private JMenuItem itemSaveAs; //<2F><><EFBFBD><EFBFBD>Ϊ
|
|
|
private JMenuItem itemNew; //<2F>½<EFBFBD>
|
|
|
private JMenuItem itemPage; //ҳ<><D2B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
private JSeparator separator; //<2F>ָ<EFBFBD><D6B8><EFBFBD>
|
|
|
private JMenuItem itemPrint; //<2F><>ӡ
|
|
|
private JMenuItem itemExit; //<2F>˳<EFBFBD>
|
|
|
private JSeparator separator_1; //<2F>ָ<EFBFBD><D6B8><EFBFBD>
|
|
|
private JMenu itemEdit; //<2F>༭
|
|
|
private JMenu itFormat; //<2F><>ʽ
|
|
|
private JMenu itemCheck; //<2F>鿴
|
|
|
private JMenu itemHelp; //<2F><><EFBFBD><EFBFBD>
|
|
|
private JMenuItem itemSearchForHelp; //<2F>鿴<EFBFBD><E9BFB4><EFBFBD><EFBFBD>
|
|
|
private JMenuItem itemAboutNotepad; //<2F><><EFBFBD>ڼ<EFBFBD><DABC>±<EFBFBD>
|
|
|
private JMenuItem itemUndo; //<2F><><EFBFBD><EFBFBD>
|
|
|
private JMenuItem itemCut; //<2F><><EFBFBD><EFBFBD>
|
|
|
private JMenuItem itemCopy; //<2F><><EFBFBD><EFBFBD>
|
|
|
private JMenuItem itemPaste; //ճ<><D5B3>
|
|
|
private JMenuItem itemDelete; //ɾ<><C9BE>
|
|
|
private JMenuItem itemFind; //<2F><><EFBFBD><EFBFBD>
|
|
|
private JMenuItem itemFindNext; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
|
|
private JMenuItem itemReplace; //<2F>滻
|
|
|
private JMenuItem itemTurnTo; //ת<><D7AA>
|
|
|
private JMenuItem itemSelectAll; //ȫѡ
|
|
|
private JMenuItem itemTime; //<2F><><EFBFBD><EFBFBD>/ʱ<><CAB1>
|
|
|
private JMenuItem itemFont; //<2F><><EFBFBD><EFBFBD>
|
|
|
private JMenuItem itemColor; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
|
|
private JMenuItem itemFontColor; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
|
|
private JCheckBoxMenuItem itemNextLine; //<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
|
|
|
private JScrollPane scrollPane; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
private JCheckBoxMenuItem itemStatement; //״̬<D7B4><CCAC>
|
|
|
private JToolBar toolState;
|
|
|
public static JLabel label1;
|
|
|
private JLabel label2;
|
|
|
private JLabel label3;
|
|
|
int length=0;
|
|
|
int sum=0;
|
|
|
|
|
|
/**
|
|
|
* <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
*/
|
|
|
public static void main(String[] args) {
|
|
|
EventQueue.invokeLater(new Runnable() {
|
|
|
public void run() {
|
|
|
try {
|
|
|
NotepadMainFrame frame = new NotepadMainFrame();
|
|
|
frame.setVisible(true);
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
|
|
|
GregorianCalendar c=new GregorianCalendar();
|
|
|
int hour=c.get(Calendar.HOUR_OF_DAY);
|
|
|
int min=c.get(Calendar.MINUTE);
|
|
|
int second=c.get(Calendar.SECOND);
|
|
|
private JPopupMenu popupMenu; //<2F>Ҽ<EFBFBD><D2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>
|
|
|
private JMenuItem popM_Undo; //<2F><><EFBFBD><EFBFBD>
|
|
|
private JMenuItem popM_Cut; //<2F><><EFBFBD><EFBFBD>
|
|
|
private JMenuItem popM_Copy; //<2F><><EFBFBD><EFBFBD>
|
|
|
private JMenuItem popM_Paste; //ճ<><D5B3>
|
|
|
private JMenuItem popM_Delete; //ɾ<><C9BE>
|
|
|
private JMenuItem popM_SelectAll; //ȫѡ
|
|
|
private JMenuItem popM_toLeft; //<2F><><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD>˳<EFBFBD><CBB3>
|
|
|
private JMenuItem popM_showUnicode; //<2F><>ʾUnicode<64><65><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>
|
|
|
private JMenuItem popM_closeIMe; //<2F>ر<EFBFBD>IME
|
|
|
private JMenuItem popM_InsertUnicode; //<2F><><EFBFBD><EFBFBD>Unicode<64><65><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>
|
|
|
private JMenuItem popM_RestartSelect; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ
|
|
|
private JSeparator separator_2; //<2F>ָ<EFBFBD><D6B8><EFBFBD>
|
|
|
private JSeparator separator_3; //<2F>ָ<EFBFBD><D6B8><EFBFBD>
|
|
|
private JSeparator separator_4; //<2F>ָ<EFBFBD><D6B8><EFBFBD>
|
|
|
private JSeparator separator_5; //<2F>ָ<EFBFBD><D6B8><EFBFBD>
|
|
|
private JMenuItem itemRedo; //<2F>ָ<EFBFBD>
|
|
|
private JSeparator separator_6; //<2F>ָ<EFBFBD><D6B8><EFBFBD>
|
|
|
private JSeparator separator_7; //<2F>ָ<EFBFBD><D6B8><EFBFBD>
|
|
|
private JSeparator separator_8; //<2F>ָ<EFBFBD><D6B8><EFBFBD>
|
|
|
private JMenuItem popM_Redo; //<2F>ָ<EFBFBD>
|
|
|
|
|
|
/**
|
|
|
* Create the frame.
|
|
|
* <20><><EFBFBD>캯<EFBFBD><ECBAAF>
|
|
|
*/
|
|
|
public NotepadMainFrame() {
|
|
|
try {
|
|
|
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
|
|
|
} catch (ClassNotFoundException e1) {
|
|
|
e1.printStackTrace();
|
|
|
} catch (InstantiationException e1) {
|
|
|
e1.printStackTrace();
|
|
|
} catch (IllegalAccessException e1) {
|
|
|
e1.printStackTrace();
|
|
|
} catch (UnsupportedLookAndFeelException e1) {
|
|
|
e1.printStackTrace();
|
|
|
}
|
|
|
setTitle("<22>ޱ<EFBFBD><DEB1><EFBFBD>");
|
|
|
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
|
|
|
setBounds(100, 100, 721, 772);
|
|
|
|
|
|
JMenuBar menuBar = new JMenuBar();
|
|
|
setJMenuBar(menuBar);
|
|
|
|
|
|
JMenu itemFile = new JMenu("<22>ļ<EFBFBD>(F)");
|
|
|
itemFile.setMnemonic('F'); //<2F><><EFBFBD>ÿ<EFBFBD><C3BF>ݼ<EFBFBD>"F"
|
|
|
menuBar.add(itemFile);
|
|
|
|
|
|
itemNew = new JMenuItem("<22>½<EFBFBD>(N)",'N');
|
|
|
itemNew.setAccelerator(KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N,
|
|
|
java.awt.Event.CTRL_MASK)); //<2F><><EFBFBD>ÿ<EFBFBD><C3BF>ݼ<EFBFBD>Ctrl+"N"
|
|
|
itemNew.addActionListener(this);
|
|
|
itemFile.add(itemNew);
|
|
|
|
|
|
itemOpen = new JMenuItem("<22><><EFBFBD><EFBFBD>(O)",'O');
|
|
|
itemOpen.setAccelerator(KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O,
|
|
|
java.awt.Event.CTRL_MASK)); //<2F><><EFBFBD>ÿ<EFBFBD><C3BF>ݼ<EFBFBD>Ctrl+"O"
|
|
|
itemOpen.addActionListener(this);
|
|
|
itemFile.add(itemOpen);
|
|
|
|
|
|
itemSave = new JMenuItem("<22><><EFBFBD><EFBFBD>(S)");
|
|
|
itemSave.setAccelerator(KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S,
|
|
|
java.awt.Event.CTRL_MASK)); //<2F><><EFBFBD>ÿ<EFBFBD><C3BF>ݼ<EFBFBD>Ctrl+"S"
|
|
|
itemSave.addActionListener(this);
|
|
|
itemFile.add(itemSave);
|
|
|
|
|
|
itemSaveAs = new JMenuItem("<22><><EFBFBD><EFBFBD>Ϊ(A)");
|
|
|
itemSaveAs.addActionListener(this);
|
|
|
itemFile.add(itemSaveAs);
|
|
|
|
|
|
separator = new JSeparator(); //<2F><><EFBFBD>ӷָ<D3B7><D6B8><EFBFBD>
|
|
|
itemFile.add(separator);
|
|
|
|
|
|
itemPage = new JMenuItem("ҳ<><D2B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(U)",'U');
|
|
|
itemPage.addActionListener(this);
|
|
|
itemFile.add(itemPage);
|
|
|
|
|
|
itemPrint = new JMenuItem("<22><>ӡ(P)...",'P');
|
|
|
itemPrint.setAccelerator(KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_P,
|
|
|
java.awt.Event.CTRL_MASK)); //<2F>ÿ<EFBFBD><C3BF>ݼ<EFBFBD>Ctrl+"P"
|
|
|
itemPrint.addActionListener(this);
|
|
|
itemFile.add(itemPrint);
|
|
|
|
|
|
separator_1 = new JSeparator();
|
|
|
itemFile.add(separator_1);
|
|
|
|
|
|
itemExit = new JMenuItem("<22>˳<EFBFBD>(X)",'X');
|
|
|
itemExit.addActionListener(this);
|
|
|
itemFile.add(itemExit);
|
|
|
|
|
|
itemEdit = new JMenu("<22>༭(E)");
|
|
|
itemEdit.setMnemonic('E');
|
|
|
menuBar.add(itemEdit);
|
|
|
|
|
|
itemUndo = new JMenuItem("<22><><EFBFBD><EFBFBD>(U)",'U');
|
|
|
itemUndo.setAccelerator(KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Z,
|
|
|
java.awt.Event.CTRL_MASK)); //<2F><><EFBFBD>ÿ<EFBFBD><C3BF>ݼ<EFBFBD>Ctrl+"Z"
|
|
|
itemUndo.addActionListener(this);
|
|
|
itemEdit.add(itemUndo);
|
|
|
|
|
|
itemRedo = new JMenuItem("<22>ָ<EFBFBD>(R)");
|
|
|
itemRedo.setAccelerator(KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_R,
|
|
|
java.awt.Event.CTRL_MASK)); //<2F><><EFBFBD>ÿ<EFBFBD><C3BF>ݼ<EFBFBD>Ctrl+"R"
|
|
|
itemRedo.addActionListener(this);
|
|
|
itemEdit.add(itemRedo);
|
|
|
|
|
|
itemCut = new JMenuItem("<22><><EFBFBD><EFBFBD>(T)",'T');
|
|
|
itemCut.setAccelerator(KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_X,
|
|
|
java.awt.Event.CTRL_MASK)); //<2F><><EFBFBD>ÿ<EFBFBD><C3BF>ݼ<EFBFBD>Ctrl+"X"
|
|
|
itemCut.addActionListener(this);
|
|
|
|
|
|
separator_6 = new JSeparator();
|
|
|
itemEdit.add(separator_6);
|
|
|
itemEdit.add(itemCut);
|
|
|
|
|
|
itemCopy = new JMenuItem("<22><><EFBFBD><EFBFBD>(C)",'C');
|
|
|
itemCopy.addActionListener(this);
|
|
|
itemCopy.setAccelerator(KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C,
|
|
|
java.awt.Event.CTRL_MASK)); //<2F><><EFBFBD>ÿ<EFBFBD><C3BF>ݼ<EFBFBD>Ctrl+"C"
|
|
|
itemEdit.add(itemCopy);
|
|
|
|
|
|
itemPaste = new JMenuItem("ճ<><D5B3>(P)",'P');
|
|
|
itemPaste.addActionListener(this);
|
|
|
itemPaste.setAccelerator(KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_V,
|
|
|
java.awt.Event.CTRL_MASK)); //<2F><><EFBFBD>ÿ<EFBFBD><C3BF>ݼ<EFBFBD>Ctrl+"V"
|
|
|
itemEdit.add(itemPaste);
|
|
|
|
|
|
itemDelete = new JMenuItem("ɾ<><C9BE>(L)",'L');
|
|
|
itemDelete.addActionListener(this);
|
|
|
itemDelete.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,
|
|
|
InputEvent.CTRL_MASK)); //<2F><><EFBFBD>ÿ<EFBFBD><C3BF>ݼ<EFBFBD>Ctrl+"D"
|
|
|
itemEdit.add(itemDelete);
|
|
|
|
|
|
separator_7 = new JSeparator();
|
|
|
itemEdit.add(separator_7);
|
|
|
|
|
|
itemFind = new JMenuItem("<22><><EFBFBD><EFBFBD>(F)",'F');
|
|
|
itemFind.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,
|
|
|
Event.CTRL_MASK)); //<2F><><EFBFBD>ÿ<EFBFBD><C3BF>ݼ<EFBFBD>Ctrl+"F"
|
|
|
itemFind.addActionListener(this);
|
|
|
itemEdit.add(itemFind);
|
|
|
|
|
|
itemFindNext = new JMenuItem("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>(N)",'N');
|
|
|
itemFindNext.setAccelerator(KeyStroke.getKeyStroke("F3"));
|
|
|
itemFindNext.addActionListener(this);
|
|
|
itemEdit.add(itemFindNext);
|
|
|
|
|
|
itemReplace = new JMenuItem("<22>滻(R)",'R');
|
|
|
itemReplace.addActionListener(this);
|
|
|
itemReplace.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,
|
|
|
Event.CTRL_MASK)); //<2F><><EFBFBD>ÿ<EFBFBD><C3BF>ݼ<EFBFBD>Ctrl+"H"
|
|
|
itemEdit.add(itemReplace);
|
|
|
|
|
|
itemTurnTo = new JMenuItem("ת<><D7AA>(G)",'G');
|
|
|
itemTurnTo.addActionListener(this);
|
|
|
itemTurnTo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G,
|
|
|
Event.CTRL_MASK)); //<2F><><EFBFBD>ÿ<EFBFBD><C3BF>ݼ<EFBFBD>Ctrl+"G"
|
|
|
itemEdit.add(itemTurnTo);
|
|
|
|
|
|
itemSelectAll = new JMenuItem("ȫѡ(A)",'A');
|
|
|
itemSelectAll.setAccelerator(KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A,
|
|
|
java.awt.Event.CTRL_MASK)); //<2F><><EFBFBD>ÿ<EFBFBD><C3BF>ݼ<EFBFBD>Ctrl+"A"
|
|
|
itemSelectAll.addActionListener(this);
|
|
|
|
|
|
separator_8 = new JSeparator();
|
|
|
itemEdit.add(separator_8);
|
|
|
itemEdit.add(itemSelectAll);
|
|
|
|
|
|
itemTime = new JMenuItem("ʱ<><CAB1>/<2F><><EFBFBD><EFBFBD>(D)",'D');
|
|
|
itemTime.addActionListener(this);
|
|
|
itemTime.setAccelerator(KeyStroke.getKeyStroke("F5"));
|
|
|
itemEdit.add(itemTime);
|
|
|
|
|
|
itFormat = new JMenu("<22><>ʽ(O)");
|
|
|
itFormat.setMnemonic('O');
|
|
|
menuBar.add(itFormat);
|
|
|
|
|
|
itemNextLine = new JCheckBoxMenuItem("<22>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>(W)");
|
|
|
itemNextLine.addActionListener(this);
|
|
|
itFormat.add(itemNextLine);
|
|
|
|
|
|
itemFont = new JMenuItem("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С(F)...");
|
|
|
itemFont.addActionListener(this);
|
|
|
itFormat.add(itemFont);
|
|
|
|
|
|
itemColor = new JMenuItem("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ(C)...");
|
|
|
itemColor.addActionListener(this);
|
|
|
itFormat.add(itemColor);
|
|
|
|
|
|
itemFontColor = new JMenuItem("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ(I)...");
|
|
|
itemFontColor.addActionListener(this);
|
|
|
itFormat.add(itemFontColor);
|
|
|
|
|
|
itemCheck = new JMenu("<22>鿴(V)");
|
|
|
itemCheck.setMnemonic('V');
|
|
|
menuBar.add(itemCheck);
|
|
|
|
|
|
itemStatement = new JCheckBoxMenuItem("״̬<D7B4><CCAC>(S)");
|
|
|
itemStatement.addActionListener(this);
|
|
|
itemCheck.add(itemStatement);
|
|
|
|
|
|
itemHelp = new JMenu("<22><><EFBFBD><EFBFBD>(H)");
|
|
|
itemHelp.setMnemonic('H');
|
|
|
menuBar.add(itemHelp);
|
|
|
|
|
|
itemSearchForHelp = new JMenuItem("<22>鿴<EFBFBD><E9BFB4><EFBFBD><EFBFBD>(H)",'H');
|
|
|
itemSearchForHelp.addActionListener(this);
|
|
|
itemHelp.add(itemSearchForHelp);
|
|
|
|
|
|
itemAboutNotepad = new JMenuItem("<22><><EFBFBD>ڼ<EFBFBD><DABC>±<EFBFBD>(A)",'A');
|
|
|
itemAboutNotepad.addActionListener(this);
|
|
|
itemHelp.add(itemAboutNotepad);
|
|
|
contentPane = new JPanel();
|
|
|
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
|
|
|
//<2F><><EFBFBD>ñ߿<DFBF>
|
|
|
contentPane.setLayout(new BorderLayout(0, 0));
|
|
|
setContentPane(contentPane);
|
|
|
|
|
|
textArea = new JTextArea();
|
|
|
|
|
|
//VERTICAL<41><4C>ֱ HORIZONTALˮƽ
|
|
|
scrollPane = new JScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
|
|
|
|
|
|
//contentPane2=new JPanel();
|
|
|
//contentPane2.setSize(10,textArea.getSize().height);
|
|
|
//contentPane.add(contentPane2, BorderLayout.WEST);
|
|
|
TestLine view = new TestLine(); //<2F><><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD>
|
|
|
scrollPane.setRowHeaderView(view);
|
|
|
|
|
|
popupMenu = new JPopupMenu();
|
|
|
addPopup(textArea, popupMenu);
|
|
|
|
|
|
popM_Undo = new JMenuItem("<22><><EFBFBD><EFBFBD>(U)");
|
|
|
popM_Undo.addActionListener(this);
|
|
|
popupMenu.add(popM_Undo);
|
|
|
|
|
|
popM_Redo = new JMenuItem("<22>ָ<EFBFBD>(R)");
|
|
|
popM_Redo.addActionListener(this);
|
|
|
popupMenu.add(popM_Redo);
|
|
|
|
|
|
separator_2 = new JSeparator();
|
|
|
popupMenu.add(separator_2);
|
|
|
|
|
|
popM_Cut = new JMenuItem("<22><><EFBFBD><EFBFBD>(T)");
|
|
|
popM_Cut.addActionListener(this);
|
|
|
popupMenu.add(popM_Cut);
|
|
|
|
|
|
popM_Copy = new JMenuItem("<22><><EFBFBD><EFBFBD>(C)");
|
|
|
popM_Copy.addActionListener(this);
|
|
|
popupMenu.add(popM_Copy);
|
|
|
|
|
|
popM_Paste = new JMenuItem("ճ<><D5B3>(P)");
|
|
|
popM_Paste.addActionListener(this);
|
|
|
popupMenu.add(popM_Paste);
|
|
|
|
|
|
popM_Delete = new JMenuItem("ɾ<><C9BE>(D)");
|
|
|
popM_Delete.addActionListener(this);
|
|
|
popupMenu.add(popM_Delete);
|
|
|
|
|
|
separator_3 = new JSeparator();
|
|
|
popupMenu.add(separator_3);
|
|
|
|
|
|
popM_SelectAll = new JMenuItem("ȫѡ(A)");
|
|
|
popM_SelectAll.addActionListener(this);
|
|
|
popupMenu.add(popM_SelectAll);
|
|
|
|
|
|
separator_4 = new JSeparator();
|
|
|
popupMenu.add(separator_4);
|
|
|
|
|
|
popM_toLeft = new JMenuItem("<22><><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD>˳<EFBFBD><CBB3>(R)");
|
|
|
popM_toLeft.addActionListener(this);
|
|
|
popupMenu.add(popM_toLeft);
|
|
|
|
|
|
popM_showUnicode = new JMenuItem("<22><>ʾUnicode<64><65><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>(S)");
|
|
|
popM_showUnicode.addActionListener(this);
|
|
|
popupMenu.add(popM_showUnicode);
|
|
|
|
|
|
popM_InsertUnicode = new JMenuItem("<22><><EFBFBD><EFBFBD>Unicode<64><65><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>(I)");
|
|
|
popM_InsertUnicode.addActionListener(this);
|
|
|
popupMenu.add(popM_InsertUnicode);
|
|
|
|
|
|
separator_5 = new JSeparator();
|
|
|
popupMenu.add(separator_5);
|
|
|
|
|
|
popM_closeIMe = new JMenuItem("<22>ر<EFBFBD>IME(L)");
|
|
|
popM_closeIMe.addActionListener(this);
|
|
|
popupMenu.add(popM_closeIMe);
|
|
|
|
|
|
popM_RestartSelect = new JMenuItem("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ(R)");
|
|
|
popM_RestartSelect.addActionListener(this);
|
|
|
popupMenu.add(popM_RestartSelect);
|
|
|
//<2F><><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1>м䡿
|
|
|
contentPane.add(scrollPane, BorderLayout.CENTER);
|
|
|
|
|
|
//<2F><><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
textArea.getDocument().addUndoableEditListener(undoMgr);
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
|
|
|
toolState = new JToolBar();
|
|
|
toolState.setSize(textArea.getSize().width, 10);//toolState.setLayout(new FlowLayout(FlowLayout.LEFT));
|
|
|
label1 = new JLabel(" <20><>ǰϵͳʱ<CDB3>䣺" + hour + ":" + min + ":" + second+" ");
|
|
|
toolState.add(label1); //<2F><><EFBFBD><EFBFBD>ϵͳʱ<CDB3><CAB1>
|
|
|
toolState.addSeparator();
|
|
|
label2 = new JLabel(" <20><> " + linenum + " <20><>, <20><> " + columnnum+" <20><> ");
|
|
|
toolState.add(label2); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
toolState.addSeparator();
|
|
|
|
|
|
label3 = new JLabel(" һ<><D2BB> " +length+" <20><> ");
|
|
|
toolState.add(label3); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3>
|
|
|
textArea.addCaretListener(new CaretListener() { //<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
public void caretUpdate(CaretEvent e) {
|
|
|
//sum=0;
|
|
|
JTextArea editArea = (JTextArea)e.getSource();
|
|
|
|
|
|
try {
|
|
|
int caretpos = editArea.getCaretPosition();
|
|
|
linenum = editArea.getLineOfOffset(caretpos);
|
|
|
columnnum = caretpos - textArea.getLineStartOffset(linenum);
|
|
|
linenum += 1;
|
|
|
label2.setText(" <20><> " + linenum + " <20><>, <20><> " + (columnnum+1)+" <20><> ");
|
|
|
//sum+=columnnum+1;
|
|
|
//length+=sum;
|
|
|
length=NotepadMainFrame.this.textArea.getText().toString().length();
|
|
|
label3.setText(" һ<><D2BB> " +length+" <20><> ");
|
|
|
}
|
|
|
catch(Exception ex) { }
|
|
|
}});
|
|
|
|
|
|
contentPane.add(toolState, BorderLayout.SOUTH); //<2F><>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
toolState.setVisible(true);
|
|
|
toolState.setFloatable(false);
|
|
|
Clock clock=new Clock();
|
|
|
clock.start();//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>߳<EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>
|
|
|
final JPopupMenu jp=new JPopupMenu(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dz˵<C7B2><CBB5><EFBFBD>
|
|
|
textArea.addMouseListener(new MouseAdapter() {
|
|
|
@Override
|
|
|
public void mouseClicked(MouseEvent e) {
|
|
|
if(e.getButton()==MouseEvent.BUTTON3)//ֻ<><D6BB>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD><D2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
|
|
{
|
|
|
jp.show(e.getComponent(),e.getX(),e.getY());//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ʽ<EFBFBD>˵<EFBFBD>
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
|
|
|
isChanged();
|
|
|
|
|
|
this.MainFrameWidowListener();
|
|
|
}
|
|
|
|
|
|
|
|
|
/*===============================1====================================*/
|
|
|
/**
|
|
|
* <20>Ƿ<EFBFBD><C7B7>б仯
|
|
|
*/
|
|
|
private void isChanged() {
|
|
|
textArea.addKeyListener(new KeyAdapter() {
|
|
|
@Override
|
|
|
public void keyTyped(KeyEvent e) {
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҽ<EFBFBD><D2BD><EFBFBD><EFBFBD>˶<EFBFBD>ʹ<EFBFBD>ÿ<EFBFBD><C3BF>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>ȴû<C8B4>иı<D0B8>textArea<65><61><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>ж<EFBFBD>
|
|
|
Character c=e.getKeyChar();
|
|
|
if(c != null && !textArea.getText().toString().equals("")){
|
|
|
flag=2;
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
/*===================================================================*/
|
|
|
|
|
|
|
|
|
/*===============================2====================================*/
|
|
|
/**
|
|
|
* <20>½<EFBFBD><C2BD>Ļ<C4BB><F2B1A3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>
|
|
|
*/
|
|
|
private void MainFrameWidowListener() {
|
|
|
this.addWindowListener(new WindowAdapter(){
|
|
|
@Override
|
|
|
public void windowClosing(WindowEvent e) {
|
|
|
if(flag==2 && currentPath==null){
|
|
|
//<2F><><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
|
|
|
//1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><C2BD>ĵ<EFBFBD>Ϊ1<CEAA><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<DEB8>
|
|
|
int result=JOptionPane.showConfirmDialog(NotepadMainFrame.this, "<22>Ƿ<C7B7><F1BDABB8>ı<EFBFBD><C4B1>浽<EFBFBD>ޱ<EFBFBD><DEB1><EFBFBD>?", "<22><><EFBFBD>±<EFBFBD>", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
|
|
|
if(result==JOptionPane.OK_OPTION){
|
|
|
NotepadMainFrame.this.saveAs();
|
|
|
}else if(result==JOptionPane.NO_OPTION){
|
|
|
NotepadMainFrame.this.dispose();
|
|
|
NotepadMainFrame.this.setDefaultCloseOperation(EXIT_ON_CLOSE);
|
|
|
}
|
|
|
}else if(flag==2 && currentPath!=null){
|
|
|
//<2F><><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
|
|
|
//1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><C2BD>ĵ<EFBFBD>Ϊ1<CEAA><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<DEB8>
|
|
|
int result=JOptionPane.showConfirmDialog(NotepadMainFrame.this, "<22>Ƿ<C7B7><F1BDABB8>ı<EFBFBD><C4B1>浽"+currentPath+"?", "<22><><EFBFBD>±<EFBFBD>", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
|
|
|
if(result==JOptionPane.OK_OPTION){
|
|
|
NotepadMainFrame.this.save();
|
|
|
}else if(result==JOptionPane.NO_OPTION){
|
|
|
NotepadMainFrame.this.dispose();
|
|
|
NotepadMainFrame.this.setDefaultCloseOperation(EXIT_ON_CLOSE);
|
|
|
}
|
|
|
}else{
|
|
|
//<2F><><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
|
|
|
int result=JOptionPane.showConfirmDialog(NotepadMainFrame.this, "ȷ<><C8B7><EFBFBD>رգ<D8B1>", "ϵͳ<CFB5><CDB3>ʾ", JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE);
|
|
|
if(result==JOptionPane.OK_OPTION){
|
|
|
NotepadMainFrame.this.dispose();
|
|
|
NotepadMainFrame.this.setDefaultCloseOperation(EXIT_ON_CLOSE);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
/*===================================================================*/
|
|
|
|
|
|
|
|
|
/*==============================3=====================================*/
|
|
|
/**
|
|
|
* <20><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
|
|
|
*/
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
if(e.getSource()==itemOpen){ //<2F><><EFBFBD><EFBFBD>
|
|
|
openFile();
|
|
|
}else if(e.getSource()==itemSave){ //<2F><><EFBFBD><EFBFBD>
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>Ǵģ<F2BFAAB5><C4A3>Ϳ<EFBFBD><CDBF><EFBFBD>ֱ<EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD>
|
|
|
save();
|
|
|
}else if(e.getSource()==itemSaveAs){ //<2F><><EFBFBD><EFBFBD>Ϊ
|
|
|
saveAs();
|
|
|
}else if(e.getSource()==itemNew){ //<2F>½<EFBFBD>
|
|
|
newFile();
|
|
|
}else if(e.getSource()==itemExit){ //<2F>˳<EFBFBD>
|
|
|
exit();
|
|
|
}else if(e.getSource()==itemPage){ //ҳ<><D2B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
///ҳ<><D2B3><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>ٶȵ<D9B6><C8B5>ģ<EFBFBD><C4A3><EFBFBD>֪<EFBFBD><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>
|
|
|
PageFormat pf = new PageFormat();
|
|
|
PrinterJob.getPrinterJob().pageDialog(pf);
|
|
|
}else if(e.getSource()==itemPrint){ //<2F><>ӡ
|
|
|
//<2F><>ӡ<EFBFBD><D3A1>
|
|
|
Print();
|
|
|
}else if(e.getSource()==itemUndo || e.getSource()==popM_Undo){ //<2F><><EFBFBD><EFBFBD>
|
|
|
if(undoMgr.canUndo()){
|
|
|
undoMgr.undo();
|
|
|
}
|
|
|
}else if(e.getSource()==itemRedo || e.getSource()==popM_Redo){ //<2F>ָ<EFBFBD>
|
|
|
if(undoMgr.canRedo()){
|
|
|
undoMgr.redo();
|
|
|
}
|
|
|
}else if(e.getSource()==itemCut || e.getSource()==popM_Cut){ //<2F><><EFBFBD><EFBFBD>
|
|
|
cut();
|
|
|
}else if(e.getSource()==itemCopy || e.getSource()==popM_Copy){ //<2F><><EFBFBD><EFBFBD>
|
|
|
copy();
|
|
|
}else if(e.getSource()==itemPaste || e.getSource()==popM_Paste){ //ճ<><D5B3>
|
|
|
paste();
|
|
|
}else if(e.getSource()==itemDelete || e.getSource()==popM_Delete){ //ɾ<><C9BE>
|
|
|
String tem=textArea.getText().toString();
|
|
|
textArea.setText(tem.substring(0,textArea.getSelectionStart()));
|
|
|
}else if(e.getSource()==itemFind){ //<2F><><EFBFBD><EFBFBD>
|
|
|
mySearch();
|
|
|
}else if(e.getSource()==itemFindNext){ //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
|
|
mySearch();
|
|
|
}else if(e.getSource()==itemReplace){ //<2F>滻
|
|
|
mySearch();
|
|
|
}else if(e.getSource()==itemTurnTo){ //ת<><D7AA>
|
|
|
turnTo();
|
|
|
}else if(e.getSource()==itemSelectAll || e.getSource()==popM_SelectAll){ //ѡ<><D1A1>ȫ<EFBFBD><C8AB>
|
|
|
textArea.selectAll();
|
|
|
}else if(e.getSource()==itemTime){ //ʱ<><CAB1>/<2F><><EFBFBD><EFBFBD>
|
|
|
textArea.append(hour+":"+min+" "+c.get(Calendar.YEAR)+"/"+(c.get(Calendar.MONTH)+1)+"/"+c.get(Calendar.DAY_OF_MONTH));
|
|
|
}else if(e.getSource()==itemNextLine){ //<2F><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>в<EFBFBD><D0B2>ԡ<EFBFBD><D4A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ true<75><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еij<D0B5><C4B3>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>Ϊ false<73><65>
|
|
|
if(itemNextLine.isSelected()){
|
|
|
textArea.setLineWrap(true);
|
|
|
}else{
|
|
|
textArea.setLineWrap(false);
|
|
|
}
|
|
|
}else if(e.getSource()==itemFont){ //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪԤ<CEAA><D4A4>ֵ
|
|
|
MQFontChooser fontChooser = new MQFontChooser(textArea.getFont());
|
|
|
fontChooser.showFontDialog(this);
|
|
|
Font font = fontChooser.getSelectFont();
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>JTextArea<65><61>
|
|
|
textArea.setFont(font);
|
|
|
}else if(e.getSource()==itemColor){ //<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>ɫ
|
|
|
jcc1 = new JColorChooser();
|
|
|
JOptionPane.showMessageDialog(this, jcc1,"ѡ<><EFBFBD><F1B1B3BE><EFBFBD>ɫ<EFBFBD><C9AB>ɫ",-1);
|
|
|
color = jcc1.getColor();
|
|
|
textArea.setBackground(color);
|
|
|
}else if(e.getSource()==itemFontColor){ //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
|
|
jcc1=new JColorChooser();
|
|
|
JOptionPane.showMessageDialog(this, jcc1, "ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ", -1);
|
|
|
color = jcc1.getColor();
|
|
|
//String string=textArea.getSelectedText();
|
|
|
textArea.setForeground(color);
|
|
|
}else if(e.getSource()==itemStatement){ //<2F><><EFBFBD><EFBFBD>״̬
|
|
|
if(itemStatement.isSelected()){
|
|
|
//scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
|
|
|
toolState.setVisible(true);
|
|
|
}else{
|
|
|
//scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
|
|
|
toolState.setVisible(false);
|
|
|
}
|
|
|
}else if(e.getSource()==itemSearchForHelp){
|
|
|
JOptionPane.showMessageDialog(this, "<22>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>磬<EFBFBD>ø绹<C3B8><E7BBB9><EFBFBD>Ǵ<EFBFBD>˵<EFBFBD><CBB5>","<22>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>",1);
|
|
|
}else if(e.getSource()==itemAboutNotepad){
|
|
|
JOptionPane.showMessageDialog(this, "<22><><EFBFBD>±<EFBFBD>V1.0<EFBFBD><EFBFBD>1504<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>","<22><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> ",1);
|
|
|
}
|
|
|
}
|
|
|
/*===================================================================*/
|
|
|
|
|
|
|
|
|
private void turnTo() {
|
|
|
final JDialog gotoDialog = new JDialog(this, "ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|
|
JLabel gotoLabel = new JLabel("<22><><EFBFBD><EFBFBD>(L):");
|
|
|
final JTextField linenum = new JTextField(5);
|
|
|
linenum.setText("1");
|
|
|
linenum.selectAll();
|
|
|
|
|
|
JButton okButton = new JButton("ȷ<><C8B7>");
|
|
|
okButton.addActionListener(new ActionListener() {
|
|
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
int totalLine = textArea.getLineCount();
|
|
|
int[] lineNumber = new int[totalLine + 1];
|
|
|
String s = textArea.getText();
|
|
|
int pos = 0, t = 0;
|
|
|
|
|
|
while (true) {
|
|
|
pos = s.indexOf('\12', pos);
|
|
|
// System.out.println("<22><><EFBFBD><EFBFBD>pos:"+pos);
|
|
|
if (pos == -1)
|
|
|
break;
|
|
|
lineNumber[t++] = pos++;
|
|
|
}
|
|
|
|
|
|
int gt = 1;
|
|
|
try {
|
|
|
gt = Integer.parseInt(linenum.getText());
|
|
|
} catch (NumberFormatException efe) {
|
|
|
JOptionPane.showMessageDialog(null, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!", "<22><>ʾ", JOptionPane.WARNING_MESSAGE);
|
|
|
linenum.requestFocus(true);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
if (gt < 2 || gt >= totalLine) {
|
|
|
if (gt < 2)
|
|
|
textArea.setCaretPosition(0);
|
|
|
else
|
|
|
textArea.setCaretPosition(s.length());
|
|
|
} else
|
|
|
textArea.setCaretPosition(lineNumber[gt - 2] + 1);
|
|
|
|
|
|
gotoDialog.dispose();//<2F>رմ<D8B1><D5B4><EFBFBD>
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
JButton cancelButton = new JButton("ȡ<><C8A1>");
|
|
|
cancelButton.addActionListener(new ActionListener() {
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
gotoDialog.dispose();
|
|
|
}
|
|
|
});
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
Container con = gotoDialog.getContentPane();
|
|
|
con.setLayout(new FlowLayout());
|
|
|
con.add(gotoLabel);
|
|
|
con.add(linenum);
|
|
|
con.add(okButton);
|
|
|
con.add(cancelButton);
|
|
|
|
|
|
gotoDialog.setSize(200, 100);
|
|
|
gotoDialog.setResizable(false);
|
|
|
gotoDialog.setLocation(300, 280);
|
|
|
gotoDialog.setVisible(true);
|
|
|
}
|
|
|
|
|
|
|
|
|
/*===============================8====================================*/
|
|
|
/**
|
|
|
* <20>˳<EFBFBD><CBB3><EFBFBD>ť<EFBFBD><C5A5><EFBFBD>ʹ<EFBFBD><CDB4>ڵĺ<DAB5><C4BA><EFBFBD>ʵ<EFBFBD><CAB5>һ<EFBFBD><D2BB><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD>
|
|
|
*/
|
|
|
private void exit() {
|
|
|
if(flag==2 && currentPath==null){
|
|
|
//<2F><><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
|
|
|
//1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><C2BD>ĵ<EFBFBD>Ϊ1<CEAA><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<DEB8>
|
|
|
int result=JOptionPane.showConfirmDialog(NotepadMainFrame.this, "<22>Ƿ<C7B7><F1BDABB8>ı<EFBFBD><C4B1>浽<EFBFBD>ޱ<EFBFBD><DEB1><EFBFBD>?", "<22><><EFBFBD>±<EFBFBD>", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
|
|
|
if(result==JOptionPane.OK_OPTION){
|
|
|
NotepadMainFrame.this.saveAs();
|
|
|
}else if(result==JOptionPane.NO_OPTION){
|
|
|
NotepadMainFrame.this.dispose();
|
|
|
NotepadMainFrame.this.setDefaultCloseOperation(EXIT_ON_CLOSE);
|
|
|
}
|
|
|
}else if(flag==2 && currentPath!=null){
|
|
|
//<2F><><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
|
|
|
//1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><C2BD>ĵ<EFBFBD>Ϊ1<CEAA><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<DEB8>
|
|
|
int result=JOptionPane.showConfirmDialog(NotepadMainFrame.this, "<22>Ƿ<C7B7><F1BDABB8>ı<EFBFBD><C4B1>浽"+currentPath+"?", "<22><><EFBFBD>±<EFBFBD>", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
|
|
|
if(result==JOptionPane.OK_OPTION){
|
|
|
NotepadMainFrame.this.save();
|
|
|
}else if(result==JOptionPane.NO_OPTION){
|
|
|
NotepadMainFrame.this.dispose();
|
|
|
NotepadMainFrame.this.setDefaultCloseOperation(EXIT_ON_CLOSE);
|
|
|
}
|
|
|
}else{
|
|
|
//<2F><><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
|
|
|
int result=JOptionPane.showConfirmDialog(NotepadMainFrame.this, "ȷ<><C8B7><EFBFBD>رգ<D8B1>", "ϵͳ<CFB5><CDB3>ʾ", JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE);
|
|
|
if(result==JOptionPane.OK_OPTION){
|
|
|
NotepadMainFrame.this.dispose();
|
|
|
NotepadMainFrame.this.setDefaultCloseOperation(EXIT_ON_CLOSE);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
/*===================================================================*/
|
|
|
|
|
|
|
|
|
/*===============================4====================================*/
|
|
|
/**
|
|
|
* <20>½<EFBFBD><C2BD>ļ<EFBFBD><C4BC><EFBFBD>ֻ<EFBFBD>иĹ<D0B8><C4B9>ĺͱ<C4BA><CDB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
|
|
|
*/
|
|
|
private void newFile() {
|
|
|
if(flag==0 || flag==1){ //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><C2BD>ĵ<EFBFBD>Ϊ1
|
|
|
return;
|
|
|
}else if(flag==2 && this.currentPath==null){ //<2F>ĺ<DEB8>
|
|
|
//1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><C2BD>ĵ<EFBFBD>Ϊ1<CEAA><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<DEB8>
|
|
|
int result=JOptionPane.showConfirmDialog(NotepadMainFrame.this, "<22>Ƿ<C7B7><F1BDABB8>ı<EFBFBD><C4B1>浽<EFBFBD>ޱ<EFBFBD><DEB1><EFBFBD>?", "<22><><EFBFBD>±<EFBFBD>", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
|
|
|
if(result==JOptionPane.OK_OPTION){
|
|
|
this.saveAs(); //<2F><><EFBFBD><EFBFBD>Ϊ
|
|
|
}else if(result==JOptionPane.NO_OPTION){
|
|
|
this.textArea.setText("");
|
|
|
this.setTitle("<22>ޱ<EFBFBD><DEB1><EFBFBD>");
|
|
|
flag=1;
|
|
|
}
|
|
|
return;
|
|
|
}else if(flag==2 && this.currentPath!=null ){
|
|
|
//2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>Ϊ3<CEAA><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<DEB8>
|
|
|
int result=JOptionPane.showConfirmDialog(NotepadMainFrame.this, "<22>Ƿ<C7B7><F1BDABB8>ı<EFBFBD><C4B1>浽"+this.currentPath+"?", "<22><><EFBFBD>±<EFBFBD>", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
|
|
|
if(result==JOptionPane.OK_OPTION){
|
|
|
this.save(); //ֱ<>ӱ<EFBFBD><D3B1>棬<EFBFBD><E6A3AC>·<EFBFBD><C2B7>
|
|
|
}else if(result==JOptionPane.NO_OPTION){
|
|
|
this.textArea.setText("");
|
|
|
this.setTitle("<22>ޱ<EFBFBD><DEB1><EFBFBD>");
|
|
|
flag=1;
|
|
|
}
|
|
|
}else if(flag==3){ //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|
|
this.textArea.setText("");
|
|
|
flag=1;
|
|
|
this.setTitle("<22>ޱ<EFBFBD><DEB1><EFBFBD>");
|
|
|
}
|
|
|
}
|
|
|
/*===================================================================*/
|
|
|
|
|
|
|
|
|
/*===============================5====================================*/
|
|
|
/**
|
|
|
* <20><><EFBFBD><EFBFBD>Ϊ
|
|
|
*/
|
|
|
private void saveAs() {
|
|
|
//<2F><EFBFBD><F2BFAAB1><EFBFBD><EFBFBD><EFBFBD>
|
|
|
JFileChooser choose=new JFileChooser();
|
|
|
//ѡ<><D1A1><EFBFBD>ļ<EFBFBD>
|
|
|
int result=choose.showSaveDialog(this);
|
|
|
if(result==JFileChooser.APPROVE_OPTION){
|
|
|
//ȡ<><C8A1>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>[<5B>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]
|
|
|
File file=choose.getSelectedFile();
|
|
|
FileWriter fw=null;
|
|
|
//<2F><><EFBFBD><EFBFBD>
|
|
|
try {
|
|
|
fw=new FileWriter(file);
|
|
|
fw.write(textArea.getText());
|
|
|
currentFileName=file.getName();
|
|
|
currentPath=file.getAbsolutePath();
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƚ<EFBFBD><C8BD>٣<EFBFBD><D9A3><EFBFBD>Ҫд
|
|
|
fw.flush();
|
|
|
this.flag=3;
|
|
|
this.setTitle(currentPath);
|
|
|
} catch (IOException e1) {
|
|
|
e1.printStackTrace();
|
|
|
}finally{
|
|
|
try {
|
|
|
if(fw!=null) fw.close();
|
|
|
} catch (IOException e1) {
|
|
|
e1.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
/*===================================================================*/
|
|
|
|
|
|
|
|
|
/*===============================6====================================*/
|
|
|
/**
|
|
|
* <20><><EFBFBD><EFBFBD>
|
|
|
*/
|
|
|
private void save() {
|
|
|
if(this.currentPath==null){
|
|
|
this.saveAs();
|
|
|
if(this.currentPath==null){
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
FileWriter fw=null;
|
|
|
//<2F><><EFBFBD><EFBFBD>
|
|
|
try {
|
|
|
fw=new FileWriter(new File(currentPath));
|
|
|
fw.write(textArea.getText());
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƚ<EFBFBD><C8BD>٣<EFBFBD><D9A3><EFBFBD>Ҫд
|
|
|
fw.flush();
|
|
|
flag=3;
|
|
|
this.setTitle(this.currentPath);
|
|
|
} catch (IOException e1) {
|
|
|
e1.printStackTrace();
|
|
|
}finally{
|
|
|
try {
|
|
|
if(fw!=null) fw.close();
|
|
|
} catch (IOException e1) {
|
|
|
e1.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
/*===================================================================*/
|
|
|
|
|
|
|
|
|
/*================================7===================================*/
|
|
|
/**
|
|
|
* <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|
|
*/
|
|
|
private void openFile() {
|
|
|
if(flag==2 && this.currentPath==null){
|
|
|
//1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><C2BD>ĵ<EFBFBD>Ϊ1<CEAA><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<DEB8>
|
|
|
int result=JOptionPane.showConfirmDialog(NotepadMainFrame.this, "<22>Ƿ<C7B7><F1BDABB8>ı<EFBFBD><C4B1>浽<EFBFBD>ޱ<EFBFBD><DEB1><EFBFBD>?", "<22><><EFBFBD>±<EFBFBD>", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
|
|
|
if(result==JOptionPane.OK_OPTION){
|
|
|
this.saveAs();
|
|
|
}
|
|
|
}else if(flag==2 && this.currentPath!=null){
|
|
|
//2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F2BFAAB5>ļ<EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
int result=JOptionPane.showConfirmDialog(NotepadMainFrame.this, "<22>Ƿ<C7B7><F1BDABB8>ı<EFBFBD><C4B1>浽"+this.currentPath+"?", "<22><><EFBFBD>±<EFBFBD>", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
|
|
|
if(result==JOptionPane.OK_OPTION){
|
|
|
this.save();
|
|
|
}
|
|
|
}
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>
|
|
|
JFileChooser choose=new JFileChooser();
|
|
|
//ѡ<><D1A1><EFBFBD>ļ<EFBFBD>
|
|
|
int result=choose.showOpenDialog(this);
|
|
|
if(result==JFileChooser.APPROVE_OPTION){
|
|
|
//ȡ<><C8A1>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|
|
File file=choose.getSelectedFile();
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD><D1B4>ڵ<EFBFBD><DAB5>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
currentFileName=file.getName();
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ȫ·<C8AB><C2B7>
|
|
|
currentPath=file.getAbsolutePath();
|
|
|
flag=3;
|
|
|
this.setTitle(this.currentPath);
|
|
|
BufferedReader br=null;
|
|
|
try {
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>[<5B>ַ<EFBFBD><D6B7><EFBFBD>]
|
|
|
InputStreamReader isr=new InputStreamReader(new FileInputStream(file),"GBK");
|
|
|
br=new BufferedReader(isr);//<2F><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|
|
StringBuffer sb=new StringBuffer();
|
|
|
String line=null;
|
|
|
while((line=br.readLine())!=null){
|
|
|
sb.append(line+SystemParam.LINE_SEPARATOR);
|
|
|
}
|
|
|
//<2F><>ʾ<EFBFBD><CABE><EFBFBD>ı<EFBFBD><C4B1><EFBFBD>[<5B><><EFBFBD><EFBFBD>]
|
|
|
textArea.setText(sb.toString());
|
|
|
} catch (FileNotFoundException e1) {
|
|
|
e1.printStackTrace();
|
|
|
} catch (IOException e1) {
|
|
|
e1.printStackTrace();
|
|
|
} finally{
|
|
|
try {
|
|
|
if(br!=null) br.close();
|
|
|
} catch (Exception e1) {
|
|
|
e1.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
/*================================================================*/
|
|
|
|
|
|
|
|
|
/*=============================9===================================*/
|
|
|
public void Print()
|
|
|
{
|
|
|
try{
|
|
|
p = getToolkit().getPrintJob(this,"ok",null);//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Printfjob <20><><EFBFBD><EFBFBD> p
|
|
|
g = p.getGraphics();//p <20><>ȡһ<C8A1><D2BB><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ӡ<EFBFBD><D3A1> Graphics <20>Ķ<EFBFBD><C4B6><EFBFBD>
|
|
|
//g.translate(120,200);//<2F>ı<EFBFBD><C4B1>齨<EFBFBD><E9BDA8>λ<EFBFBD><CEBB>
|
|
|
this.textArea.printAll(g);
|
|
|
p.end();//<2F>ͷŶ<CDB7><C5B6><EFBFBD> g
|
|
|
}
|
|
|
catch(Exception a){
|
|
|
|
|
|
}
|
|
|
}
|
|
|
/*================================================================*/
|
|
|
|
|
|
|
|
|
private static void addPopup(Component component, final JPopupMenu popup) {
|
|
|
component.addMouseListener(new MouseAdapter() {
|
|
|
public void mousePressed(MouseEvent e) {
|
|
|
if (e.isPopupTrigger()) {
|
|
|
showMenu(e);
|
|
|
}
|
|
|
}
|
|
|
public void mouseReleased(MouseEvent e) {
|
|
|
if (e.isPopupTrigger()) {
|
|
|
showMenu(e);
|
|
|
}
|
|
|
}
|
|
|
private void showMenu(MouseEvent e) {
|
|
|
popup.show(e.getComponent(), e.getX(), e.getY());
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
|
|
|
public void cut(){
|
|
|
copy();
|
|
|
//<2F><><EFBFBD>ǿ<EFBFBD>ʼλ<CABC><CEBB>
|
|
|
int start = this.textArea.getSelectionStart();
|
|
|
//<2F><><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD>λ<EFBFBD><CEBB>
|
|
|
int end = this.textArea.getSelectionEnd();
|
|
|
//ɾ<><C9BE><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>
|
|
|
this.textArea.replaceRange("", start, end);
|
|
|
|
|
|
}
|
|
|
|
|
|
public void copy(){
|
|
|
//<2F>϶<EFBFBD>ѡȡ<D1A1>ı<EFBFBD>
|
|
|
String temp = this.textArea.getSelectedText();
|
|
|
//<2F>ѻ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̳<EFBFBD><CCB3>˼<EFBFBD><CBBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
|
|
|
StringSelection text = new StringSelection(temp);
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7>ڼ<EFBFBD><DABC><EFBFBD><EFBFBD><EFBFBD>
|
|
|
this.clipboard.setContents(text, null);
|
|
|
}
|
|
|
|
|
|
public void paste(){
|
|
|
//Transferable<6C>ӿڣ<D3BF><DAA3>Ѽ<EFBFBD><D1BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
Transferable contents = this.clipboard.getContents(this);
|
|
|
//DataFalvor<6F><72><EFBFBD>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7>ܰѼ<DCB0><D1BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
DataFlavor flavor = DataFlavor.stringFlavor;
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
|
|
|
if(contents.isDataFlavorSupported(flavor)){
|
|
|
String str;
|
|
|
try {//<2F><>ʼת<CABC><D7AA>
|
|
|
str=(String)contents.getTransferData(flavor);
|
|
|
//<2F><><EFBFBD><EFBFBD>Ҫճ<D2AA><D5B3>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>һЩ<D2BB>ַ<EFBFBD>
|
|
|
if(this.textArea.getSelectedText()!=null){
|
|
|
//<2F><>λ<EFBFBD><CEBB>ѡ<EFBFBD><D1A1><EFBFBD>ַ<EFBFBD><D6B7>Ŀ<EFBFBD>ʼλ<CABC><CEBB>
|
|
|
int start = this.textArea.getSelectionStart();
|
|
|
//<2F><>λ<EFBFBD><CEBB>ѡ<EFBFBD><D1A1><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ĩβλ<CEB2><CEBB>
|
|
|
int end = this.textArea.getSelectionEnd();
|
|
|
//<2F><>ճ<EFBFBD><D5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>滻<EFBFBD>ɱ<EFBFBD>ѡ<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
this.textArea.replaceRange(str, start, end);
|
|
|
}else{
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TextArea<65><61>λ<EFBFBD><CEBB>
|
|
|
int mouse = this.textArea.getCaretPosition();
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>λ<EFBFBD><CEBB>ճ<EFBFBD><D5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
this.textArea.insert(str, mouse);
|
|
|
}
|
|
|
} catch(UnsupportedFlavorException e) {
|
|
|
e.printStackTrace();
|
|
|
} catch (IOException e) {
|
|
|
e.printStackTrace();
|
|
|
} catch(IllegalArgumentException e){
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public void mySearch() {
|
|
|
final JDialog findDialog = new JDialog(this, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>滻", true);
|
|
|
Container con = findDialog.getContentPane();
|
|
|
con.setLayout(new FlowLayout(FlowLayout.LEFT));
|
|
|
JLabel searchContentLabel = new JLabel("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(N) :");
|
|
|
JLabel replaceContentLabel = new JLabel("<22>滻Ϊ(P)<29><> :");
|
|
|
final JTextField findText = new JTextField(22);
|
|
|
final JTextField replaceText = new JTextField(22);
|
|
|
final JCheckBox matchcase = new JCheckBox("<22><><EFBFBD>ִ<EFBFBD>Сд");
|
|
|
ButtonGroup bGroup = new ButtonGroup();
|
|
|
final JRadioButton up = new JRadioButton("<22><><EFBFBD><EFBFBD>(U)");
|
|
|
final JRadioButton down = new JRadioButton("<22><><EFBFBD><EFBFBD>(D)");
|
|
|
down.setSelected(true);
|
|
|
bGroup.add(up);
|
|
|
bGroup.add(down);
|
|
|
JButton searchNext = new JButton("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>(F)");
|
|
|
JButton replace = new JButton("<22>滻(R)");
|
|
|
final JButton replaceAll = new JButton("ȫ<><C8AB><EFBFBD>滻(A)");
|
|
|
searchNext.setPreferredSize(new Dimension(110, 22));
|
|
|
replace.setPreferredSize(new Dimension(110, 22));
|
|
|
replaceAll.setPreferredSize(new Dimension(110, 22));
|
|
|
// "<22>滻"<22><>ť<EFBFBD><C5A5><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
|
|
|
replace.addActionListener(new ActionListener() {
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
|
|
if (replaceText.getText().length() == 0 && textArea.getSelectedText() != null)
|
|
|
textArea.replaceSelection("");
|
|
|
if (replaceText.getText().length() > 0 && textArea.getSelectedText() != null)
|
|
|
textArea.replaceSelection(replaceText.getText());
|
|
|
}
|
|
|
});
|
|
|
|
|
|
// "<22>滻ȫ<E6BBBB><C8AB>"<22><>ť<EFBFBD><C5A5><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
|
|
|
replaceAll.addActionListener(new ActionListener() {
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
|
|
textArea.setCaretPosition(0); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><C5B5>༭<EFBFBD><E0BCAD><EFBFBD><EFBFBD>ͷ
|
|
|
int a = 0, b = 0, replaceCount = 0;
|
|
|
|
|
|
if (findText.getText().length() == 0) {
|
|
|
JOptionPane.showMessageDialog(findDialog, "<22><><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!", "<22><>ʾ", JOptionPane.WARNING_MESSAGE);
|
|
|
findText.requestFocus(true);
|
|
|
return;
|
|
|
}
|
|
|
while (a > -1) {
|
|
|
|
|
|
int FindStartPos = textArea.getCaretPosition();
|
|
|
String str1, str2, str3, str4, strA, strB;
|
|
|
str1 = textArea.getText();
|
|
|
str2 = str1.toLowerCase();
|
|
|
str3 = findText.getText();
|
|
|
str4 = str3.toLowerCase();
|
|
|
|
|
|
if (matchcase.isSelected()) {
|
|
|
strA = str1;
|
|
|
strB = str3;
|
|
|
} else {
|
|
|
strA = str2;
|
|
|
strB = str4;
|
|
|
}
|
|
|
|
|
|
if (up.isSelected()) {
|
|
|
if (textArea.getSelectedText() == null) {
|
|
|
a = strA.lastIndexOf(strB, FindStartPos - 1);
|
|
|
} else {
|
|
|
a = strA.lastIndexOf(strB, FindStartPos - findText.getText().length() - 1);
|
|
|
}
|
|
|
} else if (down.isSelected()) {
|
|
|
if (textArea.getSelectedText() == null) {
|
|
|
a = strA.indexOf(strB, FindStartPos);
|
|
|
} else {
|
|
|
a = strA.indexOf(strB, FindStartPos - findText.getText().length() + 1);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if (a > -1) {
|
|
|
if (up.isSelected()) {
|
|
|
textArea.setCaretPosition(a);
|
|
|
b = findText.getText().length();
|
|
|
textArea.select(a, a + b);
|
|
|
} else if (down.isSelected()) {
|
|
|
textArea.setCaretPosition(a);
|
|
|
b = findText.getText().length();
|
|
|
textArea.select(a, a + b);
|
|
|
}
|
|
|
} else {
|
|
|
if (replaceCount == 0) {
|
|
|
JOptionPane.showMessageDialog(findDialog, "<22>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD>!", "<22><><EFBFBD>±<EFBFBD>", JOptionPane.INFORMATION_MESSAGE);
|
|
|
} else {
|
|
|
JOptionPane.showMessageDialog(findDialog, "<22>ɹ<EFBFBD><C9B9>滻" + replaceCount + "<22><>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!", "<22>滻<EFBFBD>ɹ<EFBFBD>", JOptionPane.INFORMATION_MESSAGE);
|
|
|
}
|
|
|
}
|
|
|
if (replaceText.getText().length() == 0 && textArea.getSelectedText() != null) {
|
|
|
textArea.replaceSelection("");
|
|
|
replaceCount++;
|
|
|
}
|
|
|
if (replaceText.getText().length() > 0 && textArea.getSelectedText() != null) {
|
|
|
textArea.replaceSelection(replaceText.getText());
|
|
|
replaceCount++;
|
|
|
}
|
|
|
}// end while
|
|
|
}
|
|
|
}); /* "<22>滻ȫ<E6BBBB><C8AB>"<22><>ť<EFBFBD><C5A5><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
|
// "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>"<22><>ť<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
|
|
|
searchNext.addActionListener(new ActionListener() {
|
|
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
int a = 0, b = 0;
|
|
|
int FindStartPos = textArea.getCaretPosition();
|
|
|
String str1, str2, str3, str4, strA, strB;
|
|
|
str1 = textArea.getText();
|
|
|
str2 = str1.toLowerCase();
|
|
|
str3 = findText.getText();
|
|
|
str4 = str3.toLowerCase();
|
|
|
// "<22><><EFBFBD>ִ<EFBFBD>Сд"<22><>CheckBox<6F><78>ѡ<EFBFBD><D1A1>
|
|
|
if (matchcase.isSelected()) {
|
|
|
strA = str1;
|
|
|
strB = str3;
|
|
|
} else {
|
|
|
strA = str2;
|
|
|
strB = str4;
|
|
|
}
|
|
|
|
|
|
if (up.isSelected()) {
|
|
|
if (textArea.getSelectedText() == null) {
|
|
|
a = strA.lastIndexOf(strB, FindStartPos - 1);
|
|
|
} else {
|
|
|
a = strA.lastIndexOf(strB, FindStartPos - findText.getText().length() - 1);
|
|
|
}
|
|
|
} else if (down.isSelected()) {
|
|
|
if (textArea.getSelectedText() == null) {
|
|
|
a = strA.indexOf(strB, FindStartPos);
|
|
|
} else {
|
|
|
a = strA.indexOf(strB, FindStartPos - findText.getText().length() + 1);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
if (a > -1) {
|
|
|
if (up.isSelected()) {
|
|
|
textArea.setCaretPosition(a);
|
|
|
b = findText.getText().length();
|
|
|
textArea.select(a, a + b);
|
|
|
} else if (down.isSelected()) {
|
|
|
textArea.setCaretPosition(a);
|
|
|
b = findText.getText().length();
|
|
|
textArea.select(a, a + b);
|
|
|
}
|
|
|
} else {
|
|
|
JOptionPane.showMessageDialog(null, "<22>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD>!", "<22><><EFBFBD>±<EFBFBD>", JOptionPane.INFORMATION_MESSAGE);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
});/* "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>"<22><>ť<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
// "ȡ<><C8A1>"<22><>ť<EFBFBD><C5A5><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
|
|
|
JButton cancel = new JButton("ȡ<><C8A1>");
|
|
|
cancel.setPreferredSize(new Dimension(110, 22));
|
|
|
cancel.addActionListener(new ActionListener() {
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
findDialog.dispose();
|
|
|
}
|
|
|
});
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>滻"<22>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
|
|
|
JPanel bottomPanel = new JPanel();
|
|
|
JPanel centerPanel = new JPanel();
|
|
|
JPanel topPanel = new JPanel();
|
|
|
|
|
|
JPanel direction = new JPanel();
|
|
|
direction.setBorder(BorderFactory.createTitledBorder("<22><><EFBFBD><EFBFBD> "));
|
|
|
direction.add(up);
|
|
|
direction.add(down);
|
|
|
direction.setPreferredSize(new Dimension(170, 60));
|
|
|
JPanel replacePanel = new JPanel();
|
|
|
replacePanel.setLayout(new GridLayout(2, 1));
|
|
|
replacePanel.add(replace);
|
|
|
replacePanel.add(replaceAll);
|
|
|
|
|
|
topPanel.add(searchContentLabel);
|
|
|
topPanel.add(findText);
|
|
|
topPanel.add(searchNext);
|
|
|
centerPanel.add(replaceContentLabel);
|
|
|
centerPanel.add(replaceText);
|
|
|
centerPanel.add(replacePanel);
|
|
|
bottomPanel.add(matchcase);
|
|
|
bottomPanel.add(direction);
|
|
|
bottomPanel.add(cancel);
|
|
|
|
|
|
con.add(topPanel);
|
|
|
con.add(centerPanel);
|
|
|
con.add(bottomPanel);
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>滻"<22>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD>Ĵ<EFBFBD>С<EFBFBD><D0A1><EFBFBD>ɸ<EFBFBD><C9B8>Ĵ<EFBFBD>С(<28><>)<29><>λ<EFBFBD>úͿɼ<CDBF><C9BC><EFBFBD>
|
|
|
findDialog.setSize(410, 210);
|
|
|
findDialog.setResizable(false);
|
|
|
findDialog.setLocation(230, 280);
|
|
|
findDialog.setVisible(true);
|
|
|
}
|
|
|
|
|
|
} |