packagemyNotePad;importjava.awt.FileDialog;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.beans.FeatureDescriptor;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOException;importjavax.swing.JFrame;importjavax.swing.JMenu;importjavax.swing.JMenuBar;importjavax.swing.JMenuItem;importjavax.swing.JTextArea;public classMyNotePad {public static voidmain(String[] args) {final JFrame jFrame = new JFrame("记事本");
JMenuBar jMenuBar= newJMenuBar();
jFrame.setJMenuBar(jMenuBar);//注意!此处把菜单栏加到框架里面不是调用add方法(卡了40分钟,屏幕不显示窗体)
JMenu jMenu1= new JMenu("文件");
JMenu jMenu2= new JMenu("编辑");
jMenuBar.add(jMenu1);//add方法作用是把一个组件添加到另一个组件中。
jMenuBar.add(jMenu2);
JMenuItem jMenuItem1= new JMenuItem("打开");
JMenuItem jMenuItem2= new JMenuItem("保存");
jMenu1.add(jMenuItem1);
jMenu1.add(jMenuItem2);final JTextArea jTextArea = newJTextArea();
jFrame.add(jTextArea);//上面是框架创建完毕//下面是给"打开"操作写上事件监听器
jMenuItem1.addActionListener(new ActionListener() { //这样写是创建匿名时间监听器对像,也可以自己写一个事件监听器类
@Overridepublic voidactionPerformed(ActionEvent e) {
FileDialog fileDialog= new FileDialog(jFrame, "打开",FileDialog.LOAD);
fileDialog.setVisible(true); //注意,文件对话框默认是隐藏的(卡了10分钟,不显示对话框)
FileReader fileReader=null;try{
fileReader= new FileReader(fileDialog.getDirectory()+fileDialog.getFile());//注意:获取文件是 路径名getDirectory()+文件名getFile()!!切记getFile()里不包含路径名 (卡了90分钟,下载别人源码才明白)
} catch(FileNotFoundException e2) {
e2.printStackTrace();
}if(fileReader!=null){try(//7.0版本JDK支持try(){}语法,作用:()内写创建输入输出对象后,就不用在finally中写关闭资源close()方法。
BufferedReader bufferedReader = newBufferedReader(fileReader);
) {if(fileDialog.getFile()!=null){
fileReader= new FileReader(fileDialog.getDirectory()+fileDialog.getFile());
String str=null;while((str=bufferedReader.readLine())!=null){ //把读文件写在while里是为了第一次就能判断
jTextArea.append(str);
}
}
}catch(IOException e1) {
}
}
}
});//下面是给"保存"操作写上事件监听器
jMenuItem2.addActionListener(newActionListener() {
@Overridepublic voidactionPerformed(ActionEvent e) {
FileDialog fileDialog= new FileDialog(jFrame, "保存", FileDialog.SAVE);
fileDialog.setVisible(true);
FileWriter fileWriter=null;try{
fileWriter= new FileWriter(fileDialog.getDirectory()+fileDialog.getFile(),true);//上一句代码用到了追加功能,防止再次写入覆盖原来的内容FileWriter(String fileName, boolean append)(卡了3分钟)
} catch(IOException e2) {
e2.printStackTrace();
}if(fileWriter!=null){try (BufferedWriter bf=newBufferedWriter(fileWriter))
{
String text=jTextArea.getText();//char[] charArray = text.toCharArray();
bf.write(text);
}catch(IOException e1) {
e1.printStackTrace();
}
}
}
});
jFrame.setSize(400, 400);
jFrame.setLocation(600, 300);
jFrame.setVisible(true);
}
}