Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将用户首选项保存/加载到文件_Java_Eclipse_Swing_Objectinputstream - Fatal编程技术网

Java 将用户首选项保存/加载到文件

Java 将用户首选项保存/加载到文件,java,eclipse,swing,objectinputstream,Java,Eclipse,Swing,Objectinputstream,我已经使用Delphi超过10年了,现在对使用Eclipse和Java很感兴趣。 使用Delphi,我开发了代码,在任何应用程序中,无论有多少表单、文本框、复选框和其他设置用户首选项的方法,我都可以保存和加载默认值,其中一行代码要保存,另一行代码要加载到我开发的任何新应用程序中 有了Java gui,我成功地以编程方式收集了所有用户界面gui组件的列表,但没有成功地使用ObjectInputStream加载使用ObjectOutputStream保存的设置。有两个问题(到目前为止!): Obje

我已经使用Delphi超过10年了,现在对使用Eclipse和Java很感兴趣。 使用Delphi,我开发了代码,在任何应用程序中,无论有多少表单、文本框、复选框和其他设置用户首选项的方法,我都可以保存和加载默认值,其中一行代码要保存,另一行代码要加载到我开发的任何新应用程序中

有了Java gui,我成功地以编程方式收集了所有用户界面gui组件的列表,但没有成功地使用ObjectInputStream加载使用ObjectOutputStream保存的设置。有两个问题(到目前为止!):

  • 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。)