java做一个简单的文本编辑器

时间:2023-01-26 19:36:48

java做一个简单的文本编辑器

java做一个简单的文本编辑器

java做一个简单的文本编辑器


代码:主框架

package Text;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.*;

public class TextFrame extends JFrame{
	
	public TextFrame()
	{
		super("简易文本编辑器");
		
		//创建菜单栏(JMenuBar)对象
		JMenuBar mBar = new JMenuBar();
		//在JFrame等容器中设置菜单栏对象,即将菜单栏添加到框架容器中
		this.setJMenuBar(mBar);
		
		//创建菜单对象
		JMenu file = new JMenu("文件");
		JMenu edit = new JMenu("编辑");
		JMenu form = new JMenu("格式");
		JMenu help = new JMenu("帮助");
		
		//将菜单添加到菜单栏中
		mBar.add(file);
		mBar.add(edit);
		mBar.add(form);
		mBar.add(help);
	    
		JTextArea workArea = new JTextArea();
	    JScrollPane imgScrollPane = new JScrollPane(workArea); 
	    //add(workArea);
	    add(imgScrollPane,BorderLayout.CENTER);  
	    
	    //定义打开和保存对话框  
	    FileDialog openDia;
		FileDialog saveDia;  
		//默认模式为 FileDialog.LOAD  
        openDia = new FileDialog(this,"打开(O)",FileDialog.LOAD);  
        saveDia = new FileDialog(this,"另存为(A)",FileDialog.SAVE);  
	  
	    
	    JMenuItem item1_1 = new JMenuItem("新建(N)");
	    item1_1.addActionListener(new ActionListener(){
	    	public void actionPerformed(ActionEvent e){
	    		 workArea.setText("");//清空文本 
	    	}
	    });
	    JMenuItem item1_2 = new JMenuItem("打开(O)");
	    item1_2.addActionListener(new ActionListener(){
	    	public void actionPerformed(ActionEvent e){
	    		openDia.setVisible(true);
	    		
	    		String dirPath = openDia.getDirectory();//获取文件路径  
                String fileName = openDia.getFile();//获取文件名称  
                
              //如果打开路径 或 目录为空 则返回空  
                if(dirPath == null || fileName == null){
                	return;
                }
                
                workArea.setText("");//清空文本
                
                File fileO = new File(dirPath,fileName); 
                
                try{
                	BufferedReader bufr = new BufferedReader(new FileReader(fileO));
                	
                	String line = null;
                	
                	while((line = bufr.readLine()) != null){
                		workArea.append(line + "\r\n");
                	}
                	
                	bufr.close(); //关闭文本
                }catch(IOException er1){
                	throw new RuntimeException("文件读取失败!"); 
                }
                
	    	}
	    });
	    JMenuItem item1_3 = new JMenuItem("保存(S)");
	    item1_3.addActionListener(new ActionListener(){
	    	public void actionPerformed(ActionEvent e){
	    		File fileS = null;
	    		if(fileS == null){
	    			saveDia.setVisible(true);  
                    String dirPath = saveDia.getDirectory();  
                    String fileName = saveDia.getFile();  
                    
                    if(dirPath == null || fileName == null)
                    	return;
                    
                    fileS = new File(dirPath,fileName);  
	    		}
	    		
	    		try{
	    			BufferedWriter bufw = new BufferedWriter(new FileWriter(fileS));
	    			String text = workArea.getText();
	    			bufw.write(text);
	    			bufw.close();
	    		}catch(IOException er){
	    			throw new RuntimeException("文件保存失败!"); 
	    		}
	    	}
	    });
	    JMenuItem item1_4 = new JMenuItem("另存为(A)");
	    item1_4.addActionListener(new ActionListener(){
	    	public void actionPerformed(ActionEvent e){
	    		File fileS = null;
	    		if(fileS == null){
	    			saveDia.setVisible(true);  
                    String dirPath = saveDia.getDirectory();  
                    String fileName = saveDia.getFile();  
                    
                    if(dirPath == null || fileName == null)
                    	return;
                    
                    fileS = new File(dirPath,fileName);  
	    		}
	    		
	    		try{
	    			BufferedWriter bufw = new BufferedWriter(new FileWriter(fileS));
	    			String text = workArea.getText();
	    			bufw.write(text);
	    			bufw.close();
	    		}catch(IOException er){
	    			throw new RuntimeException("文件保存失败!"); 
	    		}
	    	}
	    });
	    JMenuItem item1_5 = new JMenuItem("退出(Q)");
	    item1_5.addActionListener(new ActionListener(){
	    	public void actionPerformed(ActionEvent e){
	    		System.exit(0);
	    	}
	    });
	    
	    JMenuItem item2_1 = new JMenuItem("剪切(X)");
	    JMenuItem item2_2 = new JMenuItem("复制(C)");
	    JMenuItem item2_3 = new JMenuItem("粘贴(V)");
	    
	    JRadioButtonMenuItem item3_1 = new JRadioButtonMenuItem("自动换行(W)",false);
	    item3_1.addActionListener(new ActionListener(){
	    	public void actionPerformed(ActionEvent e){
	    		Object source = e.getSource();
	    		
	    		if(source == item3_1)
	    			workArea.setLineWrap(true);    //自动换行
	    		else if(source != item3_1)
	    			workArea.setLineWrap(false);
	    	}
	    });
	    
	    JMenuItem item4_1 = new JMenuItem("查看帮助(H)");
	    item4_1.addActionListener(new ActionListener(){
	    	public void actionPerformed(ActionEvent event){
	    		new LookHelp();
	    	}
	    });
	    JMenuItem item4_2 = new JMenuItem("关于记事本(A)");
	    item4_2.addActionListener(new ActionListener(){
	    	public void actionPerformed(ActionEvent event){
	    		new AboutBook();
	    	}
	    });
	    
	    //在菜单中添加菜单项
	    file.add(item1_1);file.add(item1_2);file.add(item1_3);file.add(item1_4);file.add(item1_5);
	    edit.add(item2_1);edit.add(item2_2);edit.add(item2_3);
	    form.add(item3_1);
	    help.add(item4_1);help.add(item4_2);
	    
	    
	}//构造方法结束	
	
	public static void main(String args[])
	{
		TextFrame app = new TextFrame();
		
		app.setSize(600, 400);
		app.setLocation(200,200);
		app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		app.setVisible(true);
	}

	

}

查看帮助:

package Text;

import javax.swing.*;

import java.awt.*;

public class LookHelp extends JFrame{
	
	public LookHelp(){
		super("查看帮助");
		this.setSize(500, 300);
		this.setLocation(200,300);
		this.setResizable(false);
		this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		this.setVisible(true);
		
		Container c = this.getContentPane();
		c.setLayout(new GridLayout(5,0));
		
		JLabel label1 = new JLabel("1、菜单栏的菜单项可点击来选择功能。");
		JLabel label2 = new JLabel("2、“编辑”里的剪切、复制、粘贴可用快捷键Ctrl + x、Ctrl + c、Ctrl + v实现。");
		JLabel label3 = new JLabel("3、“格式”里的“自动换行”需要点中才可进行自动换行,否则会一直往后写。");
		JLabel label4 = new JLabel("4、菜单栏下面的格式是用来调节文本的字体。");
		JLabel label5 = new JLabel("5、本记事本的缺点是无法改变字体的样式,大小和形态。");
		c.add(label1);c.add(label2);c.add(label3);c.add(label4);c.add(label5);
	}
}



关于记事本:

package Text;

import javax.swing.*;

public class AboutBook extends JFrame{
	public AboutBook(){
		super("关于记事本");
		this.setSize(220, 100);
		this.setLocation(200,300);
		this.setResizable(false);
		this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		this.setVisible(true);
		
		JPanel panel = new JPanel();
		JLabel label = new JLabel("制作者:Kingsely");
		
		panel.add(label);
		this.add(panel);
	}
}