本帖最后由 燕国庆 于 2012-11-26 23:07 编辑
package cn.guoqing;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class MyMenu1 {
//声明相关的组件
Frame f;
MenuBar mb;
Menu m;
Menu subm;
MenuItem mi;
MenuItem submi;
MenuItem openFile;
MenuItem saveFile;
FileDialog savefd;
FileDialog openfd;
TextArea ta;
File f2;
//构造函数调用innit()函数初始化
MyMenu1(){
init();
}
//初始化相关的组件
public void init(){
f=new Frame("MY MENU");
f.setBounds(300, 40, 750, 560);
//f.setLayout(new FlowLayout());
mb=new MenuBar();
m=new Menu("文件");
mi=new MenuItem("退出");
subm=new Menu("子菜单");
submi=new MenuItem("子条目");
openFile=new MenuItem("打开");
saveFile=new MenuItem("保存");
savefd=new FileDialog(f,"我的保存",FileDialog.SAVE);
openfd=new FileDialog(f,"我的打开",FileDialog.LOAD);
ta=new TextArea();
subm.add(submi);
m.add(mi);
m.add(subm);
m.add(openFile);
m.add(saveFile);
mb.add(m);
f.add(ta);
f.setMenuBar(mb);//setMenuBar(MenuBar mb) 将此窗体的菜单栏设置为指定的菜单栏
f.setVisible(true);//使窗体可见
event(); //调用此方法,否则没有相应的事件反应执行
}
//添加具体的事件
public void event(){
//为打开菜单项添加事件处理
openFile.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
openfd.setVisible(true);//使打开文件对话框可见
String path=openfd.getDirectory();//通过打开文件对话框对象获得所选文件的路径
String fname=openfd.getFile();//通过打开文件对话框对象获得所选文件的名称。
if(path==null||fname==null){
System.out.println("path="+path+"---fname="+fname);
return;
}
f2=new File(path,fname);//将路径和名称封装成文件对象
ta.setText("");//使在每次选完文件后使文本区域的数据清空。
System.out.println("path="+path+"fname="+fname);
BufferedReader bufr=null;
try{
bufr=new BufferedReader(new FileReader(f2));//利用缓冲技术,
String line=null;
while((line=bufr.readLine())!=null){//利用缓冲流对象每次读取一行数据
ta.append(line+"\r\n"); //利用文本区域对象将上面所读取的每行数据加入到ta中,并换行。
}
}
catch(IOException ex){
throw new RuntimeException("操作文件错误!请注意!");
}
finally{
try {
if(bufr!=null) // 判断缓冲流对象是否为空,若不为空关闭流资源
bufr.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
});
saveFile.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(f2==null){
savefd.setVisible(true);
String path=savefd.getDirectory();//通过打开文件对话框对象获得所选文件的路径
String fname=savefd.getFile();//通过打开文件对话框对象获得所选文件的名称。
f2=new File(path,fname);
if(path==null||fname==null){
System.out.println("path="+path+"---fname="+fname);
return;
}
}
//ta.setText("");
BufferedWriter bufw=null; 为什么在对已存在的而文件修改完保存不了修改后的结果,文件仍是原来的{:soso_e100:}有哪位大神帮忙看一下,纠结了半天了,就是找不出毛病来
try{
bufw=new BufferedWriter(new FileWriter(f2));
String s=ta.getText();
bufw.write(s);
//bufw.flush();
}
catch(IOException e1){
throw new RuntimeException();
}
finally{
try{
if(bufw!=null)
bufw.close();
}
catch(IOException e2){
System.out.println(e2.toString());
}
}
}
});
mi.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public static void main(String[] args) {
new MyMenu1();
}
}
问题解决了,出去转了转,清醒多了 |