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

                      JFileChooser类的常用方法与功能

方法

功能说明

JFileChooser()

构造方法,用于创建一个默认的路径的文件对话框

JFileChooser(String currentDirectoryPath)

构造方法,用于创建一个制定路径的文件对话框

int showOpenDialog(Component parent)

显示打开文件对话框

int showSaveDialog(Component parent)

显示保存文化对话框

File getSelectedFile()

获取选中的文件对象

File getCurrentDirectory()

获取当前文件路径

  1. 下述代码用于实现任务描述记事本功能。
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. 运行结果

javafx 提示窗口 javafx文件对话框_图形


javafx 提示窗口 javafx文件对话框_图形_02


javafx 提示窗口 javafx文件对话框_界面_03


javafx 提示窗口 javafx文件对话框_界面_04