在使用java和spring创建的桌面应用程序中,GUI表单创建为单例bean,因此每当显示表单时,所有预先输入的值都在那里。有没有比通过java代码清除每个表单字段更好的方式来获得新的表单?提前致谢
答案 0 :(得分:2)
你可以像这样强制一个新的单例实例化
public class MyForm {
// The instance
private static MyForm instance = new MyForm();
// Private constructor prevents instantiation from other classes
private MyForm() { }
// Get the singleton
public static MyForm getInstance() { return instance; }
// Force a new instance to be created
public static void resetInstance() {
instance = new MyForm();
}
}
但这不再是单身行为,也许你应该只使用一个新的实例化类。类似的东西:
myPanel.removeAll();
myPanel.add(new MyForm());
(构造函数当然应该公开)
答案 1 :(得分:1)
我建议一个更简单的替代方案,请使用singleton = false。如果要保留一些初始化片段,请使用init方法或bean post处理器。
答案 2 :(得分:0)
我覆盖了dispose
方法并在init
之后调用super.dispose()
方法,在init
方法中,在开头添加了以下行:getContentPane().removeAll();
。
它适用于我的要求,当我希望数据保留在表单中时,我只是隐藏表单,当我想要一个新表单时,我处理表单并再次显示表单。