需求是这样的本机将 JPanel对象存进mysql数据库里
远程的客户机从数据库里在提取出来google了半天...没找到合适的..希望各位帮帮忙..谢谢..

解决方案 »

  1.   

    强大啊,这个这么大的对象都放进去?
    不过如果你在远程机上没有这个JPanl及其所有子类的话,就会报错的
      

  2.   

    建议楼主使用配置文件,将JPanel上的控件信息以配置文件的形式存放,然后存到数据库中,远程再读取数据库中配置文件信息进行解析,之后构建面板,这样其实相当于将本地JPANEL在远程读取了。配置文件格式可以采用XML嘛。这样解析就方便很多的。
      

  3.   

    JPanel啊。。你里面的那些对象比如下面的Button,Item之类的同样需要序列化吧。
    相对会比较麻烦一点,您能不能先从简单的开始。一个简单对象的序列化开始想起
      

  4.   

    你们好..没法用配置文件...
    最后的效果是  用户在客户端可以自己改swing界面 界面上会有一个简单的代码编辑器..他会写个JPanle
    然后提交时 会调用一个方法把这个对象传进数据库...这样他在更新一下。。从数据库重新读取一此  界面就会自动改变..自动改变不需要朋友们做。。需要的就是存和取好像确实挺不好搞的。。
    只要他传个extends JPanel的 对象过来..当然..JPanle里的所有对象全部需要..一个不能少..
      

  5.   

    给楼主 推荐一个 方法 可以写到一个二进制文件流 文件 或byte数组到数据库。在客户端生成java文件 动态执行。
      

  6.   

    一般不会用数据库保存JPanel对象的,
    一般会保存JPanel对象的属性信息,然后通过用户端程序进行组装显示。如果采用保存JPanel对象的方式,对于用户界面内容的规划、管理、信息统计,将会变得困难重重。
    当然,保存JPanel对象的属性信息,会使得用户端程序的组装显示部分的代码更加复杂、保存的内容也会随着功能更加繁多。但,我还是推荐前者,因为,如果老板一高兴,让你统计一下有多少用户在JPanel对象里面使用了3个以上的JButton对象,若用保存JPanel对象的方式,是会让人崩溃滴。最后还是要尊重楼主的设计思路。
    我们知道JPanel类已经实现了Serializable接口,那么,我们就可以使用ObjectOutStream和ObjectInputStream对象进行JPanel对象的传输了。
    当然,数据库中,应该是个Blob类型的字段吧。具体怎么使用,要看楼主用的是什么操作数据库了。
    如果想要JPanel对象的字节流(在内存够用的情况下)可以先用ByteArrayInputStream和ByteArrayOutputStream创建一个缓冲区,将JPanel对象序列化的缓冲区中,最后在写入到数据库中。
      

  7.   

      11L 说的有点道理
        像LZ 这样的可以以流的形式保存或者读取。
      

  8.   

    11楼 您好谢谢你的建议
    用的是MYSQL关于你的这句 "如果想要JPanel对象的字节流(在内存够用的情况下)"
    我很想知道这个 内存够用的情况下是什么程度.至于统计JButton各数应该不会需要...因为最主要是每个用户都写自己的Swing
    我们不需要管他...谁的界面 谁自己做..谁技术高.谁做的漂亮..我.只负责存取和读取接口.如果按照您说的内存情况下 那么可不可以说  N年前的486电脑就没法浏览这个网页了.(Swing以applet嵌入web)
      

  9.   

    把object存入db,觉得以后会有麻烦。
    东西大,维护困难。
      

  10.   

    在内存够用的情况下
    这个要看用户程序的具体情况而定,和用户电脑的CPU系列型号什么的没有太大的关系。
    我说内存够用的情况下,主要是想提醒楼主,JPanel其实是个容器,里面可以放置非常多的控件。
    而每个控件也是占有内存资源的,我们序列化的时候,实际上是占用两倍左右的内存空间。
    一个是没有序列化的内存对象,另一个是序列化以后的数据缓冲区。
    两者都会同时占用内存资源。当然,内存不足这种情况,一般是不会发生。
    只是想提醒一下楼主,会有这样的潜在因素发生。呵呵,不足为虑。
      

  11.   

    一般不会用数据库保存JPanel对象的, 
    一般会保存JPanel对象的属性信息,然后通过用户端程序进行组装显示。 
     如果采用保存JPanel对象的方式,对于用户界面内容的规划、管理、信息统计,将会变得困难重重。 当然,保存JPanel对象的属性信息,会使得用户端程序的组装显示部分的代码更加复杂、保存的内容也会随着功能更加繁多。 
    但,我还是推荐前者,因为,如果老板一高兴,让你统计一下有多少用户在JPanel对象里面使用了3个以上的JButton对象,若用保存JPanel对象的方式,是会让人崩溃滴。 最后还是要尊重楼主的设计思路。我们知道JPanel类已经实现了Serializable接口,那么,我们就可以使用ObjectOutStream和ObjectInputStream对象进行JPanel对象的传输了。 
    当然,数据库中,应该是个Blob类型的字段吧。具体怎么使用,要看楼主用的是什么操作数据库了。 如果想要JPanel对象的字节流(在内存够用的情况下)可以先用ByteArrayInputStream和ByteArrayOutputStream创建一个缓冲区,将JPanel对象序列化的缓冲区中,最后在写入到数据库中。 
      

  12.   

    import java.io.*; 
      public class Box implements Serializable 
      { 
      private int width; 
      private int height; 
      public void setWidth(int width){ 
      this.width = width; 
      } 
      public void setHeight(int height){ 
      this.height = height; 
      } 
      public static void main(String[] args){ 
      Box myBox = new Box(); 
      myBox.setWidth(50); 
      myBox.setHeight(30); 
      try{ 
      FileOutputStream fs = new FileOutputStream("foo.ser"); 
      ObjectOutputStream os = new ObjectOutputStream(fs); 
      os.writeObject(myBox); 
      os.close(); 
      }catch(Exception ex){ 
      ex.printStackTrace(); 
      } 
      } 
      }
    把box类换成你已经实现序列化的类就行了