暂时只实现打开文件,保存和另存为功能
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class NotePad extends JFrame implements ActionListener{
JMenuBar jmBar;//菜单条组件
JMenu menu1, menu2, menu3, menu4, menu5, xinjian;
JMenuItem item2, item3, item4, item5, item6, item7;
JMenuItem file, project;
JTextArea jta;
String filename = "";
public static void main(String[] args) {
NotePad notePad = new NotePad();
}
public NotePad(){
jmBar = new JMenuBar();
menu1 = new JMenu("文件(F)");
menu1.setMnemonic('F');
menu2 = new JMenu("编辑(E)");
menu2.setMnemonic('E');
menu3 = new JMenu("格式(O)");
menu3.setMnemonic('O');
menu4 = new JMenu("查看(V)");
menu4.setMnemonic('V');
menu5 = new JMenu("帮助(H)");
menu5.setMnemonic('H');
xinjian = new JMenu("新建");
item2 = new JMenuItem("打开");
item2.setActionCommand("open");
item2.addActionListener(this);
item3 = new JMenuItem("保存(S)");
item3.setMnemonic('S');
item3.setActionCommand("save");
item3.addActionListener(this);
item4 = new JMenuItem("另存为");
item4.setActionCommand("as");
item4.addActionListener(this);
item5 = new JMenuItem("页面设置");
item6 = new JMenuItem("打印");
item7 = new JMenuItem("退出");
file = new JMenuItem("文件");
project = new JMenuItem("工程");
jta = new JTextArea();
Font font = new Font("宋体",Font.PLAIN, 15);
jta.setFont(font);
JScrollPane jsp = new JScrollPane(jta);
jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
xinjian.add(file);
xinjian.add(project);
menu1.add(xinjian);
menu1.add(item2);
menu1.add(item3);
menu1.add(item4);
menu1.addSeparator();
menu1.add(item5);
menu1.add(item6);
menu1.addSeparator();
menu1.add(item7);
jmBar.add(menu1);
jmBar.add(menu2);
jmBar.add(menu3);
jmBar.add(menu4);
jmBar.add(menu5);
this.add(jmBar, BorderLayout.NORTH);
this.add(jsp);
this.setTitle("记事本");
this.setSize(700, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent arg0) {
if(arg0.getActionCommand().equals("open")) {
//弹出打开选择窗口
JFileChooser jfc1 = new JFileChooser();
jfc1.setDialogTitle("选择文件...");
jfc1.showOpenDialog(null);
jfc1.setVisible(true);
filename = jfc1.getSelectedFile().getAbsolutePath();
String resString = "";
FileReader fr = null;
BufferedReader br = null;
String string = "";
try {
fr = new FileReader(filename);
br = new BufferedReader(fr);
while((string=br.readLine()) != null) {
resString += string + "\r\n";
}
jta.setText(resString);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
br.close();
fr.close();
} catch (Exception e) {
e.printStackTrace();
}
}
} else if(arg0.getActionCommand().equals("save")) {
FileWriter fw1 = null;
BufferedWriter bw1 = null;
if(filename.equals("")){
saveas();
} else {
try {
fw1 = new FileWriter(filename);
bw1 = new BufferedWriter(fw1);
bw1.write(jta.getText());
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
bw1.close();
fw1.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
} else if(arg0.getActionCommand().equals("as")) {
saveas();
}
}
public void saveas(){
//弹出保存选择窗口
JFileChooser jfc2 = new JFileChooser();
jfc2.setDialogTitle("另存为...");
jfc2.showSaveDialog(null);
jfc2.setVisible(true);
String filenameString = jfc2.getSelectedFile().getAbsolutePath();
FileWriter fw2 = null;
BufferedWriter bw2 = null;
try {
fw2 = new FileWriter(filenameString);
bw2 = new BufferedWriter(fw2);
int jtaLineNumber = jta.getLineCount();
String s = "";
for (int i = 0; i < jtaLineNumber; i++) {
try {
s = jta.getText(jta.getLineStartOffset(i),
jta.getLineEndOffset(i)-jta.getLineStartOffset(i));
} catch (Exception e) {
e.printStackTrace();
}
bw2.write(s + "\r\n");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
bw2.close();
fw2.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
}