⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 minieditor.java

📁 这是一个很厉害的JAVA程序
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
package application;

import java.awt.*; 
import java.awt.event.*; 
import java.io.*; 

import javax.swing.*; 
import javax.swing.event.*; 
import javax.swing.text.*; 
import javax.swing.undo.*; 

public class MiniEditor extends JFrame implements ActionListener, 
CaretListener, 
DocumentListener, 
KeyListener 
{ 
	JMenuItem menuFileNew, menuFileOpen, menuFileClose,menuFileSave, menuFileSaveAs,menuFilePrint, menuFilePrintSetup,menuFileExit, 
	menuEditUndo, menuEditRedo,menuEditCut, menuEditCopy, menuEditPaste,menuEditDeleteSelection, menuEditDeleteLine, menuEditDeleteWord, 
	menuEditFind, menuEditReplace, menuEditGoTo, menuEditSelectAll, 
	menuViewFont, menuViewColor,menuViewDoubleSpace, 
	menuHelpAbout; 
	JCheckBoxMenuItem menuViewClassic, menuViewStatus, menuViewWordWrap; 
	PrintableTextArea ta; 
	TextField tfs, tfro, tfrn; 
	Label fileStatus, statusRow, statusCol, statusMode, statusSize; 
	Button bs, brf, brr, brra; 
	JFrame fr; 
	JDialog dl; 
	String fns; 
	Color defaultForeground, defaultBackground, defaultCaretColor; 
	Font defaultFont = new Font("Courier", Font.PLAIN,12); 
	Checkbox dsLoop, dsMatchCase, drMatchCase; 
	JLabel dsMessage2; 
	
	protected UndoManager undo = new UndoManager(); 
	protected UndoableEditListener undoHandler = new UndoHandler(); 
	
	static int foundCount = 0; 
	int FindStartPos = 0; 
	boolean findingLoop = true; 
	boolean beginTextListener, isNewFile; 
	boolean INSERTMODE = true; 
	boolean BACKSPACE = false; 
	
	public static void main(String[] args){ 
		try { 
//			UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel"); 
//			UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel"); 
			UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); 
		} catch(Exception e) { 
		} 
//		Locale.setDefault(Locale.CHINA); 
//		Locale.setDefault(new Locale("zh", "CN")); 
		MiniEditor me = new MiniEditor(); 
		me.windowLayout(); 
	} 
	
	public void windowLayout(){ 
		JFrame fr = new JFrame("MiniEditor"); 
		fr.getContentPane().setLayout(new BorderLayout(5, 5)); 
		JPanel p = new JPanel(); 
		fileStatus = new Label("file status: "); 
		statusRow = new Label("row: "); 
		statusCol = new Label("col: "); 
		statusMode = new Label("mode: "); 
		statusSize = new Label("size: "); 
		ta = new PrintableTextArea(20, 50); 
		ta.setCursor(new Cursor(Cursor.HAND_CURSOR)); 
		ta.setFont(defaultFont); 
		defaultForeground = ta.getForeground(); 
		defaultBackground = ta.getBackground(); 
		defaultCaretColor = ta.getCaretColor(); 
		ta.setWrapStyleWord(true); 
		ta.getDocument().addDocumentListener(this); 
		ta.addCaretListener(this); 
		ta.addKeyListener(this); 
		ta.getDocument().addUndoableEditListener(undoHandler); 
		JScrollPane scroller = new JScrollPane(); 
		JViewport port = scroller.getViewport(); 
		port.add(ta); 
		fr.getContentPane().add("Center",scroller); 
		fr.getContentPane().add("South",p); 
		p.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 0)); 
		p.add(fileStatus); 
		p.add(statusRow); 
		p.add(statusCol); 
		p.add(statusMode); 
		p.add(statusSize); 
		
		JMenuBar mb = new JMenuBar(); 
		
		JMenu menuFile = new JMenu("File", true); 
//		menuFile.setMnemonic(?F?); 
		
		menuFileNew = new JMenuItem("New", 'N'); 
		menuFileNew.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK)); 
		menuFileNew.addActionListener(this); 
		
		menuFileOpen = new JMenuItem("Open...", 'O'); 
		menuFileOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK)); 
		menuFileOpen.addActionListener(this); 
		
		menuFileClose = new JMenuItem("Close", 'C'); 
		menuFileClose.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4, InputEvent.CTRL_MASK)); 
		menuFileClose.addActionListener(this); 
		
		menuFileSave = new JMenuItem("Save", 'S'); 
		menuFileSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK)); 
		menuFileSave.addActionListener(this); 
		
		
		menuFileSaveAs = new JMenuItem("Save As...", 'A'); 
		menuFileSaveAs.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F12, 0)); 
		menuFileSaveAs.addActionListener(this); 
		
		
		menuFilePrint = new JMenuItem("Print", 'P'); 
		menuFilePrint.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, InputEvent.CTRL_MASK)); 
		menuFilePrint.addActionListener(this); 
//		menuFilePrint.setEnabled(false); 
		
//		menuFilePrintSetup = new JMenuItem("Print Setup..."); 
//		menuFilePrintSetup.addActionListener(this); 
//		menuFilePrintSetup.setMnemonic(?u?); 
//		menuFilePrintSetup.setEnabled(false); 
		
		menuFileExit = new JMenuItem("Exit", 'x'); 
		menuFileExit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_MASK)); 
		menuFileExit.addActionListener(this); 
		
		JMenu menuEdit = new JMenu("Edit", true); 
		
		menuEditUndo = new JMenuItem("Undo"); 
		menuEditUndo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.CTRL_MASK)); 
		menuEditUndo.addActionListener(this); 
		menuEditUndo.setEnabled(false); 
		
//		menuEditRedo = new JMenuItem("Redo"); 
//		menuEditRedo.addActionListener(this); 
//		menuEditRedo.setEnabled(false); 
		
		menuEditCut = new JMenuItem("Cut", 't'); 
		menuEditCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_MASK)); 
		menuEditCut.addActionListener(this); 
		
		menuEditCopy = new JMenuItem("Copy", 'C'); 
		menuEditCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK)); 
		menuEditCopy.addActionListener(this); 
		
		menuEditPaste = new JMenuItem("Paste", 'P'); 
		menuEditPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK)); 
		menuEditPaste.addActionListener(this); 
		
		JMenu menuEditDelete = new JMenu("Delete"); 
		menuEditDelete.setMnemonic('D'); 
		
		menuEditDeleteSelection = new JMenuItem("Selection", 'S'); 
		menuEditDeleteSelection.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0)); 
		menuEditDeleteSelection.addActionListener(this); 
		
		menuEditDeleteLine = new JMenuItem("Line", 'L'); 
		menuEditDeleteLine.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y, InputEvent.CTRL_MASK)); 
		menuEditDeleteLine.addActionListener(this); 
		
		menuEditDeleteWord = new JMenuItem("Word", 'W'); 
		menuEditDeleteWord.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D, InputEvent.CTRL_MASK)); 
		menuEditDeleteWord.addActionListener(this); 
		
		menuEditFind = new JMenuItem("Find...", 'F'); 
		menuEditFind.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_MASK)); 
		menuEditFind.addActionListener(this); 
		
		menuEditReplace = new JMenuItem("Replace...", 'R'); 
		menuEditReplace.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H, InputEvent.CTRL_MASK)); 
		menuEditReplace.addActionListener(this); 
//		menuEditReplace.setEnabled(false); 
		
		menuEditGoTo = new JMenuItem("Go To...", 'G'); 
		menuEditGoTo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, InputEvent.CTRL_MASK)); 
		menuEditGoTo.addActionListener(this); 
		
		menuEditSelectAll = new JMenuItem("Select All", 'A'); 
		menuEditSelectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_MASK)); 
		menuEditSelectAll.addActionListener(this); 
		
		JMenu menuView = new JMenu("View", true); 
		
		menuViewFont = new JMenuItem("Font...", 'F'); 
		menuViewFont.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_MASK + InputEvent.ALT_MASK)); 
		menuViewFont.addActionListener(this); 
		
		menuViewColor = new JMenuItem("Color...", 'C'); 
		menuViewColor.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK + InputEvent.ALT_MASK)); 
		menuViewColor.addActionListener(this); 
		
		menuViewClassic = new JCheckBoxMenuItem("Classic"); 
		menuViewClassic.setMnemonic('l'); 
		menuViewClassic.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L, InputEvent.CTRL_MASK + InputEvent.ALT_MASK)); 
		menuViewClassic.setState(false); 
		menuViewClassic.addActionListener(this); 
		
		menuViewStatus = new JCheckBoxMenuItem("Status"); 
		menuViewStatus.setMnemonic('S'); 
		menuViewStatus.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK + InputEvent.ALT_MASK)); 
		menuViewStatus.setState(true); 
		menuViewStatus.addActionListener(this); 
		
		menuViewWordWrap = new JCheckBoxMenuItem("Word Wrap"); 
		menuViewWordWrap.setMnemonic('W'); 
		menuViewWordWrap.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, InputEvent.CTRL_MASK + InputEvent.ALT_MASK)); 
		menuViewWordWrap.setState(false); 
		menuViewWordWrap.addActionListener(this); 
		
		menuViewDoubleSpace = new JMenuItem("Double Space", 'D'); 
		menuViewDoubleSpace.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D, InputEvent.CTRL_MASK + InputEvent.ALT_MASK)); 
		menuViewDoubleSpace.addActionListener(this); 
		
		JMenu menuHelp = new JMenu("Help", true); 
		
		menuHelpAbout = new JMenuItem("About", 'A'); 
		menuHelpAbout.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0)); 
		menuHelpAbout.addActionListener(this); 
		
		fr.setJMenuBar(mb); 
		mb.add(menuFile); 
		menuFile.add(menuFileNew); 
		menuFile.add(menuFileOpen); 
		menuFile.add(menuFileClose); 
		menuFile.addSeparator(); 
		menuFile.add(menuFileSave); 
		menuFile.add(menuFileSaveAs); 
		menuFile.addSeparator(); 
		menuFile.add(menuFilePrint); 
//		menuFile.add(menuFilePrintSetup); 
		menuFile.addSeparator(); 
		menuFile.add(menuFileExit); 
		mb.add(menuEdit); 
		menuEdit.add(menuEditUndo); 
//		menuEdit.add(menuEditRedo); 
		menuEdit.addSeparator(); 
		menuEdit.add(menuEditCut); 
		menuEdit.add(menuEditCopy); 
		menuEdit.add(menuEditPaste); 
		menuEdit.add(menuEditDelete); 
		menuEditDelete.add(menuEditDeleteSelection); 
		menuEditDelete.add(menuEditDeleteLine); 
		menuEditDelete.add(menuEditDeleteWord); 
		menuEdit.addSeparator(); 
		menuEdit.add(menuEditFind); 
		menuEdit.add(menuEditReplace); 
		menuEdit.add(menuEditGoTo); 
		menuEdit.addSeparator(); 
		menuEdit.add(menuEditSelectAll); 
		mb.add(menuView); 
		menuView.add(menuViewFont); 
		menuView.add(menuViewColor); 
		menuView.addSeparator(); 
		menuView.add(menuViewClassic); 
		menuView.add(menuViewStatus); 
		menuView.add(menuViewWordWrap); 
		menuView.addSeparator(); 
		menuView.add(menuViewDoubleSpace); 
		mb.add(menuHelp); 
		menuHelp.add(menuHelpAbout); 
		fr.addWindowListener(new WindowAdapter() { 
			public void windowClosing(WindowEvent e) { 
				System.exit(0); 
			} 
		}); 
		fr.setSize(600,420); 
		fr.setVisible(true); 
	} 
	
//	ActionListener 
	public void actionPerformed(ActionEvent ae) { 
		if(ae.getSource() == menuFileNew) { 
			ta.replaceRange("", 0, ta.getText().length()); 
			fns = null; 
			fileStatus.setText("New File"); 
			undo.discardAllEdits(); 
			menuEditUndo.setEnabled(false); 
		} 
		else if(ae.getSource() == menuFileOpen) { 
			String s = null; 
			StringBuffer strPool = new StringBuffer(); 
			Frame openFileFrame = new Frame("Open file"); 
			FileDialog fileDialog = new FileDialog(openFileFrame); 
			fileDialog.setMode(FileDialog.LOAD); 
			fileDialog.setFile("*.txt;*.java"); 
			fileDialog.show(); 
			String file = fileDialog.getFile(); 
			String directory = fileDialog.getDirectory(); 
			if(file != null) { 
				fns = directory + file; 
				ta.replaceRange("", 0, ta.getText().length()); 
				BufferedReader br; 
				try{ 
					br = new BufferedReader(new FileReader(fns)); 
					s = br.readLine(); 
					while(s != null) { 
						strPool.append(s + '\15' + '\12');//+0D+0A 
						s = br.readLine(); 
					} 
					br.close(); 
					ta.setText(strPool.toString()); 
				} catch(IOException e) { 
				} 
				fileStatus.setText("file opened."); 
				isNewFile = true; 
				undo.discardAllEdits(); 
				menuEditUndo.setEnabled(false); 
			} 
		} 
		else if(ae.getSource() == menuFileClose) { 
			ta.replaceRange("", 0, ta.getText().length()); 
			fileStatus.setText("file closed without save"); 
			undo.discardAllEdits(); 
			menuEditUndo.setEnabled(false); 
			fns = null; 
		} 
		else if(ae.getSource() == menuFilePrint) { 
			JOptionPane.showMessageDialog(null, "TODO... Only the FIRST page now.", "Print", 1); 
			ta.printIt(ta.getText(), ta.getFont()); 
//			todo... 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -