在我的应用程序中,用户可以为一些参数选择“分发类型”,然后创建Graph并向他显示。这些分布有3种不同类型,每种分布都有自己的参数(如alpha,beta,概率等)。每个参数都可以具有这些分布中的任何一个。
这是截图,清楚地表明,我想要描述的内容:
screenshot http://i52.tinypic.com/29cs11h.jpg
分发选项包含在CardLayout中,由combobox控制。
当用户按下按钮时,我需要为分发实例化适当的域对象。现在,我只是将ComboBox项目(即enum)和CardLayouted面板传递给选择适当子面板并实例化正确对象的工厂。但是传递gui对象似乎是错误的,也使得工厂在任何其他情况下都无用。
但我想不出更好的实例化正确对象的方法。可能只有一个想法:
所有建议都会受到很多赞赏!
答案 0 :(得分:2)
Swing通常支持MVC并将数据从域对象推送或拉出到输入/显示控件。我要做的是:
使用“空白”域对象作为GUI模型实例化放入CardLayout的面板。 (或者某种可以从另一层检索模型的定位器。)然后在输入组件上挂接更改通知,当输入中的值发生更改时,这些通知将更新域对象。
然后,当涉及到持久化域对象时,只需从表单面板中检索它。
如果需要在两个控件中显示相同的模型值,它们应该共享相同的模型。如果需要对从代码的较低层显示的对象进行更新,则应在模型上执行更新,而不是在域对象之外执行更新。