先看一下简单的效果
打开文件
保存文件
笔记本比较简单,主要是为了熟悉Java I/O 流,
下面是代码:
import javax.swing.*;
import java.io.*;
import java.awt.event.*;
public class NotePad extends JFrame implements ActionListener {
//定义需要的组件
JTextArea jta = null;
//菜单
JMenuBar jmb = null;//菜单栏
JMenu jm1 = null;//菜单
JMenu jm2 = null;
JMenu jm3 = null;
JMenuItem jmi1 = null;//菜单选项
JMenuItem jmi2 = null;
JMenuItem jmi3 = null;
public static void main(String[] args) {
new NotePad();
}
public NotePad() {
//初始化相关配置
jta = new JTextArea();
jmb = new JMenuBar();
jm1 = new JMenu("文件");
jm2 = new JMenu("编辑");
//设置注册监听事件
jmi1 = new JMenuItem("打开(O)");
jmi1.addActionListener(this);//注册监听
jmi1.setActionCommand("Open");
jmi2 = new JMenuItem("保存(S)");
jmi2.addActionListener(this);
jmi2.setActionCommand("Save");
jmi3 = new JMenuItem("");
//放入到JFrame
this.add(jta);
//加入菜单
this.setJMenuBar(jmb);
//将菜单jm1放如菜单栏jmb中
jmb.add(jm1);
//item放入menu
jm1.add(jmi1);
jm1.add(jmi2);
jm1.add(jmi3);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(1000, 800);
this.setVisible(true);
}
//设置点击事件
@Override
public void actionPerformed(ActionEvent e) {
//判断哪个菜单被选中,并作出相应事件
if (e.getActionCommand().equals("Open")) {
//创建文件选择组件
JFileChooser jfc1 = new JFileChooser();
jfc1.setDialogTitle("请选择文件");//设置名字
jfc1.showOpenDialog(null);//打开文件,null表示打开时使用默认属性
jfc1.setVisible(true);//显示
String filename = jfc1.getSelectedFile().getAbsolutePath();//得到用户选择文件的绝对路径
FileReader fr = null;
BufferedReader br = null;
try {
fr = new FileReader(filename);
br = new BufferedReader(fr);//读取用户选择的文件
//从文件中读取信息并显示到JTextArea中
String s = "";
String all = "";
while ((s = br.readLine()) != null) {
all += s + "\r\n";
}
jta.setText(all);
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
br.close();
fr.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
} else if (e.getActionCommand().equals("Save")) {
//出现保存对话框
JFileChooser jfc = new JFileChooser();
jfc.setDialogTitle("保存为");
jfc.showSaveDialog(null);//按默认的方式显示
jfc.setVisible(true);
//得到用户希望保存的文件路径
String filename = jfc.getSelectedFile().getAbsolutePath();
//准备写入到指定文件即可
BufferedWriter bw = null;
FileWriter fw = null;
try {
fw = new FileWriter(filename);
bw = new BufferedWriter(fw);
fw.write(this.jta.getText());
} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
fw.close();
bw.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
}