文字编辑器功能:
新建文件,打开文件,保存文件,帮助对话框
小弟不才,新手,贴上来给各路英豪指教一二,谢谢花时间看此帖的各位朋友,对了,如您有时间,也请高手贴上自己的,让小弟知道自己的不足好继续改进
,/**
 * 
 */
package mypackage;/**
 * @author Administrator
 *
 */
import java.awt.BorderLayout;
import java.awt.Dialog;
import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.MenuShortcut;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;public class TextEditor extends WindowAdapter implements ActionListener {
private Frame frame;   //主窗体
private TextArea textarea;  //文本输入区域
private String filename;  //打开的文件名

public void createEditor() {
//建立文件菜单
MenuBar menuBar = new MenuBar();
Menu menufile = new Menu("文件");
MenuItem menunew = new MenuItem("新建",new MenuShortcut(KeyEvent.VK_N));
menufile.add(menunew);
MenuItem menuopen = new MenuItem("打开",new MenuShortcut(KeyEvent.VK_O));
menufile.add(menuopen);
MenuItem menusave = new MenuItem("保存",new MenuShortcut(KeyEvent.VK_S));
menufile.add(menusave);
menufile.addSeparator();
menufile.add("退出");
menufile.addActionListener(this);  //注册菜单单击事件监听器
menuBar.add(menufile);

//建立帮助菜单
Menu menuhelp = new Menu("帮助");
menuhelp.add("关于");
menuhelp.addActionListener(this);  //注册菜单单击事件监听器
menuBar.setHelpMenu(menuhelp);

//主窗口
frame = new Frame("Java实现文本编辑器");
frame.setMenuBar(menuBar);
textarea= new TextArea();
frame.add("Center",textarea);
frame.addWindowListener(this);  //注册窗口关闭监听器
frame.setSize(600,400);
frame.setVisible(true);
}

//菜单选择事件
public void actionPerformed(ActionEvent e) {
try {
if(e.getActionCommand()== "新建") {
textarea.setText("");
} else if(e.getActionCommand() == "打开") {
//选择文件
FileDialog tefdopen = new FileDialog(frame,"Open",0);
tefdopen.setVisible(true);
filename = tefdopen.getDirectory() + tefdopen.getFile();

//读取文件
FileReader fr = new FileReader(filename);
BufferedReader br = new BufferedReader(fr);
String str = "";
while(br.ready()) {
int c = br.read();
str += (char)c;
}
textarea.setText(str);
br.close();
fr.close();
frame.setTitle("Java实现文本编辑器 -" + filename);
} else if(e.getActionCommand() == "保存") {
//写入文件
File file = new File(filename);
FileWriter fos = new FileWriter(file,true);
BufferedWriter bos = new BufferedWriter(fos);
PrintWriter pos = new PrintWriter(bos);
//写入对象容器
pos.print(textarea.getText());
//关闭输出流
bos.close();
pos.close();
fos.close();
} else if (e.getActionCommand() == "另存为...") {
//选择文件
FileDialog tefdopen = new FileDialog(frame,"Open",0);
tefdopen.setVisible(true);
filename = tefdopen.getDirectory() + tefdopen.getFile();
//写入文件
File file = new File(filename);
FileWriter fos = new FileWriter(file,true);
BufferedWriter bos = new BufferedWriter(fos);
PrintWriter pos = new PrintWriter(bos);
//写入对象数据
pos.print(textarea.getText());
//关闭输出流
bos.close();
pos.close();
fos.close();
} else if(e.getActionCommand() == "退出") {
System.exit(0);
} else if(e.getActionCommand() == "关于") {
//显示关于对话框
final Dialog dialog = new Dialog(frame,"关于",true);
dialog.setSize(267,117);
dialog.setLayout(new GridLayout(2,1));

//窗口关闭事件
dialog.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dialog.dispose();
}
});

//显示消息
Panel topPanel = new Panel();
Label label = new Label("Java文本编辑器-作者:java小菜鸟");
topPanel.add(label,BorderLayout.NORTH);
dialog.add(topPanel);
dialog.setVisible(true);
}
} catch(FileNotFoundException e1) {
} catch (IOException e1) {
}
}
//关闭窗体事件
public void windowClosing(WindowEvent e) {
System.exit(0);
}
//主函数
public static void main(String[] args) {
TextEditor te = new TextEditor();
te.createEditor();
}

}


解决方案 »

  1.   

    不错,我做WEB开发之前也没写过这东西
      

  2.   

    不错哦,写得挺简洁的,交流一下吧1.保存文件应该给个默认值,否则一上来点保存会出错2.这个可能就像楼上提的,这个应是没有对复杂功能的扩展,毕竟是小程序,保存一次后如果内容无改变就不允许再次保存3.输出流最好按使用倒序关,养成一个好习惯(这个某种程度上可能无关痛痒)
    pos.close();
    bos.close();
    fos.close();