最新帖子 精华区 社区服务 会员列表 统计排行
主题 : 文件的保存对话框
mrsoft 离线
级别: 菜鸟
UID: 44315
精华: 0
发帖: 22
金币: 0 个
银元: 32 个
铜钱: 380 个
技术分: 0 个
在线时间: 4(时)
注册时间: 2017-01-09
最后登录: 2017-04-27
楼主  发表于: 2017-04-11   

文件的保存对话框

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



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



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

复制代码
  1. public int showSaveDialog(Component parent)

                       throws HeadlessException


参数说明

parent:父窗体对象。

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

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

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

复制代码
  1. 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("\u6587\u4EF6\u9009\u62E9\u5BF9\u8BDD\u6846\u6307\u5B9A\u6570\u636E\u5907\u4EFD");

            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            setBounds(100, 100, 450, 291);

     

            JMenuBar menuBar = new JMenuBar();

            setJMenuBar(menuBar);

     

            JMenu menu = new JMenu("\u6587\u4EF6");

            menuBar.add(menu);

     

            JMenuItem menuItem = new JMenuItem("\u4FDD\u5B58");

            menuItem.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    do_menuItem_actionPerformed(e);

                }

            });

            menu.add(menuItem);

     

            JMenuItem menuItem_1 = new JMenuItem("\u9000\u51FA");

            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值,那么对话框会选择默认主窗体。

描述
快速回复

如果您在写长篇帖子又不马上发表,建议存为草稿
认证码:

验证问题:
printf("%d", 83)
按"Ctrl+Enter"直接提交