java - 求救..为什么我模仿别人的代码,差不多完全一样的....但是为什么我点保存然后有相同文件的时候,它不会自己另存为??
怪我咯
怪我咯 2017-04-17 11:03:26
[Java讨论组]
rt java.awt.Font;
import java.awt.Container;
import java.awt.BorderLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.InputEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import java.io.IOException;
import java.io.BufferedWriter;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.FileReader;

import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JMenuBar;
import javax.swing.JPopupMenu;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.KeyStroke;
public class TextBook extends JFrame
{
    private JMenu fileMenu;//文件菜单
    private JMenuItem openItem;
    private JMenuItem saveItem;
    private JMenuItem saveAsItem;
    private JMenuItem exitItem;

    private JMenu editMenu;//编辑菜单
    private JMenuItem cutItem;
    private JMenuItem copyItem;
    private JMenuItem pasteItem;

    private JMenu styleMenu;//格式菜单
    private JMenuItem wrapItem;
    private boolean iswrap;
    private String wrap1="自动换行  ●",wrap2="自动换行  ○";
    private String wrapLabel;
    private JMenuItem FontItem;

    private JMenu aboutMenu;//关于菜单
    private JMenuItem aboutItem;

    private JMenuBar bar;//菜单栏
    private JFileChooser fileChooser;//文件选择器
    private JPopupMenu popupMenu;//右键的菜单
    private JTextArea textArea;//文本区
    private boolean isChange;//跟踪是否有所改变
    private TextBookStyleChooser tc;

    public TextBook()//初始化
    {
        super("新建文件");
        setComponent();
        setListener();
        setVisible(true);
        setSize(640,480);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public void setComponent()
    {   
        //文件菜单
        fileMenu = new JMenu("文件");
        openItem = new JMenuItem("打开");
        openItem.setAccelerator(KeyStroke.getKeyStroke(
                KeyEvent.VK_N,InputEvent.CTRL_MASK));
        saveItem = new JMenuItem("保存");
        saveItem.setAccelerator(KeyStroke.getKeyStroke(
                KeyEvent.VK_S,InputEvent.CTRL_MASK));
        saveAsItem = new JMenuItem("另存为");
        exitItem = new JMenuItem("退出");
        exitItem.setAccelerator(KeyStroke.getKeyStroke(
                KeyEvent.VK_O,InputEvent.CTRL_MASK));

        fileMenu.add(openItem);
        fileMenu.addSeparator();
        fileMenu.add(saveItem);
        fileMenu.add(saveAsItem);
        fileMenu.addSeparator();
        fileMenu.add(exitItem);

        //编辑菜单
        editMenu = new JMenu("编辑");
        cutItem = new JMenuItem("剪切");
        copyItem = new JMenuItem("复制");
        pasteItem = new JMenuItem("粘贴");
        cutItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
        copyItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
        pasteItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));

        editMenu.add(cutItem);
        editMenu.add(copyItem);
        editMenu.add(pasteItem);

        //格式菜单
        styleMenu = new JMenu("格式");
        wrapItem = new JMenuItem(wrapLabel);
        FontItem = new JMenuItem("字体");
        styleMenu.add(wrapItem);
        styleMenu.add(FontItem);

        //关于
        aboutMenu = new JMenu("关于");
        aboutItem = new JMenuItem("关于");
        aboutMenu.add(aboutItem);

        bar = new JMenuBar();
        bar.add(fileMenu);
        bar.add(editMenu);
        bar.add(styleMenu);
        bar.add(aboutMenu);
        setJMenuBar(bar);

        textArea = new JTextArea();
        textArea.setFont(new Font("宋体",Font.PLAIN,16));
        textArea.setLineWrap(iswrap);
        JScrollPane pane = new JScrollPane(textArea,JScrollPane.VERTICAL_SCROLLBAR_NEVER,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        Container contentPane = getContentPane();
        contentPane.add(pane,BorderLayout.CENTER);
        tc=new TextBookStyleChooser();

        popupMenu = editMenu.getPopupMenu();
        fileChooser = new JFileChooser();
    }

    private void setListener()
    {
        addWindowListener(
                new WindowAdapter()
                {
                    public void windowClosing(WindowEvent e)
                    {
                        exit();
                    }
                });

        openItem.addActionListener(
                new ActionListener()
                {
                    public void actionPerformed(ActionEvent e)
                    {
                        openFile();
                    }
                });

        saveItem.addActionListener(
                new ActionListener()
                {
                    public void actionPerformed(ActionEvent e)
                    {
                        saveFile();
                    }
                });

        saveAsItem.addActionListener(
                new ActionListener()
                {
                    public void actionPerformed(ActionEvent e)
                    {
                        saveAsFile();
                    }
                });

        exitItem.addActionListener(
                new ActionListener()
                {
                    public void actionPerformed(ActionEvent e)
                    {
                        exit();
                    }
                });

        cutItem.addActionListener(
                new ActionListener()
                {
                    public void actionPerformed(ActionEvent e)
                    {
                        cut();
                    }
                });

        copyItem.addActionListener(
                new ActionListener()
                {
                    public void actionPerformed(ActionEvent e)
                    {
                        copy();
                    }
                });

        pasteItem.addActionListener(
                new ActionListener()
                {
                    public void actionPerformed(ActionEvent e)
                    {
                        paste();
                    }
                });

        aboutItem.addActionListener(
                new ActionListener()
                {
                    public void actionPerformed(ActionEvent e)
                    {
                        JOptionPane.showMessageDialog(null,"haha");
                    }
                }
                );

        textArea.addKeyListener(
                new KeyAdapter()
                {
                    public void keyTyped(KeyEvent e)
                    {
                        isChange=true;
                    }
                }
                );

        textArea.addMouseListener(
                new MouseAdapter()
                {
                    public void mouseReleased(MouseEvent e)
                    {
                        if(e.getButton()==MouseEvent.BUTTON3)
                            popupMenu.show(editMenu,e.getX(),e.getY());
                    }
                    public void mouseClicked(MouseEvent e)
                    {
                        if(e.getButton()==MouseEvent.BUTTON1)
                            popupMenu.setVisible(false);
                    }
                });

        wrapItem.addMouseListener(
                new MouseAdapter()
                {
                    public void mouseClicked(MouseEvent e)
                    {
                        if(wrapLabel==wrap1)
                        {
                            wrapLabel=wrap2;
                            iswrap=true;
                        }
                        else
                        {
                            wrapLabel=wrap1;
                            iswrap=false;
                        }
                    }
                });

        FontItem.addActionListener(
                new ActionListener()
                {
                    public void actionPerformed(ActionEvent e)
                    {
                        tc.setVisible(true);
                    }
                });
    }

    private void openFile()
    {
        if(isChange)
        {
            int option = JOptionPane.showConfirmDialog(null,
                    "已被修改,是否保存?","是否保存?",JOptionPane.YES_NO_OPTION,
                    JOptionPane.WARNING_MESSAGE,null);
            switch(option)
            {
            case JOptionPane.YES_OPTION:
                saveFile();
                break;
            case JOptionPane.NO_OPTION:
                open();
                break;
            }
        }
        else
            open();
    }

    private void open()
    {
        int option = fileChooser.showDialog(null, null);
        if(option == JFileChooser.APPROVE_OPTION)
        {
            try
            {
                BufferedReader buf = 
                        new BufferedReader(
                                new FileReader(
                                        fileChooser.getSelectedFile()));
                setTitle(fileChooser.getSelectedFile().toString());
                textArea.setText("");
                String text;
                isChange=false;
                String lineSeparator =System.getProperty("line.separator");
                while((text=buf.readLine())!=null)
                {
                    textArea.append(text);
                    textArea.append(lineSeparator);
                }
                buf.close();

            }catch(IOException e)
            {
                JOptionPane.showMessageDialog(null, "文件开启错误","错误",JOptionPane.ERROR_MESSAGE);
            }
        }
    }

    public void saveFile()
    {
        File file = new File(getTitle());

        if(!file.exists())
        {
            saveAsFile();
        }
        else
        {
            try
            {
                BufferedWriter buf = 
                        new BufferedWriter(
                                new FileWriter(file));
                //将文本区写入文件
                buf.write(textArea.getText());
                buf.close();
                isChange = false;

            }catch(IOException e)
            {
                JOptionPane.showMessageDialog(null, "文件保存错误","文件保存错误",
                        JOptionPane.ERROR_MESSAGE);
            }
        }
    }

    private void saveAsFile()
    {
        int option = fileChooser.showSaveDialog(null);

        if(option == JFileChooser.APPROVE_OPTION)
        {
            File file = fileChooser.getSelectedFile();
            setTitle(file.toString());
            try
            {
                //建立文件
                file.createNewFile();
                //选择文件保存
                saveFile();
            }catch(IOException e)
            {
                JOptionPane.showMessageDialog(null,"文件存储错误","错误",
                        JOptionPane.ERROR_MESSAGE);
            }
        }
    }

    private void exit()
    {
        if(isChange)
        {
            int option = JOptionPane.showConfirmDialog(
                    null, "已经修改,是否保存","是否保存?",
                    JOptionPane.YES_NO_OPTION,
                    JOptionPane.WARNING_MESSAGE,null);

            switch(option)
            {
            case JOptionPane.YES_OPTION:
                saveFile();
                break;
            case JOptionPane.NO_OPTION:
                dispose();
            }
        }
        else
            dispose();
    }

    private void cut()
    {
        textArea.cut();
        isChange = true;
        popupMenu.setVisible(false);
    }

    private void copy()
    {
        textArea.copy();
        popupMenu.setVisible(false);
    }

    private void paste()
    {
        textArea.paste();
        isChange = true;
        popupMenu.setVisible(false);
    }

    public static void main(String[] args)
    {
        new TextBook();
    }
}
怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(1)
黄舟

是否另存为跟你模仿别人代码有几毛钱关系?编辑器没设置对吧

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号