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);}
}
- 功能描述
上述代码实现记事本的读写文件的功能。在写文件时,使用文件打开对话框或文件保存对话框进行提示,增强面的友好性
- 运行结果