简易java文本编辑器 续

本文介绍了一个使用Java Swing构建的简易文本编辑器,该编辑器具备基本的文件操作功能,如打开、保存及另存为等,并实现了文件路径的选择与文件内容的读写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2008</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class Editer extends JFrame implements ActionListener{
    JFrame f;
    JMenuItem menuItemOpen,menuItemSave,menuItemSaveAs,menuItemQuit;
    JTextArea jtTet;
    String directory = "E://";
    String  fileName="未命名.txt";

    public Editer() {
        super();
        setTitle(fileName+"--Editer");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setJMenuBar(createJMenuBar());
        jtTet = new JTextArea(25,40);
        JScrollPane p = new JScrollPane(jtTet);
        getContentPane().add(p);
        setSize(500,500);
        setLocation(200,250);
        setDefaultLookAndFeelDecorated(true);
        setVisible(true);
    }

    public JMenuBar createJMenuBar(){
        JMenuBar file = new JMenuBar();
        JMenu begin = new JMenu("文件");
        menuItemOpen= new JCheckBoxMenuItem("打开");
        begin.add(menuItemOpen);
        menuItemSave = new JCheckBoxMenuItem("保存");
         begin.add(menuItemSave);
         menuItemSaveAs = new JCheckBoxMenuItem("另存为");
         begin.add(menuItemSaveAs);
        menuItemQuit = new JCheckBoxMenuItem("退出");
         begin.add(menuItemQuit);
         menuItemOpen.addActionListener(this);
         menuItemSave.addActionListener(this);
         menuItemSaveAs.addActionListener(this);
         menuItemQuit.addActionListener(this);
         file.add(begin);
         JMenu help = new JMenu("帮助");
         file.add(help);
        return  file;
    }

    //此处加入代码
    //实现将文件内容读取到文本编辑器中

//解决java回车换行问题,防止写入错误
    public void openFile(File openFile){
     try{
       String text ;
       BufferedReader in = new BufferedReader(new FileReader(openFile));
       while((text=in.readLine())!=null){
           jtTet.append(text);
           jtTet.append("/r/n");
            }
            in.close();
        }catch(IOException ex){
                 System.out.println("io exception!");
        }

    }

    //此处加入代码
    //实现将文本编辑器中内容写入到文件中
    public void saveFile(File openFile){
          try{
             // BufferedWriter out = new BufferedWriter(new FileWriter(
             //              openFile));
             FileWriter out = new FileWriter(openFile);
             out.write(jtTet.getText());
              out.close();
                }catch(IOException ex){
                    System.out.println("io exception!");
           }

    }

    public void actionPerformed(ActionEvent e){

        if(e.getSource() == menuItemOpen){

            FileDialog myFileDialog = new FileDialog(this,"打开",FileDialog.LOAD);
            myFileDialog.setLocation(250,250);
            myFileDialog.setDirectory(directory);
            myFileDialog.show();

            directory = myFileDialog.getDirectory();
            fileName = myFileDialog.getFile();
            myFileDialog.dispose();

            jtTet.setText("");

            File openFile = new File(directory,fileName);
            if(! openFile.exists()){
                JOptionPane.showMessageDialog(null,"文件不存在!");
            }
            else
            {
                setTitle(fileName+"--Editer");
                openFile(openFile);

            }
       }
        if(e.getSource() == menuItemSave){

             File openFile = new File(directory,fileName);
             saveFile(openFile);

        }
        if(e.getSource() == menuItemSaveAs){

            FileDialog myFileDialog = new FileDialog(this,"另存为",FileDialog.SAVE);
            myFileDialog.setLocation(250,250);
            myFileDialog.setDirectory(directory);
            myFileDialog.show();

            directory = myFileDialog.getDirectory();
            fileName = myFileDialog.getFile();

            myFileDialog.dispose();

            File openFile = new File(directory,fileName);
            saveFile(openFile);
            setTitle(fileName+"--Editer");

        }

        if(e.getSource() == menuItemQuit){
           System.exit(0);
        }
    }

    public static void main(String[] args) {
       Editer f = new Editer();
    }

package vacc; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.PrintWriter; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.KeyStroke; import javax.swing.filechooser.FileNameExtensionFilter; public class TestNotepad { private JFrame jframe;// 主窗体 JPanel jpanel;// 面板 JMenuBar jmenuBar = new JMenuBar();// 菜单面板 JMenu jmenuFile, jmenuEdit;// 主菜单 JMenuItem jmenuItemOpen, jmenuItemNew, jmenuItemSave, jmenuItemSaveAs, jmenuItemExit;// 菜单中的子菜单 JTextArea jtextArea;// 文本框 JScrollPane jscrollPane;// 带滑动条的 JFileChooser jfileChooser;//文件选择器 File currentFile; public TestNotepad() { // TODO Auto-generated constructor stub jframe = new JFrame("我的记事本"); jpanel = new JPanel(); jmenuBar = new JMenuBar(); jtextArea = new JTextArea(); jtextArea.setLineWrap(true);//置自动换行 jscrollPane = new JScrollPane(jtextArea); jfileChooser = new JFileChooser(); jfileChooser.setFileFilter(new FileNameExtensionFilter("文本文件(*.txt)", "txt")); jmenuFile = new JMenu("文件(F)"); jmenuFile.setMnemonic('F'); jmenuEdit = new JMenu("编辑(E)"); jmenuEdit.setMnemonic('E'); jmenuItemNew = new JMenuItem("新建(N)", 'N'); jmenuItemNew.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_DOWN_MASK)); jmenuItemOpen = new JMenuItem("打开(O)", 'O'); jmenuItemOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_DOWN_MASK)); jmenuItemOpen.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub int res = jfileChooser.showOpenDialog(jframe); if(res == jfileChooser.APPROVE_OPTION) { currentFile = jfileChooser.getSelectedFile(); jtextArea.setText(""); openFile(currentFile); jframe.setTitle(currentFile + "-记事本"); System.out.println("s"); } } }); jmenuItemSave = new JMenuItem("保存(S)", 'S'); jmenuItemSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_DOWN_MASK)); jmenuItemSave.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub saveFile(); } }); jmenuItemSaveAs = new JMenuItem("另存为(A)", 'A'); jmenuItemSaveAs.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub int res = jfileChooser.showSaveDialog(jframe); if(res == jfileChooser.APPROVE_OPTION) { currentFile = jfileChooser.getSelectedFile(); jframe.setTitle(currentFile + "-记事本"); saveFileAs(currentFile, jtextArea.getText().replaceAll("\n", "\r\n")); } } }); jmenuBar.add(jmenuFile); jmenuBar.add(jmenuEdit); jmenuFile.add(jmenuItemNew); jmenuFile.add(jmenuItemOpen); jmenuFile.add(jmenuItemSave); jmenuFile.add(jmenuItemSaveAs); jpanel.setLayout(new BorderLayout(2, 1)); jpanel.add(jmenuBar, "North"); jpanel.add(jscrollPane, "Center"); jframe.add(jpanel); jframe.setSize(500, 500); jframe.setLocationRelativeTo(null); jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jframe.setVisible(true); } public void saveFile() { if(currentFile == null) { int res = jfileChooser.showSaveDialog(jframe); if(res == jfileChooser.APPROVE_OPTION) { currentFile = jfileChooser.getSelectedFile(); jframe.setTitle(currentFile + "-记事本"); } } if(currentFile != null) { saveFileAs(currentFile, jtextArea.getText().replaceAll("\n", "\r\n")); } } public void saveFileAs(File file, String text) { PrintWriter pw = null; try { pw = new PrintWriter(file); pw.write(text); pw.flush(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if(pw != null) { pw.close(); } } } public void openFile(File file) { BufferedReader br = null; try { br = new BufferedReader(new FileReader(file)); String str = br.readLine(); while (str != null) { jtextArea.append(str + "\n"); System.out.println(str); str = br.readLine(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { if(br != null) { br.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public static void main(String[] args) { new TestNotepad(); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值