《软件工程,实验二》

题目:        GUI与事件处理程序设计实践                               

源码的github链接:   https://github.com/hushaohui0928/test

一、


 

二、测试分析

      异常处理:try {

       //创建一个文本写入字符输出流,FIleWriter用来写入字符文件的便捷类

        BufferedWriter out = new BufferedWriter(new FileWriter(fname2 + file));

        //写入

        out.write(s);

        //关闭流

        out.close();

 

      }

      catch (Exception ioe) {

        ioe.printStackTrace();

      }

 

    try {

   //创建一个文件输入字节流

        FileInputStream fi = new FileInputStream(fname);

   /*fi.available()返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取(或跳 

    过)的估计剩余字节数*/

        byte ba[] = new byte[fi.available()];

   //从此输入流中将最多ba.length个字节的数据读入到一个byte数组中

        fi.read(ba);

   //将值赋到文本区中(new String(ba)将字符转换成字符串).

        txa.setText(new String(ba));

   //关闭输入流

        fi.close();

      }

      catch (IOException ioe) {}

      ;

    }

六、完整代码

import java.awt.*;

import java.awt.event.*;

import java.io.*;

 

public class tt extends Frame implements ActionListener {

  static tt frm = new tt();//创建一个菜单栏

  static MenuBar menubar = new MenuBar();//创建一个下拉式菜单组件——"文件"

  static Menu menu1 = new Menu("文件");//创建一个下拉式菜单组件——"关于"

  static Menu menu2 = new Menu("关于");//创建一个菜单的所有项——"打开"

  static MenuItem item1 = new MenuItem("打开");//创建一个菜单的所有项——"保存"

  static MenuItem item2 = new MenuItem("保存");//创建一个菜单的所有项——"关于我们"

  static MenuItem item3 = new MenuItem("关于我们");

 

  //FileDialog 类显示一个对话框窗口,用户可以从中选择文件。

  static FileDialog dia1 = new FileDialog(frm, "打开"); 

  //FileDialog.SAVE此常量值指示文件对话框窗口的作用是查找要写入的文件。

  static FileDialog dia2 = new FileDialog(frm, "保存", FileDialog.SAVE);

//创建一个文本区

  static TextArea txa = new TextArea();

//创建一个窗口事件对象

  static WinLis wlis = new WinLis();

 

  public static void main(String agrs[]) {

//创建一个边框布局

    BorderLayout br = new BorderLayout();

//设置Frametitle

    frm.setTitle("小记事本");

 

/*将下拉式菜单menu1menu2添加到菜单栏中*/

    menubar.add(menu1);

    menubar.add(menu2);

 

/*将菜单item1item2添加到下拉式菜单menu1中,将菜单item3添加到下拉式菜单menu2*/

    menu1.add(item1);

    menu1.add(item2);

    menu2.add(item3);

 

/*item1item2item3添加指定的动作侦听器,以从此菜单项接收动作事件*/

    item1.addActionListener(frm);

    item2.addActionListener(frm);

    item3.addActionListener(frm);

 

//将文本去txa添加到Frame

    frm.add(txa);//将此窗体的菜单栏设置为指定的menubar菜单栏。

    frm.setMenuBar(menubar);//调整Frame组件的大小宽800650

    frm.setSize(800, 650);//显示组件

    frm.setVisible(true);

/*为组件添加窗口事件*/

    frm.addWindowListener(wlis);

    frm.addWindowListener(wlis);

  }

/*窗口事件的实现,在关闭窗口的同时关闭运行程序*/

  static class WinLis

      extends WindowAdapter {

    public void windowClosing(WindowEvent e) {

      frm.dispose();

}

}

    public void actionPerformed(ActionEvent e) {

//获取当前点击的菜单对象,getSource()返回最初发生 Event 的对象。

    MenuItem item = (MenuItem) e.getSource();

    if (item == item1) {

      dia1.setVisible(true);

/*getDirectory()获取dia1对话框的目录,getFile()获取dia1对话框的选定文件*/

      String fname = dia1.getDirectory() + dia1.getFile();

      try {//创建一个文件输入字节流

       FileInputStream fi = new FileInputStream(fname);

/*fi.available()返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取(或跳过)的估计剩余字节数*/

        byte ba[] = new byte[fi.available()];

//从此输入流中将最多ba.length个字节的数据读入到一个byte数组中

        fi.read(ba);

//将值赋到文本区中(new String(ba)将字符转换成字符串).

        txa.setText(new String(ba));//关闭输入流

        fi.close();

      }

      catch (IOException ioe) {}

      ;

    }

    if (item == item2) {

      dia2.setVisible(true);

//getDirectory()获取dia2对话框的目录

      String fname2 = dia2.getDirectory();

//dia2.getFile()获得dia2对话框中的选定文件,并为其拼接上后缀.txt

      File file = new File(dia2.getFile() + ".txt");

//获得文本区中的内容

      String s = txa.getText();

      try {

//创建一个文本写入字符输出流,FIleWriter用来写入字符文件的便捷类

        BufferedWriter out = new BufferedWriter(new FileWriter(fname2 + file));

//写入

        out.write(s);//关闭流

        out.close();

     }

      catch (Exception ioe) {

        ioe.printStackTrace();

      }

  }

 }

}

 

七、使用说明与运行结果截图

 

 

八、实践总结

这次实验的目的是考察我对Java程序设计知识的掌握熟练程度和实际运用能力。其中设计的知识点有Java图形用户界面设计、Java的异常处理机制、Java中的多线程程序设计、Java输入输出流等。设计程序的时候一定要仔细认真,才能确保粗心类的错误。设计程序时不能没有耐心,遇到错误应该想办法分析问题,不能中途放弃!  

posted @ 2015-05-03 19:30  胡少慧  阅读(205)  评论(3编辑  收藏  举报