本帖最后由 罗广伟 于 2013-7-17 15:46 编辑
/*
* 菜单保存和打开文件功能
* 将File定义在成员变量中,可以供整个类使用,打开过就会进行记录
*/
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class MenuDemo
{
Frame f;
TextArea ta;
MenuBar mb;
Menu menufile;
MenuItem miopen;
MenuItem misave;
MenuItem miexit;
Menu menuedit;
Menu menuset;
MenuItem migo;
MenuItem miback;
FileDialog fdopen=new FileDialog(f,"打开",FileDialog.LOAD);
FileDialog fdsave=new FileDialog(f,"保存",FileDialog.SAVE);
File file;
MenuDemo()
{
init();
}
public void init()
{
f=new Frame("我的菜单");//设置窗体
f.setBounds(300, 200, 500, 400);
//f.setLayout(new FlowLayout());
f.setVisible(true);
ta=new TextArea();
mb=new MenuBar();
menufile=new Menu("文件");
menuedit=new Menu("编辑");
menuset=new Menu("修改");
miopen=new MenuItem("打开");
misave=new MenuItem("保存");
miexit=new MenuItem("退出");
migo=new MenuItem("还原");
miback=new MenuItem("撤销");
mb.add(menufile);
mb.add(menuedit);
menufile.add(miopen);
menufile.add(misave);
menufile.add(miexit);
menuedit.add(menuset);
menuset.add(migo);
menuset.add(miback);
fdopen.setBounds(300, 200, 400,300);
f.setMenuBar(mb);
f.add(ta);
myEvent();
}
public void myEvent()
{
miopen.addActionListener(new ActionListener()//打开文件按钮
{
public void actionPerformed(ActionEvent e)//将对话框读取文件存到TextArea中,
{
try
{
fdopen.setVisible(true);
String filepath=fdopen.getDirectory();
String filename=fdopen.getFile();
file=new File(filepath+filename);
if(filepath==null||filename==null)
{
return;
}
ta.setText("");//再次打开文件清空
BufferedReader bfr=new BufferedReader(new FileReader(file));
String line;
while((line=bfr.readLine())!=null)
{
ta.append(line+"\r\n");
}
bfr.close();
}
catch (FileNotFoundException e1)
{
e1.printStackTrace();
}
catch (IOException e1)
{
e1.printStackTrace();
}
}
});
misave.addActionListener(new ActionListener()//保存文件按钮
{
public void actionPerformed(ActionEvent e)
{
if(file==null)//如果文件没被打开则新建文件
{
fdsave.setVisible(true);
String filepath=fdsave.getDirectory();
String filename=fdsave.getFile();
file=new File(filepath+filename);//¥¥¥¥¥¥¥¥¥
}
//如果文件被打开则直接保存
try {
BufferedWriter bfw=new BufferedWriter(new FileWriter(file));
bfw.write(ta.getText());
bfw.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
});
miexit.addActionListener(new ActionListener()//退出按钮
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
f.addWindowListener(new WindowAdapter()//窗口关闭
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public void s(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args)throws IOException
{
new MenuDemo();
}
}
这段代码¥¥¥处,如果文件不存在就创建文件,那么问题是,文件中的数据 |