Java 将用户首选项保存/加载到文件
我已经使用Delphi超过10年了,现在对使用Eclipse和Java很感兴趣。 使用Delphi,我开发了代码,在任何应用程序中,无论有多少表单、文本框、复选框和其他设置用户首选项的方法,我都可以保存和加载默认值,其中一行代码要保存,另一行代码要加载到我开发的任何新应用程序中 有了Java gui,我成功地以编程方式收集了所有用户界面gui组件的列表,但没有成功地使用ObjectInputStream加载使用ObjectOutputStream保存的设置。有两个问题(到目前为止!):Java 将用户首选项保存/加载到文件,java,eclipse,swing,objectinputstream,Java,Eclipse,Swing,Objectinputstream,我已经使用Delphi超过10年了,现在对使用Eclipse和Java很感兴趣。 使用Delphi,我开发了代码,在任何应用程序中,无论有多少表单、文本框、复选框和其他设置用户首选项的方法,我都可以保存和加载默认值,其中一行代码要保存,另一行代码要加载到我开发的任何新应用程序中 有了Java gui,我成功地以编程方式收集了所有用户界面gui组件的列表,但没有成功地使用ObjectInputStream加载使用ObjectOutputStream保存的设置。有两个问题(到目前为止!): Obje
ObjectInputStream.ReadObject()
需要对正在加载的类进行类型转换。当类直到运行时才知道时,有没有办法做到这一点ObjectInputStream.ReadObject()
似乎生成了一个新的项目实例,我不知道如何将数据读入现有组件(JTextField
(s)等)感谢您的帮助。我强烈建议您检查或简化更简单的java类。为什么不
java.util.Preferences
?似乎最好的方法不是序列化文本区域和复选框之类的组件,而是序列化字符串和布尔值之类的值。如果选择可以这样表示,我建议使用Properties
文件,否则建议使用XML(作为许多备选方案之一)。或者,正如@trashgod-首选项所提到的(有很多选择,包括特定于的!),我认为通过序列化,可以避免编写代码来保存每种类型gui组件所需的属性。对象序列化不是为了长期存储,从文档来看,此类的序列化对象将与将来的Swing版本不兼容。当前的序列化支持适用于运行同一版本Swing的应用程序之间的短期存储或RMI。从1.4开始,java.beans包中添加了对所有JavaBeansTM的长期存储的支持。请参阅XMLEncoder.,了解对于大多数感兴趣的GUI相关类来说,直接对象序列化并不成功(或不必要)。(而且Java不是Delphi。)