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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 DD_vincent 于 2015-8-27 19:24 编辑

下午在看老毕的GUI,试着做了一个记事本,给打开菜单添加ActionListener时,设置了每次打开新文件会将文本框中内容先清空。
但是实际使用时,如果是打开.java文件,那么会自动清空。
但是当打开的是.txt文件时,每两次才会将内容清空。也就是说,第二次打开.txt文件,内容会在加载第一个文件的内容后面,第三次才会将之前的内容都清空。
再次测试的时候发现好像是跟文本内容有关。即使是.txt文件,如果文本内容中没有回车,只有一行数据,那么就无法清空。如果文本内容有多行的话,就可以清空。这时为什么?

代码已经对着老毕的视频看了好几遍了,没有发现什么错误。
代码如下,嫌多的可以只看注释“load菜单的监听器”内容的代码:
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import java.io.*;

  4. class MenuDemo
  5. {
  6.         private Frame f;
  7.         private MenuBar mb;
  8.         private Menu file;
  9.         private MenuItem loadFile;
  10.         private MenuItem saveFile;
  11.         private MenuItem closeItem;
  12.         private TextArea ta;
  13.         
  14.         MenuDemo()
  15.         {
  16.                 ini();
  17.         }
  18.         
  19.         
  20.         private void ini()
  21.         {
  22.                 //初始化窗体
  23.                 f = new Frame("MenuDemo");
  24.                 f.setBounds(500,200,500,800);
  25.                 //初始化菜单栏
  26.                 mb = new MenuBar();
  27.                 file = new Menu("File");
  28.                 loadFile = new MenuItem("Load File");
  29.                 saveFile = new MenuItem("Svae File");
  30.                 closeItem = new MenuItem("close program");
  31.                 //初始化文本框
  32.                 ta = new TextArea();
  33.                
  34.                 f.setMenuBar(mb);
  35.                 mb.add(file);
  36.                 file.add(loadFile);
  37.                 file.add(saveFile);
  38.                 file.add(closeItem);
  39.                 f.add(ta);
  40.                 Action();
  41.                 f.setVisible(true);
  42.         }
  43.         
  44.         private void Action()
  45.         {
  46.                 //添加窗体的关闭监听器
  47.                 f.addWindowListener(new WindowAdapter()
  48.                 {
  49.                         public void windowClosing(WindowEvent e)
  50.                         {
  51.                                 System.exit(0);
  52.                         }
  53.                 });
  54.                
  55.                 //添加退出按钮的监听器
  56.                 closeItem.addActionListener(new ActionListener()
  57.                 {
  58.                         public void actionPerformed(ActionEvent e)
  59.                         {
  60.                                 System.exit(0);
  61.                         }
  62.                 });
  63.                
  64.                 //定义点击load菜单的监听器
  65.                 loadFile.addActionListener(new ActionListener()
  66.                 {
  67.                         public void actionPerformed(ActionEvent e)
  68.                         {
  69.                                 FileDialog fd = new FileDialog(f,"open",FileDialog.LOAD);
  70.                                 fd.setVisible(true);
  71.                                 String fileName = fd.getFile();
  72.                                 String dirPath = fd.getDirectory();
  73.                                 if(dirPath == null || fileName == null)
  74.                                         return;
  75.                                 ta.setText("");
  76.                                 File f = new File(dirPath, fileName);
  77.                                 BufferedReader br = null;
  78.                                 
  79.                                 // 点击load菜单后,将指定文件在文本框中显示
  80.                                 try
  81.                                 {
  82.                                         br = new BufferedReader(new FileReader(f));
  83.                                         String line = null;
  84.                                         while((line=br.readLine())!=null)
  85.                                         {
  86.                                                 ta.append(line+"\r\n");
  87.                                         }
  88.                                         br.close();
  89.                                 }
  90.                                 catch(IOException io)
  91.                                 {
  92.                                         io.printStackTrace();
  93.                                 }
  94.                         }
  95.                 });
  96.                
  97.                 //定义点击save菜单的监听器
  98.                 saveFile.addActionListener(new ActionListener()
  99.                 {
  100.                         public void actionPerformed(ActionEvent e)
  101.                         {
  102.                                 FileDialog fd = new FileDialog(f,"save",FileDialog.SAVE);
  103.                                 fd.setVisible(true);
  104.                         }
  105.                 });
  106.         }
  107.         
  108.         public static void main(String[] args)
  109.         {
  110.                 new MenuDemo();
  111.         }
  112. }
复制代码



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马