netbeans序列化问题

现在我们项目中遇到如下的问题:希望有人知道的帮忙解决下.

在被定义了transient以后是不能被序列化的,只能通过重载WriteObject,ReadObject来序列化被定义的参数.

我们是监听netbeans平台上的鼠标跟键盘事件,通过Toolkit,然后在eventDispatched处理,相信很多人都用过.

得到的AWTEvent应该是 ACTION(操作) ON SOURCE(应该是一个组建,假设是鼠标事件,那就是被点击的那个组建)形式的.我们通过序列化可以反序列化得到ACTION ON NULL.因为SOURCE是一个OBJECT,被定义了transient.

然后我们重载了WriteObject,ReadObject. 想把SOURCE也保存进去. 但是就是出错.java.io.NotSerializableException.

在SOURCE这个OBJECT里所指的东西(我认为是组建,但是组建已经被定义了Serializable).所以应该不会出现这个错误才对的.

这个应该指的我们要序列化的类或者其他不可序列化(不知道我的理解是否正确).

然后我就做了一下的一个JFrame来验证, 里面含有JButton,TextField,JToolBar.然后同样我用Toolkit来监听,重载WriteObject,ReadObject. 然后保存到文件中,从文件出然后重构AWTEvent,完全没有错误.我们用系统队列PostEvent也能执行这个动作,就是说ACITON ON SOURCE已经完全被序列化保存,然后读取重构出来.但是为什么在netbeans平台上的事件获取以后不能被序列化呢,I'm puzzled.希望了解的高手们能帮忙解决下,或者提供一些建议.

以下是一些我们JFrame的代码:

 /*建立我们所需要的JFrame,并且监听Mouse事件*/

  private void jbInit() throws Exception
  {
    jButton1.setText("button1");
    textField1.setText("textField1");
    menu.setLabel("file");
    menuitem.setLabel("file-one");
    menubar.add(menu);
    menu.add(menuitem);
  
    jButton1.addActionListener(new java.awt.event.ActionListener()
    {
      public void actionPerformed(ActionEvent e)
      {
        jButton1_actionPerformed(e);
      }
     
    });
    this.setTitle("Test");
    this.setMenuBar(menubar);
    this.add(jButton1,BorderLayout.SOUTH); //设置JButton
    this.add(textField1, BorderLayout.CENTER);  //设置textField
    this.add(toolbar,BorderLayout.NORTH);//设置toolbar
    Toolkit.getDefaultToolkit().addAWTEventListener(a,AWTEvent.MOUSE_EVENT_MASK);//监听鼠标事件
    
    addWindowListener(new WinListener());
  }

/*eventDispatched处理函数,  myevent是我定义的一个类,应该叫myobject的因为只是存储AWTEvent的SOURCE*/

public void eventDispatched(AWTEvent event)
    {
        switch(event.getID())
        {
            case KeyEvent.KEY_PRESSED:
            case KeyEvent.KEY_RELEASED:
                return;
            case MouseEvent.MOUSE_PRESSED:
            case MouseEvent.MOUSE_RELEASED:
                break;
            case MouseEvent.MOUSE_MOVED:
            case MouseEvent.MOUSE_DRAGGED:
            case MouseEvent.MOUSE_ENTERED:
            case MouseEvent.MOUSE_EXITED:
                return;
            default:
                return;           
        }
        myevent = new Myevent(event.getSource());//获取SOURCE
        EventQueue eq= Toolkit.getDefaultToolkit().getSystemEventQueue();//获得系统事件队列
        try
        {
     //       System.out.println(myevent.getobject());
            ObjectOutputStream out = new ObjectOutputStream(new
            FileOutputStream("Label.txt"));//保存AWTEvent,不含SOURCE,上面提过
            ObjectOutputStream out1 = new ObjectOutputStream(new
            FileOutputStream("Label1.txt"));//保存SOURCE
            out.writeObject(myevent);
            out1.writeObject(event);
            out.close();
            out1.close();
            ObjectInputStream in = new ObjectInputStream(new
            FileInputStream("Label.txt"));//读取AWTEvent
            ObjectInputStream in1 = new ObjectInputStream(new
            FileInputStream("Label1.txt"));//读取SOURCE
            Myevent readobject = (Myevent)in.readObject();
            AWTEvent readevent = (AWTEvent) in1.readObject();
            in.close();
            in1.close();
            System.out.println(readobject.getobject());
            readevent.setSource(readobject.getobject());//设置读取到的AWTEvent的source
            eq.postEvent(readevent);//执行读到的AWTEvent
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REaDME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 、资源1项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值