f*****0 发帖数: 166 | 1 新手在学习编程中。。。
现在在学习开发一个实用程序,用得是netbeans ide。
一开始直接使用了subclass of JFrame作为主界面, 以subclass (of JDialog) 作为
次界面来获得用户使用时的输入的状态信息。程序运行时,make a new instance of
the "subclass(of JDialog)", 获得用户输入的状态信息,然后用objectOutputStream
来save保存了这个instance。 再load这个object。
实践中,在load时获得了如下Exception: java.io.WriteAbortedException: writing
aborted; java.io.NotSerializableException: javax.swing.GroupLayout
请教了Google大师,得到的结论是,我不应该储存serialize GUI(包括他们的子类)
,而是应该用Java Preferences 或 Java properties来记录储存状态信息。然后load
使用时,再赋值到GUI 界面中。
我现在的理解是这样的,这些GUI程序提供的纯粹的是一个UI,实际的数据处理逻辑是
分开的(不是像我自己一开始想的那样直接用这些GUI的子类来实现数据处理逻辑)。
不知道这个想法对不对?
这个是不是就是Model View Controller 的最基本的应用啊?
另外,这种save/load功能实现是不是应该通用如下
save: 1)把GUI的状态信息储存 2)把用户信息储存
load: 1)make a new instance of GUI, 打开储存的GUI状态信息,赋值; 2) load
用户信息
敬请方家指教。谢谢。 | J*******n 发帖数: 2901 | | s*****e 发帖数: 16824 | 3 这个问题是因为你企图save JDialog, JDialog本身serializable,但是你在JDialog
里面用了GroupLayout, 这个东西不能serialize。所以凡是GUI的东西最好不要直接
save,里面结构太复杂,说不定什么东西就不work.save数据,然后GUI启动以后load数
据再填进GUI里面。
objectOutputStream
writing
load
【在 f*****0 的大作中提到】 : 新手在学习编程中。。。 : 现在在学习开发一个实用程序,用得是netbeans ide。 : 一开始直接使用了subclass of JFrame作为主界面, 以subclass (of JDialog) 作为 : 次界面来获得用户使用时的输入的状态信息。程序运行时,make a new instance of : the "subclass(of JDialog)", 获得用户输入的状态信息,然后用objectOutputStream : 来save保存了这个instance。 再load这个object。 : 实践中,在load时获得了如下Exception: java.io.WriteAbortedException: writing : aborted; java.io.NotSerializableException: javax.swing.GroupLayout : 请教了Google大师,得到的结论是,我不应该储存serialize GUI(包括他们的子类) : ,而是应该用Java Preferences 或 Java properties来记录储存状态信息。然后load
| f*****0 发帖数: 166 | 4 如果很充分的使用SRP,GUI部分是不是可以算作View,数据收集的部分算是controller
,而核心的数据处理算是model?
【在 J*******n 的大作中提到】 : 这跟MVC没关系
| f*****0 发帖数: 166 | 5 感谢指点。 这个确实是我Google到的最初的解释。
我现想确认的是如你所说的是不是一个比较普适的模式:
两个模块物:
(Object 1) gui(包含可serializable 的layout)。
(Object 2) 数据。
save时保存两个objects,load时再load两个objects. (相对于我一开始的直接把数据逻
辑放到JDialog的做法)
还有一个问题,关于layout,如果要能够serialize,又比较好用,类似于客户信息表
栏比较多,相对分散,什么layout比较好?我看到了GridBagLayout.不知道对否?
JDialog
【在 s*****e 的大作中提到】 : 这个问题是因为你企图save JDialog, JDialog本身serializable,但是你在JDialog : 里面用了GroupLayout, 这个东西不能serialize。所以凡是GUI的东西最好不要直接 : save,里面结构太复杂,说不定什么东西就不work.save数据,然后GUI启动以后load数 : 据再填进GUI里面。 : : objectOutputStream : writing : load
|
|