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

📄 editor.java

📁 哈哈
💻 JAVA
字号:
package editor;

import static net.SwingConsole.*;
import javax.swing.*;

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

import javax.swing.JMenuItem;
import java.util.*;

public class Editor extends JFrame {

	private JMenu m1 = new JMenu("文件(F)"), m2 = new JMenu("编辑(E)"),
			m3 = new JMenu("格式(O)"), m4 = new JMenu("查看(V)"), m5 = new JMenu(
					"帮助(H)");

	private JMenuItem[] wenjians = { new JMenuItem("新建(N)"), new JMenuItem("打开(O)"),
			new JMenuItem("保存(S)"), new JMenuItem("另存为(A)"), new JMenuItem("页面设置"),
			new JMenuItem("打印"), new JMenuItem("退出") };

	private JMenuItem[] bianjis = { new JMenuItem("撤销"), new JMenuItem("剪切"),
			new JMenuItem("复制"), new JMenuItem("粘贴"), new JMenuItem("删除"),
			new JMenuItem("查找"), new JMenuItem("查找下一个"), new JMenuItem("替换"),
			new JMenuItem("全选"), new JMenuItem("时间/日期"), };

	private JMenuItem[] geshis = { new JCheckBoxMenuItem("自动换行(未实现)"), new JMenuItem("字体") };

	private JMenuItem[] chakans = { new JMenuItem("状态栏") };

	private JMenuItem[] bangzhus = { new JMenuItem("帮助主题"),
			new JMenuItem("关于编辑器") };

	private JTextArea t = new JTextArea();

	private JMenuBar mb1 = new JMenuBar();
	
	private File open;

	public Editor() {
		for (int i = 0; i < wenjians.length; i++) {
			m1.add(wenjians[i]);
			if (i == 3 || i == 5)
				m1.addSeparator(); // 追加分隔符
		}
		for (int i = 0; i < bianjis.length; i++) {			
			m2.add(bianjis[i]);
			if (i == 0 || i == 4 || i == 7)
				m2.addSeparator(); // 追加分隔符
		}
		for (int i = 0; i < geshis.length; i++) {			
			m3.add(geshis[i]);
		}
		for (int i = 0; i < chakans.length; i++) {			
			m4.add(chakans[i]);
		}
		for (int i = 0; i < bangzhus.length; i++) {			
			m5.add(bangzhus[i]);
			if (i == 0)
				m5.addSeparator(); // 追加分隔符
		}
	
       //新建一个文件
		
		wenjians[0].addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {			        
					run(new Editor(), 800, 600);			
			}
		});
		
		/*******打开功能*********/
		
		wenjians[1].addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {			        
				JFileChooser c = new JFileChooser();				
				int hit = c.showOpenDialog(null);
				if (hit == JFileChooser.APPROVE_OPTION) {				
					try {
						/*****************************************************************
						 * *************************通道尝试失败。。。。******************
						 *****************************************************************/
					/*	RandomAccessFile in = new RandomAccessFile(c.getSelectedFile(),"rw");
						FileChannel channel = in.getChannel();
						int length = (int)channel.size();
						MappedByteBuffer buffer = channel.map(FileChannel.MapMode.READ_WRITE, 0, length);
						byte[] b = new byte[length];					
						while(buffer.hasRemaining()){
								buffer.get(b);						
						}*/
						
						/**********************随机访问文件的读取**************************/
						
						open = c.getSelectedFile(); //获得打开的文件的引用
						RandomAccessFile in = new RandomAccessFile(open,"rw");
						byte[] b = new byte[(int)in.length()];   //缓冲区
						in.read(b);     
						t.setText(new String (b,0,b.length));	//	读出缓冲区的字符
					    in.close();    //关闭流					   
					} catch (IOException ex) {
						return ;
					}
				}				
			}
		});

		/** *******保存功能************ */

		wenjians[2].addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {			        
				JFileChooser c = new JFileChooser();
				if (open == null) {
					int hit = c.showSaveDialog(null);					
					if (hit == JFileChooser.APPROVE_OPTION) {
						try {							
							RandomAccessFile out = new RandomAccessFile(c
									.getSelectedFile(), "rw");
							byte[] b = (t.getText()).getBytes(); // 获得文本,再转换为
																// byte序列,
																// 并将存储到数组中
							out.write(b);
							out.close();
						} catch (IOException ex) {
							return;
						}
					}
				}else{
					try {
						open.delete();	//删除原文件
						RandomAccessFile out = new RandomAccessFile(open, "rw");										
						byte[] b = (t.getText()).getBytes(); // 获得文本,再转换为
																// byte序列,
																// 并将存储到数组中
						out.write(b);     						
					    out.close();					    
					} catch (IOException ex) {
						// TODO 自动生成 catch 块
						return ;
					}
					
				}
				
			}
		});			
				
				
		/****************另存为功能****************/
	
		wenjians[3].addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {			        
				JFileChooser c = new JFileChooser();				
				int hit = c.showSaveDialog(null);
				if (hit == JFileChooser.APPROVE_OPTION) {				
					try {				
						/**********************随机访问文件的存储**************************/
						if(c.getSelectedFile().exists()){    //假如文件已经存在
							if(0==JOptionPane.showConfirmDialog(null,c.getCurrentDirectory().toString()
									+"\\"+c.getSelectedFile().getName()+"已存在。\n要替换它吗?","另存为",
									JOptionPane.YES_NO_OPTION))
								c.getSelectedFile().delete();  //删除原文件
							else return ;            //返回重新操作
						}
						RandomAccessFile out = new RandomAccessFile(c.getSelectedFile(),"rw");
						byte[] b = (t.getText()).getBytes(); //获得文本,再转换为 byte 序列,并将存储到数组中
						out.write(b);     						
					    out.close();    
					} catch (IOException ex) {
						return ;
					}
				}				
			}
		});
		
		/**********退出功能**************/
		
		wenjians[6].addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				dispose();
			}
		});
		
		/********撤销功能********/
		
		bianjis[0].addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				
			}
		});
		
		/********剪切功能********/
		
		bianjis[1].addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				t.cut();
			}
		});
		
		/********复制功能********/
		
		bianjis[2].addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				t.copy();
			}
		});
		
		/********粘贴功能********/
		
		bianjis[3].addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				t.paste();
			}
		});
		
        /********删除功能********/
		
		bianjis[4].addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				t.replaceSelection(null);			
			}
		});
		
        /********自动换行功能********/
		 /*未实现*/
		
		/*geshis[0].addItemListener(new ItemListener(){
			public void actionPerformed(ItemEvent e){
			JCheckBoxMenuItem target = (JCheckBoxMenuItem) e.getSource();
			  t.setWrapStyleWord(target.getState());			
			}

			public void itemStateChanged(ItemEvent e) {
				// TODO 自动生成方法存根
				
			}
		});
		*/
		
		/*********添加按钮到菜单栏************/
		
		mb1.add(m1);
		mb1.add(m2);
		mb1.add(m3);
		mb1.add(m4);
		mb1.add(m5);
		setJMenuBar(mb1);         // 创建菜单栏
		add(new JScrollPane(t)); // 创建文本区域
		m1.setMnemonic(KeyEvent.VK_F); // 快捷键
		m2.setMnemonic(KeyEvent.VK_E); // 快捷键
		m3.setMnemonic(KeyEvent.VK_O); // 快捷键
		m4.setMnemonic(KeyEvent.VK_V); // 快捷键
		m5.setMnemonic(KeyEvent.VK_H); // 快捷键
		
		/*****************加速器*******************/
		
		wenjians[0].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK));
		wenjians[1].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));
		wenjians[2].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));
		wenjians[3].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_MASK));
		
		/*****************禁用菜单*****************/
		
		wenjians[4].setEnabled(false);
		wenjians[5].setEnabled(false);
		bianjis[5].setEnabled(false);
		bianjis[6].setEnabled(false);
		bianjis[7].setEnabled(false);
		bianjis[8].setEnabled(false);
		bianjis[9].setEnabled(false);
		geshis[1].setEnabled(false);
		chakans[0].setEnabled(false);
		bangzhus[0].setEnabled(false);
		bangzhus[1].setEnabled(false);
		

	}	
	public static void main(String[] args) {
		run(new Editor(), 800, 600);
		
	}

}

⌨️ 快捷键说明

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