一个简单的记事本-----熟悉JFrame、j组件、事件处理机制(监听机制)、BufferedReader/BufferedWriter 、文件选择器组件JFileChooser
2018-03-13 15:28
597 查看
/** * 记事本(界面+功能) */ package com.note; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import javax.swing.ImageIcon; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JTextArea; public class NotePad extends JFrame implements ActionListener{ //定义需要的组件 JTextArea jTextArea=null;//定义多行文本框组件 JMenuBar jMenuBar=null;//菜单条 JMenu jMenu=null;//菜单 JMenuItem jMenuItem=null;//菜单项 JMenuItem jMenuItem2=null; public static void main(String[] args) { // TODO Auto-generated method stub NotePad notePad=new NotePad(); } public NotePad(){ //构建组件 jTextArea=new JTextArea(); jMenuBar=new JMenuBar(); jMenu =new JMenu("File"); jMenu.setMnemonic('f');//设置jmenu的助记符,即按下Ctrl+f便代表了File ImageIcon ico=new ImageIcon("new0.jpg"); ico.setImage(ico.getImage().getScaledInstance(20,20,Image.SCALE_DEFAULT));//调整图标的大小 jMenuItem=new JMenuItem("open File",ico);//设置菜单项并给该菜单项添加一个图标 jMenuItem.setActionCommand("open");//设置此按钮的动作命令。 jMenuItem.addActionListener(this);//注册监听 jMenuItem2=new JMenuItem("save"); jMenuItem2.setActionCommand("save"); jMenuItem2.addActionListener(this); //添加组价 this.add(jTextArea); this.setJMenuBar(jMenuBar); jMenuBar.add(jMenu); jMenu.add(jMenuItem); jMenu.add(jMenuItem2); //组件属性设置 this.setTitle("我的记事本"); this.setSize(400, 300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //显示 this.setVisible(true); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub //记事本的打开文件功能 if (e.getActionCommand().equals("open")) { //创建文件选择器对话框 //文件选择器对话框组件 JFileChooser jFileChooser=new JFileChooser(); //给文件选择器对话框设置标题 jFileChooser.setDialogTitle("请选择打开的文件..."); //显示“打开文件”文件选择器对话框 jFileChooser.showOpenDialog(null); //得到用户选择的文件的绝对路径 String fileAdress=jFileChooser.getSelectedFile().getPath(); //System.out.println(fileAdress); //读取选择文本的内容(此处选择了缓冲输入流bufferedreader) FileReader fileReader=null; //定义需要的FileReader和BufferedReader BufferedReader bufferedReader=null; try { fileReader=new FileReader(fileAdress);//将目标文件初始化为FileReader对象,将目标文件初始化为字符输入流 bufferedReader=new BufferedReader(fileReader);//初始化bufferedReader对象,即从字符输入流读取文本,放入缓冲字符输入流 //也可以:bufferedReader=new BufferedReader(new FileReader(fileAdress)) String string="";//循环读取。从缓冲输入流一行行读取文本到内存。用string指向(一行) String allCon="";//将读取的每一行信息整合到allcon中 try { while ((string=bufferedReader.readLine())!=null) { allCon+=(string+"\r\n");//加换行符保持文本的格式,此时读取的文本内容都已放置到allcon中 } //将内存的目标文本内容(allcon指向)放到jtextarea多行文本框中 jTextArea.setText(allCon); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } catch (FileNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); }finally { //关闭流 try { fileReader.close(); bufferedReader.close(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } //记事本的保存功能 if (e.getActionCommand().equals("save")) { //出现保存对话框(文件选择器) JFileChooser jFileChooser=new JFileChooser(); jFileChooser.setDialogTitle("保存到..."); jFileChooser.showSaveDialog(null);//,显示保存对话框。保存与打开的区别函数 //保存写好后的内容(将多行文本框的内容写入磁盘) BufferedWriter bufferedWriter=null; String fileAdress=jFileChooser.getSelectedFile().getPath();//获得想要保存的位置的路径 try { bufferedWriter=new BufferedWriter(new FileWriter(fileAdress)); //给指定文件写入内容 String strings[]=this.jTextArea.getText().split("\n"); for(String string:strings){ bufferedWriter.write(string+"\n"); //将文本框内容一行行的写入 } //bufferedWriter.write(this.jTextArea.getText());//将整个多行文本框内容写入,内存占用太大 } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); }finally { try { bufferedWriter.close();//关闭流 } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } } }
相关文章推荐
- 在使用FileReader.readAsDataURL()时,处理不能不能连续选择同一个文件的问题
- 用opencsv和用Bufferedreader/writer进行csv文件的读写及简单处理
- 18. JAVA 图形界面 Part 2(JTextComponent、事件处理、单选按钮、复选框、列表框、下拉列表框、菜单组件、文件选择) ----- 学习笔记
- BufferedWriter与BufferedReader读写大文件的简单尝试
- JFileChooser 为用户选择文件提供了一种简单的机制
- 一个简单的用户信息处理理组件
- 一个简单的C#文件日志组件
- Flex事件处理实现机制的一个试验
- 一个简单的组件事件侦听器(Action Script 2.0)
- 一个小程序 事件处理机制
- [Java] BufferedReader/BufferedWriter 简单记事本
- 一个简单的自定义控件的事件处理示例 [IPostBackEventHandler]
- Android开发中的UI事件监听处理机制总结
- java 使用FileInputStream,FileReader,BufferedStream读写记事本文件的例子
- 一个简单的javascript事件监听的例子
- C#事件演示程序1)——一个最简单的C#事件处理程序
- C#简单文本编辑器(利用ToolStrip、enu、一个事件多个监听等)
- 一个简单的进度条比处理文件解析
- 一个WinForm记事本程序(包含主/下拉/弹出菜单/打开文件/保存文件/打印/页面设置/字体/颜色对话框/剪切版操作等等控件用法以及记事本菜单事件/按键事件的具体代码)
- 一个简单的文件处理--16进制数据统计分析