美文网首页
Java swing菜单栏实现打开、保存文件操作

Java swing菜单栏实现打开、保存文件操作

作者: Bigold | 来源:发表于2018-11-14 23:07 被阅读0次

    首先,我们用Java swing中JMenu创建菜单栏、菜单项,如下图所示:


    1.png

    文件下下拉菜单项:打开、保存、打印、退出。


    2.png
    点击打开按钮(item1),可实现文件的打开操作。
    从目录中选择目标文件(txt),确定打开。

    Txt文件即可显示在窗口的文档区域。如下图:


    3.png
    重新输入一些内容,点击文件下拉下的保存文件(item2),选择另存为的目录。
    例存在桌面,则在桌面中可看到该txt文件夹。
    4.png
    打开该文件即可看到输入的内容。
    5.png
    退出操作(item4)
    6.png

    具体代码如下:

    import java.awt.BorderLayout;
    import java.awt.Container;
    import java.awt.Dimension;
    import java.awt.FileDialog;
    import java.awt.TextArea;
    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    import javax.management.RuntimeErrorException;
    import javax.swing.JButton;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JRootPane;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    
    
    import javafx.scene.control.Tab;
    
    
    public class Newcaidan {
    
        JFrame f;
        JLabel label;
        JTextArea textArea;
        JFileChooser fileChooser;
        FileInputStream fileInStream;
    
        public Newcaidan() {
            // TODO Auto-generated constructor stub
            f=new JFrame("测试窗口");
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            Container contentPane=f.getContentPane();
            textArea=new JTextArea();
            JScrollPane scrollPane=new JScrollPane(textArea);
            scrollPane.setPreferredSize(new Dimension(350, 300));
            JTextArea textArea = new JTextArea(10, 10);
            JPanel panel=new JPanel();
            JMenuBar menuBar1=new JMenuBar();  //添加菜单条组件
            f.setJMenuBar(menuBar1);          //将菜单栏添加到顶层容器中
            JMenu menu1=new JMenu("文件");
            JMenu menu2=new JMenu("编辑");
            JMenu menu3=new JMenu("视图");
            JMenu menu4=new JMenu("运行");
            JMenu menu5=new JMenu("工具");
            JMenu menu6=new JMenu("帮助");
            
            //将菜单组件添加到菜单条组件中
            menuBar1.add(menu1);
            menuBar1.add(menu2);
            menuBar1.add(menu3);
            menuBar1.add(menu4);
            menuBar1.add(menu5);
            menuBar1.add(menu6);
            
            //创建菜单项组件
            JMenuItem item1=new JMenuItem("打开");
            JMenuItem item2=new JMenuItem("保存");
            JMenuItem item3=new JMenuItem("打印");
            JMenuItem item4=new JMenuItem("退出");
            menu1.add(item1);
            menu1.add(item2);
            menu1.addSeparator();           //菜单项之间的分隔线组件
            menu1.add(item3);
            menu1.addSeparator();
            menu1.add(item4);
            
            //设置顶层容器类的可见性
            f.setVisible(true);
            label=new JLabel("",JLabel.CENTER);
            contentPane.add(label, BorderLayout.NORTH);
            contentPane.add(scrollPane, BorderLayout.CENTER);
            contentPane.add(panel, BorderLayout.SOUTH);
            f.pack();
            //处理退出菜单项的动作事件
            item4.addActionListener(new ActionListener() {
                
                @Override
                public void actionPerformed( ActionEvent e) {
                    // TODO Auto-generated method stub
                    int i=JOptionPane.showConfirmDialog(null, "是否真的退出系统",
                            "退出确认对话框",JOptionPane.YES_NO_CANCEL_OPTION);
                    //通过对话框中按钮的选择来决定结果,单机yes时,窗口直接消失
                    if(i==0)
                        f.dispose();
                    
                }
            });
            item1.addActionListener(new ActionListener() {
                
                @Override
                public void actionPerformed(ActionEvent e) {
                    // TODO Auto-generated method stub
                    JFileChooser chooser = new JFileChooser();
                    if (chooser.showOpenDialog(item1)==JFileChooser.APPROVE_OPTION) {//
                        File file = chooser.getSelectedFile();
                        textArea.setText(file.getName()+":"+file.getPath()+"\n"+file.length());
                        readFile(file);
                    };
                      
                }       
            });
            item2.addActionListener(new ActionListener() {
                
                @Override
                public void actionPerformed(ActionEvent e) {
                    // TODO Auto-generated method stub
                    JFileChooser chooser = new JFileChooser();
                    if (chooser.showSaveDialog(item2)==JFileChooser.APPROVE_OPTION) {
                        File file = chooser.getSelectedFile();
                        writeFile(file.getPath());
                }
                }
            });
        }
            public void copyFile(File file){//复制文件
                File to=new File(file.getAbsolutePath()+"_copy");
                if (file.isFile()) {
                    byte[] buf = new byte[1024];//字节流
                    int length=0;
                    try {
                        FileInputStream in=new FileInputStream(file);
                        FileOutputStream out=new FileOutputStream(to);
                        while((length=in.read(buf))>0){
                            out.write(buf,0,length);
                        }
                        out.flush();
                        in.close();
                        out.close();
                    } catch (Exception e) {
                        // TODO Auto-generated catchblock
                        e.printStackTrace();
                    }
    
                }
            }
            
        public void readFile(File file){//读文件
            BufferedReader bReader;
            try {
                bReader=new BufferedReader(new FileReader(file));
                StringBuffer sBuffer=new StringBuffer();
                String str;
                while((str=bReader.readLine())!=null){
                    sBuffer.append(str+'\n');
                    System.out.println(str);
                }
                textArea.setText(sBuffer.toString());
            } catch (Exception e) {
                // TODO: handle exception
            }
        }
        public void writeFile(String savepath){//写文件
            FileOutputStream fos= null;
            try {
                fos=new FileOutputStream(savepath);
                fos.write(textArea.getText().getBytes());
                fos.close();
                System.out.println("已保存");
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
           textArea.getText();
        }
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            new Newcaidan();
    
        }
    }
    

    相关文章

      网友评论

          本文标题:Java swing菜单栏实现打开、保存文件操作

          本文链接:https://www.haomeiwen.com/subject/gfgsfqtx.html