import javax.swing.JFrame;
import javax.swing.JTextArea;
import java.awt.*;
import java.awt.event.*;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import javax.swing.*;
import javax.swing.plaf.FileChooserUI;
public class notepad extends JFrame implements ActionListener{
//定義所需要的組件
JTextArea jta=null;
JMenuBar jmb=null;
JMenu jm=null;
JMenuItem jmi1=null;
JMenuItem jmi2=null;
public static void main(String[]args){
new notepad();
}
public notepad(){
//把組件添加到窗體上
jta=new JTextArea();
jmb=new JMenuBar();
this.add(jta);
this.setJMenuBar(jmb);
//設置窗體屬性
this.setTitle("簡易記事本");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(400, 300);
this.setVisible(true);
//把菜單添加進菜單條
jm=new JMenu("文件");
jm.setMnemonic('f');
jmb.add(jm);
//把子菜單加入至菜單
jmi1=new JMenuItem("打開");
jmi2=new JMenuItem("保存");
jmi1.setActionCommand("open");
jmi2.setActionCommand("save");
jm.add(jmi1);
jm.add(jmi2);
//為兩個字菜單注冊事件監聽
jmi1.addActionListener(this);
jmi2.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
//對點擊了打開進行處理
if(e.getActionCommand().equals("open")){
//創建一個文件選擇組件
JFileChooser jfc1=new JFileChooser();
//設置文件選擇器的名字
jfc1.setDialogTitle("請選擇文件....");
//設置文件選擇組件的類型(打開類型)
jfc1.showOpenDialog(null);
//顯示該組件
jfc1.setVisible(true);
//獲取選擇文件的絕對路徑
String s;
s=jfc1.getSelectedFile().getAbsolutePath();
//將該文件顯示到記事本上
BufferedReader br=null;
FileReader fr=null;
try{
//創建一個帶緩沖的文件讀取對象
fr=new FileReader(s);
br=new BufferedReader(fr);
String text="";
String m=null;
//循環讀取文件
while((m=br.readLine())!=null){
text+=m+"\r\n";
}
//將讀取的結果打印到記事本上面
this.jta.setText(text);
}catch(Exception e1){
e1.printStackTrace();
}
finally{
//關掉打開的文件
try{
br.close();
fr.close();
}catch(Exception e2){
e2.printStackTrace();
}
}
}
else if(e.getActionCommand().equals("save")){
//創建一個文件選擇組件
JFileChooser jfc=new JFileChooser();
//設置文件選擇的名稱
jfc.setDialogTitle("另存為");
//設置文件選擇組件的類型(保存類型)
jfc.showSaveDialog(null);
//顯示該組件
jfc.setVisible(true);
//獲取選擇文件的絕對路徑
String filename;
filename=jfc.getSelectedFile().getAbsolutePath();
//將記事本內的文本保存至該路徑
BufferedWriter bw=null;
FileWriter fw=null;
try{
//創建文件輸出文件
fw=new FileWriter(filename);
bw=new BufferedWriter(fw);
//獲取文本
String outtext="";
outtext=this.jta.getText();
//輸出文本
fw.write(outtext);
}catch(Exception e2){
e2.printStackTrace();
}
finally{
//關閉打開的輸出文件
try{
bw.close();
fw.close();
}catch(Exception e3){
e3.printStackTrace();
}
}
}
}
}