zoukankan      html  css  js  c++  java
  • 文件的保存对话框

    文件选择对话框包括文件的打开与保存和自定义几种类别。其中文件保存对话框常用于各类编辑器模块中,如系统自带的记事本程序的文件保存对话框、画图程序的文件保存对话框以及Photoshop程序的文件保存对话框等。本实例将通过Java代码实现文件保存对话框的显示,读者可以把它应用到自己的项目中。实例运行效果如图

    在其中输入编辑文本,然后选择“文件”/“保存”命令,弹出“保存”对话框,如图

    本实例同样使用JFileChooser类的方法来打开文件对话框,但本实例打开的是文件保存对话框而不是文件打开对话框,请注意对话框中的标题与按钮的名称。实例中用到的显示文件保存对话框的方法声明如下:

    public int showSaveDialog(Component parent)
                       throws HeadlessException
    

      

    参数说明

     parent:父窗体对象。

     返回值:用户在文件打开对话框中进行的操作对应的int型常量。

    1)在项目中创建窗体类FileSaveDialog。在窗体中添加文本域与菜单栏,然后在菜单栏中添加“保存”与“退出”菜单项。

    2)编写“保存”菜单项的事件处理方法,在该方法中创建文件选择器,然后调用其方法显示文件打开对话框,并获取用户选择的文件,然后把文本域中的文本保存到用户选择的文件中。代码如下:

    import java.awt.BorderLayout;
    import java.awt.EventQueue;
    import java.awt.Font;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    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.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.UIManager;
    
    public class FileSaveDialog extends JFrame {
        
        private JPanel contentPane;
        private JTextArea textArea;
        
        /**
         * Launch the application.
         */
        public static void main(String[] args) {
            try {
                UIManager
                        .setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
            } catch (Throwable e) {
                e.printStackTrace();
            }
            EventQueue.invokeLater(new Runnable() {
                public void run() {
                    try {
                        FileSaveDialog frame = new FileSaveDialog();
                        frame.setVisible(true);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
        
        /**
         * Create the frame.
         */
        public FileSaveDialog() {
            setTitle("u6587u4EF6u9009u62E9u5BF9u8BDDu6846u6307u5B9Au6570u636Eu5907u4EFD");
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setBounds(100, 100, 450, 291);
            
            JMenuBar menuBar = new JMenuBar();
            setJMenuBar(menuBar);
            
            JMenu menu = new JMenu("u6587u4EF6");
            menuBar.add(menu);
            
            JMenuItem menuItem = new JMenuItem("u4FDDu5B58");
            menuItem.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    do_menuItem_actionPerformed(e);
                }
            });
            menu.add(menuItem);
            
            JMenuItem menuItem_1 = new JMenuItem("u9000u51FA");
            menuItem_1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    do_menuItem_1_actionPerformed(e);
                }
            });
            menu.add(menuItem_1);
            contentPane = new JPanel();
            setContentPane(contentPane);
            contentPane.setLayout(new BorderLayout(0, 0));
            
            JScrollPane scrollPane = new JScrollPane();
            contentPane.add(scrollPane, BorderLayout.CENTER);
            
            textArea = new JTextArea();
            textArea.setFont(new Font("宋体", Font.PLAIN, 14));
            textArea.setLineWrap(true);
            textArea.setTabSize(4);
            scrollPane.setViewportView(textArea);
        }
        
        protected void do_menuItem_actionPerformed(ActionEvent e) {
            String text = textArea.getText();// 获取用户输入
            if (text.isEmpty()) {// 过滤空文本的保存操作
                JOptionPane.showMessageDialog(this, "没有需要保存的文本");
                return;
            }
            JFileChooser chooser = new JFileChooser();// 创建文件选择器
            int option = chooser.showSaveDialog(this);// 打开文件保存对话框
            if (option == JFileChooser.APPROVE_OPTION) {// 处理文件保存操作
                File file = chooser.getSelectedFile();// 获取用户选择的文件
                try {
                    FileOutputStream fout = new FileOutputStream(file);// 创建该文件的输出流
                    fout.write(text.getBytes());// 把文本保存到文件
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }
        }
        protected void do_menuItem_1_actionPerformed(ActionEvent e) {
            System.exit(0);
        }
    }
    

      

    心法领悟:指定文件选择对话框的父窗体。

    只要是对话框,都应该尽量指定一个父窗体,文件选择对话框也是一样,当对话框打开时,将屏蔽或拦截父窗体所有的事件操作,在用户完成对话框中的业务操作之前,不允许操作主窗体。如果在显示文件选择对话框时,将父窗体指定为NULL值,那么对话框会选择默认主窗体。

  • 相关阅读:
    Orient DB 0.9.6 Beta 发布下载
    Java 近些年一直群龙无首 Google 为 Java 前途担忧
    VC和LUA混合开发之VC程序调用Lua脚本函数
    NetBeans 时事通讯(刊号 # 99 Apr 16, 2010)
    Cassandra 0.6 发布下载
    JDK 6 Update 20 发布下载JDK 6最新版本下载
    Java 近些年一直群龙无首 Google 为 Java 前途担忧
    Simple way to export SQL Server data to Text Files
    GFORTRAN
    The Stanford NLP (Natural Language Processing) Group
  • 原文地址:https://www.cnblogs.com/mrxy/p/6693056.html
Copyright © 2011-2022 走看看