Java文件(io)编程——简易记事本开发
2024-08-31 12:44:45
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的文件,效果如下:
最新文章
- Linux系统目录结构以及简单说明
- SVN版本号打包脚本工具
- git 教程(4)--版本回退
- cocoapods for xcode怎么用
- SQL语句汇总(一)——数据库与表的操作以及创建约束
- Web service standards: SOAP, REST, OData, and more
- springmvc的mvc:view-controller标签
- HOWTO install Oracle 11g on Ubuntu Linux 12.04 (Precise Pangolin) 64bits
- string的一些操作,类似数组
- BeagleBone Black安装小米随身WiFi驱动方法
- maven profile切换正式环境和测试环境
- 自兴人工智能------------python入门基础(2)列表和元祖
- Spring Boot环境下出现No operations allowed after connection close错误
- Python随笔--爬虫(下载妹子图片)
- 2018-计算机系机试(第二批)-E-绝对值排序
- SublimeText3追踪函数工具CTags设置及使用
- solr string类型表示不支持分词
- pip查看已安装包列表
- 小程序开发 js里面array操作的方法列表。
- python进行数据分析----线性回归
热门文章
- ng-repeat 中的 track by $index
- Codeforces Round #493 (Div. 1) B. Roman Digits 打表找规律
- Linux进程僵死原因排查思路
- ES6之用let,const和用var来声明变量的区别
- snprintf
- 12:打印 1 到最大的 n 位数
- 使用iTools、PP助手清理垃圾前后文件夹对照图
- php抽奖、随机广告算法
- 号外:Spark 1.3.0公布了,快来一起飞!
- 算法 - 求一个数组的最长递减子序列(C++)