java实现文本编辑器

     利用swing组件JEditText实现复制,粘贴,剪切功能,JEditText组测MouseListener,实现JPopupMenu右键弹出菜单,依次为JMenuItem,openButton,saveButton注册ActionListener,实现点击事件。

文本编辑器

Word.java:

import javax.swing.*;
import javax.swing.JComponent.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.awt.Component.*;
//文本编辑器,打开.保存.右键复制粘贴剪切功能
//java.awt 与 java.awt.event 不是一个类 
//
public class Word implements MouseListener,ActionListener{
    JFrame frame;
    JPopupMenu popMenu;
    JPanel panel;
    JEditorPane editText;
    JButton openButton;
    JButton saveButton;
    JMenuItem paste;
    JMenuItem copy;
    JMenuItem cut;
    JMenuBar menuBar;
    FileDialog fileDialog; 
    String path;//要保存/打开的文件路径
    String name;//要保存/打开的文件名
//  JMenuItem delete;
    public static void main(String[] args){
        Word word=new Word();
}
//初始化界面
    public Word(){
        frame=new JFrame();
        panel=new JPanel();
        editText=new JEditorPane();
        popMenu=new JPopupMenu();
        Font font=new Font("宋体",Font.BOLD,20);
        openButton=new JButton("open");
        openButton.setFont(font);
        saveButton=new JButton("save");
        saveButton.setFont(font);
        panel.setLayout(null);
        Color color=new Color(191,210,200);
        panel.setBackground(color);
        paste=new JMenuItem("paste");
        copy=new JMenuItem("copy");
        cut=new JMenuItem("cut");
//      delete=new JMenuItem("delete");
//try{
//      String pathString = "/home/zx/邯郸-刘书锋太极体.ttf";
  //              Font editFont = Font.createFont(Font.BOLD, new File(pathString));
//      editText.setFont(editFont);
//}catch(FontFormatException|IOException fe){
//      fe.printStackTrace();
//}     
//      Font editFont=new Font ("宋体",Font.BOLD,20);
        editText.setBackground(color);
        editText.setBounds(0,40,780,760);
        editText.setFont(font);
        editText.addMouseListener(this);
        popMenu.add(paste);
        popMenu.add(copy);
        popMenu.add(cut);
        openButton.addActionListener(this);
        saveButton.addActionListener(this);
//      popMenu.add(delete);
        paste.addActionListener(this);
        cut.addActionListener(this);
        copy.addActionListener(this);
//      delete.addActionListener(this);
    //button 设置大小太小会导致显示不出来文字
        openButton.setBounds(0,10,80,30);
        saveButton.setBounds(700,10,80,30);
        saveButton.setBackground(color);
        openButton.setBackground(color);
        panel.add(editText);
        panel.add(openButton);
        panel.add(saveButton);
        panel.add(popMenu);

        frame.setSize(780,800);
        frame.getContentPane().add(panel);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


}
//粘贴
    public void paste(){
        System.out.println("paste");
        editText.paste();
}
//复制
    public void copy(){
        System.out.println("copy");
        editText.copy();
}
//剪切
    public void cut(){
        System.out.println("cut");
        editText.cut();

}
//打开文件
    public void open(){
        System.out.println("Open file!");
        fileDialog=new FileDialog(frame,"打开文件",FileDialog.LOAD);
        fileDialog.setVisible(true);
        path=fileDialog.getDirectory();
        name=fileDialog.getFile();
        read();
}
//保存文件
    public void save(){
        System.out.println("Save File!");
        fileDialog=new FileDialog(frame,"保存文件",FileDialog.SAVE);
        fileDialog.setVisible(true);
        path=fileDialog.getDirectory();
        name=fileDialog.getFile();
        write();

}
//读文件
    public void read(){
        try{
            File read=new File(path,name);
            BufferedReader reader=new BufferedReader(new FileReader(read));
            //string 类无append()方法
            StringBuilder builder=new StringBuilder();
            String line;
            while((line=reader.readLine())!=null){
                builder.append(line+"\n");
                System.out.println(line);
}
            editText.setText(builder.toString());
            reader.close();//File类无close()
}catch(IOException e){
    e.printStackTrace();
//作用域到括号截至  read 找不到
//  read.close();
}

}
//写文件
    public void write(){
        try{
        File writeFile=new File(path,name);
        BufferedWriter write=new BufferedWriter(new FileWriter(writeFile));
        write.write(editText.getText());
        write.close();
}catch(IOException e){
        e.printStackTrace();
//      writeFile.close();
}

}
//鼠标点击事件
    public void mouseClicked(MouseEvent e){}
    public void mouseEntered(MouseEvent e){}
    public void mouseExited(MouseEvent e){}
    public void mousePressed(MouseEvent e){
        if(e.getButton()==MouseEvent.BUTTON3)
            popMenu.show(e.getComponent(),e.getX(),e.getY());
}
    public void mouseReleased(MouseEvent e){}
//MouseEvent 有什么方法可以返回调用组件的String 或代号?
//用ActionEvent的话不能屏蔽右键选择    
//  class SpecialListener implements MouseListener{
        public void actionPerformed(ActionEvent e){
            System.out.println("我要开始比较啦!");
    //      if(e.getButton()==MouseEvent.BUTTON3){
                String which=e.getActionCommand();
                switch(which){
                    case "paste":
                        paste();
                        break;
                    case "copy":
                        copy();
                        break;
                    case "cut":
                        cut();
                        break;
                    case "open":
                        open();
                        break;
                    case "save":
                        save();

}
}

}
后续功能:改变字体,插入图片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值