由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Java版 - 请教GUI程序的save/load功能的实现
相关主题
Re: 如何在两个窗口之间通信?看了zhaoce073大水忍不住说2句
GUI libraries for JDeveloper?How to: Abort DOM/XML loading when memory is low
一个GUI问题。JSSC的serial port
请教关于使用map和fieldsSun 的applet warning for each new window害死我了
local变量被赋值了几次?an easy question
eclipse 怪问题如何显示密码窗口,然后等待正确输入后继续
Re: question我怎么知道是什么在响应ESCAPE键
JAVA 面世题.Java如何实现自动消失的消息框?
相关话题的讨论汇总
话题: gui话题: load话题: jdialog话题: save话题: 信息
进入Java版参与讨论
1 (共1页)
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
2
这跟MVC没关系
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

1 (共1页)
进入Java版参与讨论
相关主题
Java如何实现自动消失的消息框?local变量被赋值了几次?
Re: [转载] create gif/png image in C or jaeclipse 怪问题
Java menu accelerator not workingRe: question
JFrame怎么设定窗口为隐藏?JAVA 面世题.
Re: 如何在两个窗口之间通信?看了zhaoce073大水忍不住说2句
GUI libraries for JDeveloper?How to: Abort DOM/XML loading when memory is low
一个GUI问题。JSSC的serial port
请教关于使用map和fieldsSun 的applet warning for each new window害死我了
相关话题的讨论汇总
话题: gui话题: load话题: jdialog话题: save话题: 信息