A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 陈雪琪 于 2013-6-8 21:29 编辑

复制代码
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import java.io.*;
  4. class  MyMenuDemo
  5. {
  6.         private Frame f;
  7.         private MenuBar bar;
  8.         private Menu menu,newFile;
  9.         private MenuItem openItem,saveItem,closeItem,newF1,newF2;
  10.         private TextArea ta;
  11.         private FileDialog openDia,saveDia;
  12.         private File file;

  13.         MyMenuDemo(){
  14.                 init();
  15.         }
  16.         public void init(){
  17.                 f=new Frame("我的记事本");
  18.                 f.setBounds(300,200,600,600);
  19.                 bar=new MenuBar();
  20.                 menu=new Menu("文件");
  21.                 newFile =new Menu("新建");
  22.                 openItem=new MenuItem("打开");
  23.                 saveItem=new MenuItem("保存");
  24.                 closeItem=new MenuItem("退出");
  25.                 newF1=new MenuItem("标准文本");
  26.                 newF2=new MenuItem("网页");
  27.                 ta=new TextArea();

  28.                 openDia=new FileDialog(f,"打开文件",FileDialog.LOAD);
  29.                 saveDia=new FileDialog(f,"保存",FileDialog.SAVE);

  30.                 f.setMenuBar(bar);
  31.                 bar.add(menu);
  32.                 menu.add(newFile);
  33.                 menu.add(openItem);
  34.                 menu.add(saveItem);
  35.                 menu.add(closeItem);
  36.                 newFile.add(newF1);
  37.                 newFile.add(newF2);
  38.                 f.add(ta);

  39.                 myEvent();
  40.                 f.setVisible(true);
  41.         }
  42.         public void myEvent(){
  43.                 //记事本退出
  44.                 f.addWindowListener(new WindowAdapter(){
  45.                         public void windowClosing(WindowEvent e){
  46.                                 System.exit(0);
  47.                         }
  48.                 });
  49.                 //菜单栏中将记事本退出
  50.                 closeItem.addActionListener(new ActionListener(){
  51.                         public void actionPerformed(ActionEvent e){
  52.                                 System.exit(0);
  53.                         }
  54.                 });
  55.                 //打开文件的操作
  56.                 openItem.addActionListener(new ActionListener(){
  57.                         public void actionPerformed(ActionEvent e){
  58.                                 try{
  59.                                         openDia.setVisible(true);
  60.                                         String dir=openDia.getDirectory();
  61.                                         String fileName=openDia.getFile();
  62.                                         if(dir==null || fileName==null)
  63.                                                 return ;
  64.                                         file=new File(dir,fileName);
  65.                                         BufferedReader br=new BufferedReader(new FileReader(file));
  66.                                         String s=null;
  67.                                         ta.setText("");
  68.                                         while((s=br.readLine())!=null){
  69.                                                 ta.append(s+"\r\n");
  70.                                         }
  71.                                         br.close();
  72.                                 }
  73.                                 catch(IOException ioe){
  74.                                         throw new RuntimeException("出错啦!");
  75.                                 }
  76.                         }
  77.                 });
  78.                 //保存文件
  79.                 saveItem.addActionListener(new ActionListener(){
  80.                         public void actionPerformed(ActionEvent ae){
  81.                                 if(file==null){
  82.                                         saveDia.setVisible(true);
  83.                                         String dir=saveDia.getDirectory();
  84.                                         String fileName=saveDia.getFile();
  85.                                         System.out.println(dir+"........."+fileName);
  86.                                         if(dir==null||fileName==null)
  87.                                                 return ;
  88.                                         file=new File(dir,fileName);
  89.                                         System.out.println(file.exists());
  90.                                 }
  91.                                 else{
  92.                                         try{
  93.                                                 BufferedWriter bw=new BufferedWriter(new FileWriter(file));
  94.                                                 String text=ta.getText();
  95.                                                 bw.write(text);
  96.                                                 bw.close();
  97.                                         }
  98.                                         catch(IOException i){
  99.                                                 throw new RuntimeException();
  100.                                         }
  101.                                 }
  102.                         }
  103.                 });
  104.         }
  105.         public static void main(String[] args)
  106.         {
  107.                 new MyMenuDemo();
  108.         }
  109. }
复制代码
问题是在当文件为空需要保存文件的时候。代码第82行开始,就是保存文件那块出了问题。为了能运行,我就把所有代码都复制过来了。


在控制台输出结果的代码是为了验证,路径和文件名是否为空的。每次保存后打印在控制台上显示都不为空。但是文件就是没办法被创建。

还对比了老毕的代码中这部分的内容,感觉是一样的。可是用毕老师的代码加进来运行就能保存成功,我这段代码却始终有问题。不知道是不是眼拙没看到哪除了问题。看了好久依旧没看出什么毛病- -


评分

参与人数 1技术分 +1 收起 理由
刘凯 + 1 赞一个!

查看全部评分

5 个回复

正序浏览
刘凯 发表于 2013-6-8 22:04
加油吧, 21期急切需要妹子

:L我应该是九月份才去。。
回复 使用道具 举报
陈雪琪 发表于 2013-6-8 22:02
我找到了自己代码中的错误,第95行的else要删掉才对,当然地104行的花括号也要去掉。想了下,发现加个els ...

加油吧, 21期急切需要妹子 {:3_52:}
回复 使用道具 举报
刘凯 发表于 2013-6-8 18:34
你这个还是可能哪里敲错了 ,GUI这点建议不要太当做重点,当初小斑 学GUI的时候,就写过几个小程序,不过好 ...

我找到了自己代码中的错误,第95行的else要删掉才对,当然地104行的花括号也要去掉。想了下,发现加个else的话文件就没有被创建与写入了,所以就不可能被保存成功的。哈哈  自问自答啦~~
回复 使用道具 举报
刘凯 发表于 2013-6-8 18:34
你这个还是可能哪里敲错了 ,GUI这点建议不要太当做重点,当初小斑 学GUI的时候,就写过几个小程序,不过好 ...

嗯 也是 了解个大概就好啦~好吧  虽然木有解决,还是果断更改为解决好咯
回复 使用道具 举报
你这个还是可能哪里敲错了 ,GUI这点建议不要太当做重点,当初小斑 学GUI的时候,就写过几个小程序,不过好大的一部分时间都安排在排版的上面了,再加之 以后实际开发中还是用高级工具拖拖拽拽完成界面的排版,  所以还是建议 这的知识点不要太当重点去看
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马