您的位置:首页 > 编程语言 > Java开发

用java写一个小的记事本程序

2014-11-16 20:26 387 查看
大三了。大神之路,任重而道远。技术博客的开篇,就是给自己一个任务,我是要成为码神的男人。听说一个好的程序员有三个标准,精通一门语言,掌握面向对象的编程方法,掌握数据库。为了这三个目标而努力。数据结构和算法就我估计得两个月之后才开始接触。现在先学java。嗯。就这样。朝着码神的路一路狂奔。那就先写一个小程序。用java写一个小的记事本程序。下面贴代码。代码里面有注释。
package com.jishiben;
//刚开始必须引进程序中必须要用的包
import javax.swing.*;

import java.awt.*;
import java.io.*;
import java.awt.Event;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//1.1别忘了继承JFrame
//2.1现在要开始监听了
public class Jshiben extends JFrame implements ActionListener{
//1.2这里应该要引入开发记事本需要用到的几个组件
JTextArea jta=null;
JMenuBar jmb=null;
JMenu    jm=null;
JMenuItem jmi=null;
JMenuItem jmi2=null;
public static void main(String[] arg){
//1.3构建实例
Jshiben jsb=new Jshiben();
}
//1.4建立构造函数
public Jshiben(){
//1,5初始化上面提到的组件
jta=new JTextArea();
jmb=new JMenuBar();
jm=new JMenu("文件(\f)");
jmi=new JMenuItem("打开",new ImageIcon("lufei.jpg"));
jmi2=new JMenuItem("保存",new ImageIcon("lufei.jpg"));
//注册监听,顺便发个信息给框架,给它说说用户按了哪个键
jmi.addActionListener(this);
jmi.setActionCommand("打开");
jmi2.addActionListener(this);
jmi2.setActionCommand("保存");
//1.6开始一个个添加组件。
//1.7请注意到添加菜单条并不是用add而是用setJMenuBar
this.setJMenuBar(jmb);
this.add(jta);
jmb.add(jm);
//1.8心碎,为什么设置助记符一定要用单引号而用双引号就过不了呢
jm.setMnemonic('f');
jm.add(jmi);
jm.add(jmi2);
this.setSize(300, 400);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);

}
public void actionPerformed(ActionEvent e) {
//监听者的耳朵,这时候就应该接受被监听的人传过来的信息并且开始行动了
if(e.getActionCommand().equals("打开")){
//哈哈,现在可以尽情偷懒因为有jfilechooser这个神组件
JFileChooser jfc=new JFileChooser();
//显示这个组件的打开窗口
jfc.showOpenDialog(null);
jfc.setVisible(true);
//定义一个字符串得到要打开文件的绝对路径
String str=null;
if(jfc.getSelectedFile() == null){
return;
}
str=jfc.getSelectedFile().getAbsolutePath();

//定义文件字符流读写文件。
FileReader fr=null;
BufferedReader br=null;
try {
fr=new FileReader(str);
br=new BufferedReader(fr);
String total="";
String s="";
while((s=br.readLine() )!= null){
total+=s+"\r\n";
}
jta.setText(total);
} catch (Exception e2) {
e2.printStackTrace();
// TODO: handle exception
}finally{
try {
br.close();
fr.close();
} catch (IOException e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
}

}

}
//和上面大同小异又可以偷懒啦哈哈哈图书馆真TM热。
else if(e.getActionCommand().equals("保存")){
//首先定义一个文件选择组件咯
JFileChooser jfc=new JFileChooser();
//然后让这个组件显示出来保存的界面咯
jfc.showSaveDialog(null);
//再让这个妖怪无所遁形,利用水万物不润的特点让它现形
jfc.setVisible(true);
//找到把我们的文本文件保存在那个家里面
if(jfc.getSelectedFile() == null){
return;
}
String str=jfc.getSelectedFile().getAbsolutePath();
//仍然是定义文件字符输出流.
FileWriter fw=null;
BufferedWriter bw=null;
try {
fw=new FileWriter(str);
bw=new BufferedWriter(fw);
bw.write(jta.getText());

} catch (Exception e2) {
e2.printStackTrace();
// TODO: handle exception
}finally{
try {
bw.close();
fw.close();
} catch (IOException e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
}

}
}

}
}
一共没多少行代码。这个要注意的一点是
if(jfc.getSelectedFile() == null){
return;
}
这段代码一定要写,如果不写的话,那你点击了文件,然后点打开弹出JFileChooser的open界面,如果接下来没有选择任何文件而是点关闭,会爆出一个空指针异常。所以这个代码不能漏。第一片博客就这样。第一次写好紧张呢。哈哈。

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: