Swing图形界面之文件对话框

                    Swing图形界面之文件对话框
                   
   JFileChooser类可用于生成打开和保存文件时的对话框,为用户选择文件提供了一种简单的机制,使文件操作变得更加方便。JFileChooser类的常用方法及其功能见下表。

                      JFileChooser类的常用方法与功能

方法功能说明
JFileChooser()构造方法,用于创建一个默认的路径的文件对话框
JFileChooser(String currentDirectoryPath)构造方法,用于创建一个制定路径的文件对话框
int showOpenDialog(Component parent)显示打开文件对话框
int showSaveDialog(Component parent)显示保存文化对话框
File getSelectedFile()获取选中的文件对象
File getCurrentDirectory()获取当前文件路径
  1. 下述代码用于实现任务描述记事本功能。

    Note.java               
    “`
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.BufferedReader;
    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;
    *

    • @Jonathanlewd
    • 文件对话框JFileChooser()事本功能
      */
      public class Note extends JFrame implements ActionListener {
      private JMenuBar menuBar;
      private JMenu menuFile ,menuHelp;
      private JMenuItem minNew,miOpen,miSave,miExit,miAbout;
      private JScrollPane sp;
      private JTextArea txtContent;
      private JMenuItem miNew;
      public Note (){
      super(“记事本”);
      menuBar = new JMenuBar();
      this.setJMenuBar(menuBar);
      menuFile = new JMenu(“文件”);
      menuHelp = new JMenu(“帮助”);
      menuBar.add(menuFile);
      menuBar.add(menuHelp);
      miNew = new JMenuItem(“新建”);
      miOpen = new JMenuItem(“打开”);
      miSave = new JMenuItem(“保存”);
      miExit = new JMenuItem(“退出”);
      miAbout = new JMenuItem(“关于”);
      menuFile.add(miNew);
      menuFile.add(miOpen);
      menuFile.add(miSave);
      menuFile.addSeparator();
      menuFile.add(miExit);
      menuHelp.add(miAbout);
      //注册监听
      miNew.addActionListener(this);
      miOpen.addActionListener(this);
      miSave.addActionListener(this);
      miExit.addActionListener(this);
      miAbout.addActionListener(this);
      txtContent = new JTextArea(20,30);
      sp = new JScrollPane(txtContent);
      this.add(sp);
      this.setSize(400, 300);
      this.setLocation(100, 100);
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      }
      public void actionPerformed(ActionEvent e){
      Object source = e.getSource();
      if (source == miNew ){
      //清空文本域中的类容
      txtContent.setText(” “);

      }
      if (source == miOpen ){
      //清空文本域中的类容
      txtContent.setText(“”);
      //调用打卡文件方法
      openFile();
      }
      if (source == miSave ){
      //调用保存文件方法
      saveFile();
      }
      if (source == miExit ){
      //系统退出
      System.exit(0);
      }
      if (source == miAbout ){
      JOptionPane.showMessageDialog(this, “版本:20170316\n作者:Jonathanlewd\n版权所有:Beijing Normal University”,”关于”,
      JOptionPane.WARNING_MESSAGE);
      }
      }

    //打开方法
    private void openFile(){
    //实例化一个文件对话框对象
    JFileChooser fc = new JFileChooser();
    //显示文件打开对话框
    int rVal = fc.showOpenDialog(this);
    //如果单击“确定”(yes/ok)按钮
    if (rVal == JFileChooser.APPROVE_OPTION){
    //获取文件对话框中用户的文件名
    String fileName = fc.getSelectedFile().getName();
    //获取文件对话框中用户险种的文件所在的路径
    String path = fc.getCurrentDirectory().toString();
    try{
    //创建一个文件输入流,用于读文件
    FileReader fread = new FileReader(path +”/” + fileName);
    //创建一个缓冲流
    BufferedReader bread = new BufferedReader(fread);
    //从文件中读一行信息
    String line = bread.readLine();
    //循环读文件中的内容,并显示到文本域
    while (line != null){
    txtContent.append(line + “\n”);
    //读下一行
    line = bread.readLine();
    }
    bread.close();
    fread.close();
    } catch (Exception e){
    e.printStackTrace();
    }
    }
    }
    //保存文件的方法
    private void saveFile(){
    //实例化一个文件对话框对象
    JFileChooser fc = new JFileChooser();
    //显示文件保存对话框
    int rVal = fc.showSaveDialog(this);
    //如果单击”确定“(yes/ok)按钮
    if (rVal == JFileChooser.APPROVE_OPTION){
    //获取文件对话框中用户所选中的文件文件名
    String fileName = fc.getSelectedFile().getName();
    //获取文件对话框中用户所选中用户所选的文件路径
    String path = fc.getCurrentDirectory().toString();
    try {
    //创建一个文件输出流,用于写文件
    FileWriter fwrite = new FileWriter(path + “/” + fileName);
    //将文本域中的信息写入文件中
    fwrite.write(txtContent.getText());
    fwrite.close();
    } catch (Exception e){
    e.printStackTrace();
    }
    }

    }

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Note f = new Note();
    f.setVisible(true);

    }

}

  1. 功能描述

上述代码实现记事本的读写文件的功能。在写文件时,使用文件打开对话框或文件保存对话框进行提示,增强面的友好性

  1. 运行结果

保存窗口
打开窗口
记事本窗口
文件菜单

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值