文件的打开保存另存为功能代码实现

(效果图)

import java.awt.BorderLayout;
public class NotePad
{
    private JFrame jf;
    
    private JMenuBar menu;
    
    private JMenuItem open;
   

public class NotePad
{
    private JFrame jf;
    
    private JMenuBar menu;
    
    private JMenuItem open;
   

    private JMenuItem save;
    
    private JMenuItem saveAs;
    
    private JMenu file;
    
    private JMenu help;
    
    private JMenuItem about;
    
    private JTextArea textArea;
    
    private String filePath;
    
    public void show()

    {
        init();
        setStyle();
        registHandler();
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setVisible(true);
    }
    //表单控件初始化
    private void init()
    {
        jf = new JFrame();
        
        menu = new JMenuBar();

        
        open = new JMenuItem("打开");
        
        save = new JMenuItem("保存");
        
        saveAs = new JMenuItem("另存为");
       

        file = new JMenu("文件");
        
        help = new JMenu("帮助");
        
        about = new JMenuItem("关于");
        
        textArea = new JTextArea();
    }
    //表单控件的添加
    private void setStyle()
    {
        jf.setSize(600, 600);
        menu.add(file);

        menu.add(help);
        
        file.add(open);
        file.add(save);

        file.add(saveAs);
        help.add(about);
        
        jf.add(menu, BorderLayout.NORTH);
        JScrollPane jsp = new JScrollPane(textArea);
        jf.add(jsp);
    }

    

交互事件

    private void registHandler()
    {   //给打开按钮添加事件监听(方法实现)
        open.addActionListener(new ActionListener()
        {
            
            @Override
            public void actionPerformed(ActionEvent e)
            {
                FileDialog fd = new FileDialog(jf);
                fd.setVisible(true);
                if (fd.getFile() != null)
                {
                    filePath = fd.getDirectory() + fd.getFile();
                    BufferedReader br = null;
                    try
                    {
                        br = new BufferedReader(new InputStreamReader(new FileInputStream(filePath)));
                        String line = null;
                        while ((line = br.readLine()) != null)
                        {
                            textArea.append(line + "\n");
                        }
                    }
                    catch (Exception e2)
                    {
                        e2.printStackTrace();
                    }
                    finally
                    {
                        if (br != null)
                        {
                            try
                            {
                                br.close();
                            }
                            catch (IOException e1)
                            {
                                e1.printStackTrace();
                            }
                        }
                    }
                    
                }
            }
        });
        //给保存按钮添加事件监听(方法实现)
        save.addActionListener(new ActionListener()
        {
            
            @Override
            public void actionPerformed(ActionEvent e)
            {
                // 如果filePath为null
                save(false);
            }
        });
          //给另存为按钮添加事件监听(方法实现)
        saveAs.addActionListener(new ActionListener()
        {
            
            @Override
            public void actionPerformed(ActionEvent e)
            {
                save(true);
            }
        });
    }
    
    private void save(boolean isSaveAs)
    {
        while(filePath == null || isSaveAs)
        {
            FileDialog fd = new FileDialog(jf);
            fd.setVisible(true);
            if(fd.getFile()==null)
            {
                continue;
            }
            filePath = fd.getDirectory() + fd.getFile();
        }
        PrintWriter pw = null;
        try
        {
            pw = new PrintWriter(filePath);
            pw.println(textArea.getText());
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }finally{
            if(pw != null)
            {
                pw.close();
            }
        }
        
        
    }
    //主函数调用菜单界面
    public static void main(String[] args)
    {
        new NotePad().show();
        
    }
}
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的记事本 Java 代码实现了新建、打开保存另存为和退出功能: ```java import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.UIManager; import javax.swing.filechooser.FileNameExtensionFilter; public class Notepad extends JFrame implements ActionListener { private static final long serialVersionUID = 1L; private JTextArea textArea; private JFileChooser fileChooser; private String fileName; public Notepad() { super("记事本"); // 设置菜单栏 JMenuBar menuBar = new JMenuBar(); JMenu fileMenu = new JMenu("文件"); JMenuItem newMenuItem = new JMenuItem("新建"); JMenuItem openMenuItem = new JMenuItem("打开"); JMenuItem saveMenuItem = new JMenuItem("保存"); JMenuItem saveAsMenuItem = new JMenuItem("另存为"); JMenuItem exitMenuItem = new JMenuItem("退出"); newMenuItem.addActionListener(this); openMenuItem.addActionListener(this); saveMenuItem.addActionListener(this); saveAsMenuItem.addActionListener(this); exitMenuItem.addActionListener(this); fileMenu.add(newMenuItem); fileMenu.add(openMenuItem); fileMenu.add(saveMenuItem); fileMenu.add(saveAsMenuItem); fileMenu.addSeparator(); fileMenu.add(exitMenuItem); menuBar.add(fileMenu); setJMenuBar(menuBar); // 设置文本区域 textArea = new JTextArea(); JScrollPane scrollPane = new JScrollPane(textArea); getContentPane().add(scrollPane, BorderLayout.CENTER); // 设置文件选择器 fileChooser = new JFileChooser(); fileChooser.setFileFilter(new FileNameExtensionFilter("文本文件(*.txt)", "txt")); // 设置窗口 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(800, 600); setLocationRelativeTo(null); setVisible(true); } public static void main(String[] args) { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { e.printStackTrace(); } new Notepad(); } @Override public void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); switch (command) { case "新建": newFile(); break; case "打开": openFile(); break; case "保存": saveFile(); break; case "另存为": saveAsFile(); break; case "退出": exit(); break; } } // 新建文件 private void newFile() { if (textArea.getText().length() > 0) { int option = JOptionPane.showConfirmDialog(this, "是否保存更改?", "记事本", JOptionPane.YES_NO_CANCEL_OPTION); if (option == JOptionPane.YES_OPTION) { saveFile(); } else if (option == JOptionPane.CANCEL_OPTION) { return; } } textArea.setText(""); fileName = null; } // 打开文件 private void openFile() { if (textArea.getText().length() > 0) { int option = JOptionPane.showConfirmDialog(this, "是否保存更改?", "记事本", JOptionPane.YES_NO_CANCEL_OPTION); if (option == JOptionPane.YES_OPTION) { saveFile(); } else if (option == JOptionPane.CANCEL_OPTION) { return; } } int result = fileChooser.showOpenDialog(this); if (result == JFileChooser.APPROVE_OPTION) { try { File file = fileChooser.getSelectedFile(); fileName = file.getAbsolutePath(); BufferedReader reader = new BufferedReader(new FileReader(file)); String line = null; StringBuilder sb = new StringBuilder(); while ((line = reader.readLine()) != null) { sb.append(line); sb.append(System.lineSeparator()); } reader.close(); textArea.setText(sb.toString()); } catch (Exception e) { e.printStackTrace(); } } } // 保存文件 private void saveFile() { if (fileName == null) { saveAsFile(); } else { try { BufferedWriter writer = new BufferedWriter(new FileWriter(fileName)); writer.write(textArea.getText()); writer.close(); } catch (Exception e) { e.printStackTrace(); } } } // 另存为文件 private void saveAsFile() { int result = fileChooser.showSaveDialog(this); if (result == JFileChooser.APPROVE_OPTION) { try { File file = fileChooser.getSelectedFile(); if (!file.getName().endsWith(".txt")) { file = new File(file.getAbsolutePath() + ".txt"); } fileName = file.getAbsolutePath(); BufferedWriter writer = new BufferedWriter(new FileWriter(file)); writer.write(textArea.getText()); writer.close(); } catch (Exception e) { e.printStackTrace(); } } } // 退出程序 private void exit() { if (textArea.getText().length() > 0) { int option = JOptionPane.showConfirmDialog(this, "是否保存更改?", "记事本", JOptionPane.YES_NO_CANCEL_OPTION); if (option == JOptionPane.YES_OPTION) { saveFile(); } else if (option == JOptionPane.CANCEL_OPTION) { return; } } System.exit(0); } } ``` 该记事本实现了新建、打开保存另存为和退出功能,可以选择文本文件进行编辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值