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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

import java.awt.*;
import java.awt.event.*;
import java.io.*;

class myMenuDemo
{

        private Frame f;
        private TextArea ta;
        private MenuBar mb;
        private Menu m,subMenu;
        private MenuItem subItem,openItem,saveItem,closeItem;
    private FileDialog openDia,saveDia;



        myMenuDemo()
        {
                init();
        }



        public void init()
        {
                f=new Frame("my frame");
                f.setBounds(300,100,500,400);
                //f.setLayout(new FlowLayout());
        //不设置布局则为边界布局,TextArea则和窗体一样大小了。

                mb=new MenuBar();

                m=new Menu("文件");
        subMenu=new Menu("子菜单");

        subItem=new MenuItem("子项");
                openItem=new MenuItem("打开");
                saveItem=new MenuItem("保存");
                closeItem=new MenuItem("关闭");

                subMenu.add(subItem);
                m.add(subMenu);
                m.add(openItem);
                m.add(closeItem);
                mb.add(m);
                f.setMenuBar(mb);
        f.add(ta);

        openDia=new FileDialog(f,"my open",FileDialog.LOAD);
        saveDia=new FileDialog(f,"my save",FileDialog.SAVE);

                myEvent();

                f.setVisible(true);
        }


        public void myEvent()
        {
                f.addWindowListener(new WindowAdapter()
                {
                        public void windowCloing(WindowEvent e)
                        {
                                System.exit(0);
                        }
                });

        openItem.addActionListener(new ActionListener()//打开文件事件处理
                {
                        public void actionPerformed(ActionEvent e)
                        {
                                openDia.setVisible(true);//打开对话框显示出来
                                String dirPath=openDia.getDirectory();//Dialog中的方法getDirectory获取文件路径
                                String fileName=openDia.getFile();//Dialog中的方法getFile获取文件名
                                if(dirPath==null || fileName==null)
                                        return;    //为null时返回
                                ta.setText("");//清空文本区
                                File file=new File(dirPath,fileName);//路径和文件名封装
                                try
                                {
                                        BufferedReader bufr=new BufferedReader(new FileReader(file));//读入file
                                        String line=null;
                                        while( (line=bufr.readLine())!=null )//读取一行不为null,则
                                        {
                                                ta.append(line+"\r\n");  //该行就写入文本区,并回车
                                        }
                                }
                                catch (IOException ioe)//异常处理:抛出
                                {
                                        throw new RuntimeException("读取文件失败");
                                }
                        }
                });

        saveItem.addActionListener(new ActionListener()
                {
                        public void actionPerformed(ActionEvent e)
                        {
                                System.exit(0);
                        }
                });

                closeItem.addActionListener(new ActionListener()
                {
                        public void actionPerformed(ActionEvent e)
                        {
                                System.exit(0);
                        }
                });

        }

        public static void main(String[] args)
        {
                new myMenuDemo();
        }

}



Exception in thread "main" java.lang.NullPointerException
        at java.awt.Container.addImpl(Container.java:1041)
        at java.awt.Container.add(Container.java:365)
        at myMenuDemo.init(myMenuDemo.java:47)
        at myMenuDemo.<init>(myMenuDemo.java:19)
        at myMenuDemo.main(myMenuDemo.java:115)

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

4 个回复

倒序浏览
哥们,你忘创建这个对象了 ta = new TextArea();

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
/**
                 * 添加TextArea
                 */
                ta = new TextArea();
                f.add(ta);
需要实例化
  1. package test;

  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import java.io.*;

  5. class myMenuDemo {

  6.         private Frame f;
  7.         private TextArea ta;
  8.         private MenuBar mb;
  9.         private Menu m, subMenu;
  10.         private MenuItem subItem, openItem, saveItem, closeItem;
  11.         private FileDialog openDia, saveDia;

  12.         myMenuDemo() {
  13.                 init();
  14.         }

  15.         public void init() {
  16.                 f = new Frame("my frame");
  17.                 f.setBounds(300, 100, 500, 400);
  18.                 // f.setLayout(new FlowLayout());
  19.                 // 不设置布局则为边界布局,TextArea则和窗体一样大小了。

  20.                 mb = new MenuBar();
  21.                 f.setMenuBar(mb);

  22.                 m = new Menu("文件");
  23.                 subMenu = new Menu("子菜单");

  24.                 subItem = new MenuItem("子项");
  25.                 openItem = new MenuItem("打开");
  26.                 saveItem = new MenuItem("保存");
  27.                 closeItem = new MenuItem("关闭");

  28.                 subMenu.add(subItem);
  29.                 m.add(subMenu);
  30.                 m.add(openItem);
  31.                 m.add(closeItem);
  32.                 mb.add(m);

  33.                 /**
  34.                  * 添加TextArea
  35.                  */
  36.                 ta = new TextArea();
  37.                 f.add(ta);

  38.                 openDia = new FileDialog(f, "my open", FileDialog.LOAD);
  39.                 saveDia = new FileDialog(f, "my save", FileDialog.SAVE);

  40.                 myEvent();

  41.                 f.setVisible(true);
  42.         }

  43.         public void myEvent() {
  44.                 f.addWindowListener(new WindowAdapter() {
  45.                         public void windowCloing(WindowEvent e) {
  46.                                 System.exit(0);
  47.                         }
  48.                 });

  49.                 openItem.addActionListener(new ActionListener()// 打开文件事件处理
  50.                                 {
  51.                                         public void actionPerformed(ActionEvent e) {
  52.                                                 openDia.setVisible(true);// 打开对话框显示出来
  53.                                                 String dirPath = openDia.getDirectory();// Dialog中的方法getDirectory获取文件路径
  54.                                                 String fileName = openDia.getFile();// Dialog中的方法getFile获取文件名
  55.                                                 if (dirPath == null || fileName == null)
  56.                                                         return; // 为null时返回
  57.                                                 ta.setText("");// 清空文本区
  58.                                                 File file = new File(dirPath, fileName);// 路径和文件名封装
  59.                                                 try {
  60.                                                         BufferedReader bufr = new BufferedReader(
  61.                                                                         new FileReader(file));// 读入file
  62.                                                         String line = null;
  63.                                                         while ((line = bufr.readLine()) != null)// 读取一行不为null,则
  64.                                                         {
  65.                                                                 ta.append(line + "\r\n"); // 该行就写入文本区,并回车
  66.                                                         }
  67.                                                 } catch (IOException ioe)// 异常处理:抛出
  68.                                                 {
  69.                                                         throw new RuntimeException("读取文件失败");
  70.                                                 }
  71.                                         }
  72.                                 });

  73.                 saveItem.addActionListener(new ActionListener() {
  74.                         public void actionPerformed(ActionEvent e) {
  75.                                 System.exit(0);
  76.                         }
  77.                 });

  78.                 closeItem.addActionListener(new ActionListener() {
  79.                         public void actionPerformed(ActionEvent e) {
  80.                                 System.exit(0);
  81.                         }
  82.                 });

  83.         }

  84.         public static void main(String[] args) {
  85.                 myMenuDemo my = new myMenuDemo();
  86.         }

  87. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
李敬卫 来自手机 中级黑马 2012-12-29 10:30:44
板凳
文本域对象没有创建,你吧他给添加到窗体就会空指针异常,解决办法:ta=new TextArea()

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报

谢谢了。。。。。。。。。。。。。。。。。

本帖最后由 缪俊杰 于 2012-12-29 19:04 编辑

谢谢了。。。。。。。。。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马