public class NotePad extends JFrame implements ActionListener{

     //定义需要的组件
JTextArea jta=null; //多行文本框 JMenuBar jmb=null; //菜单条
JMenu jm1=null; //菜单
JMenuItem jmi1=null,jmi2=null; //菜单项 public static void main(String[] args) {
NotePad np=new NotePad(); } public NotePad(){ //构造函数 jta=new JTextArea(); //创建jta
jmb=new JMenuBar();
jm1=new JMenu("文件");
jm1.setMnemonic('F'); //设置助记符 jmi1=new JMenuItem("打开",new ImageIcon("imag_3.jpg"));
jmi1.addActionListener(this); //注册监听
jmi1.setActionCommand("open"); jmi2=new JMenuItem("保存");
jmi2.addActionListener(this);
jmi2.setActionCommand("save"); this.setJMenuBar(jmb); //加入 jmb.add(jm1); //把菜单放入菜单条 jm1.add(jmi1); //把item放入到Menu中
jm1.add(jmi2); this.add(jta); //放入到JFrame this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(400,300);
this.setTitle("记事本");
this.setIconImage((new ImageIcon("imag_2.jpg")).getImage());
this.setVisible(true);
} @Override
public void actionPerformed(ActionEvent arg0) {
//判断是哪个菜单被选中
if(arg0.getActionCommand().equals("open")){ //JFileChooser,创建一个文件选择组件
JFileChooser jfc1=new JFileChooser();
jfc1.setDialogTitle("请选择文件……"); //设置名字 jfc1.showOpenDialog(null); //默认方式
jfc1.setVisible(true); //显示 //得到用户选择的文件全路径
String filename=jfc1.getSelectedFile().getAbsolutePath(); FileReader fr=null;
BufferedReader br=null; try {
fr=new FileReader(filename);
br=new BufferedReader(fr); //从文件中读取信息并显示到jta
String s="";
String allCon="";
while((s=br.readLine())!=null){ //循环读取文件,s不为空即还未读完毕
allCon+=s+"\r\n";
} jta.setText(allCon); //放置到jta } catch (Exception e) {
e.printStackTrace();
}finally{ try {
fr.close();
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}else if(arg0.getActionCommand().equals("save")){
//出现保存对话框
JFileChooser jfc2=new JFileChooser();
jfc2.setDialogTitle("另存为……");
jfc2.showSaveDialog(null); //按默认的方式显示
jfc2.setVisible(true); //得到用户希望把文件保存到何处,文件全路径
String filename2=jfc2.getSelectedFile().getAbsolutePath(); //准备写入到指定文件
FileWriter fw=null;
BufferedWriter bw=null; try {
fw=new FileWriter(filename2);
bw=new BufferedWriter(fw); bw.write(this.jta.getText());
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}

运行效果如下:

点击文件按钮,点击打开菜单项,选择一个文本文件,效果如下:

打开后,内容显示如下:

对内容稍作修改,另存为名为sss的文件,效果如下:

最新文章

  1. Linux系统目录结构以及简单说明
  2. SVN版本号打包脚本工具
  3. git 教程(4)--版本回退
  4. cocoapods for xcode怎么用
  5. SQL语句汇总(一)——数据库与表的操作以及创建约束
  6. Web service standards: SOAP, REST, OData, and more
  7. springmvc的mvc:view-controller标签
  8. HOWTO install Oracle 11g on Ubuntu Linux 12.04 (Precise Pangolin) 64bits
  9. string的一些操作,类似数组
  10. BeagleBone Black安装小米随身WiFi驱动方法
  11. maven profile切换正式环境和测试环境
  12. 自兴人工智能------------python入门基础(2)列表和元祖
  13. Spring Boot环境下出现No operations allowed after connection close错误
  14. Python随笔--爬虫(下载妹子图片)
  15. 2018-计算机系机试(第二批)-E-绝对值排序
  16. SublimeText3追踪函数工具CTags设置及使用
  17. solr string类型表示不支持分词
  18. pip查看已安装包列表
  19. 小程序开发 js里面array操作的方法列表。
  20. python进行数据分析----线性回归

热门文章

  1. ng-repeat 中的 track by $index
  2. Codeforces Round #493 (Div. 1) B. Roman Digits 打表找规律
  3. Linux进程僵死原因排查思路
  4. ES6之用let,const和用var来声明变量的区别
  5. snprintf
  6. 12:打印 1 到最大的 n 位数
  7. 使用iTools、PP助手清理垃圾前后文件夹对照图
  8. php抽奖、随机广告算法
  9. 号外:Spark 1.3.0公布了,快来一起飞!
  10. 算法 - 求一个数组的最长递减子序列(C++)