Java 如何记住Swing GUI表单中的最后一个值?

Java 如何记住Swing GUI表单中的最后一个值?,java,swing,Java,Swing,我用Swing制作了一个简单的JavaGUI表单。它有一些文本输入和复选框,我想让它记住最后输入的值。当然,可以手动将它们保存到某个文件中,然后读取该文件并填充输入,但我想知道是否有一种方法可以或多或少自动完成这一操作。谢谢不太感谢。您必须自己负责将值持久化到文件或数据库。最好使用 它将首选项存储在系统中,但这些详细信息对您来说是隐藏的-您关注首选项的结构和值,而不是实现详细信息(特定于平台) 此API还允许为同一台计算机上的不同用户进行不同的设置。根据应用程序的大小和数据量,可以选择序列化整个

我用Swing制作了一个简单的JavaGUI表单。它有一些文本输入和复选框,我想让它记住最后输入的值。当然,可以手动将它们保存到某个文件中,然后读取该文件并填充输入,但我想知道是否有一种方法可以或多或少自动完成这一操作。谢谢

不太感谢。您必须自己负责将值持久化到文件或数据库。

最好使用

它将首选项存储在系统中,但这些详细信息对您来说是隐藏的-您关注首选项的结构和值,而不是实现详细信息(特定于平台)


此API还允许为同一台计算机上的不同用户进行不同的设置。

根据应用程序的大小和数据量,可以选择序列化整个UI

但是,当信息基本上已经被检索并存储在数据库中时,这可能是个坏主意。在这种情况下,应该使用值对象和绑定,但对于一些简单的应用程序,如果UI独立于另一种持久化方式,则可以使用这种方法

当然,不能直接修改序列化值,只需将其视为额外选项:

这是读/写方式示意图,这里有很大的改进空间

    /**
     * write the object to a file 
     */
    private static void writeToFile( Serializable s , String fileName ) {
        ObjectOutputStream oos = null;

        try {
            oos = new ObjectOutputStream( new FileOutputStream( new File( fileName )));
            oos.writeObject( s );    
        } catch( IOException ioe ){

        } finally {
            if( oos != null ) try {
                oos.close();
            } catch( IOException ioe ){}
        }

    }
    /**
     * Read an object from the file 
     */
    private static Object readObjectFrom( File f ) {
        ObjectInputStream ois = null;
        try {
            ois = new ObjectInputStream( new FileInputStream( f )) ;
            return ois.readObject();
        } catch( ClassNotFoundException cnfe ){
            return null;
        } catch( IOException ioe ) {
            return null;
        } finally {
            if( ois != null ) try {
                ois.close();
            } catch( IOException ioe ){}
        }
    }
} 

只是不要使用Java序列化!
    /**
     * write the object to a file 
     */
    private static void writeToFile( Serializable s , String fileName ) {
        ObjectOutputStream oos = null;

        try {
            oos = new ObjectOutputStream( new FileOutputStream( new File( fileName )));
            oos.writeObject( s );    
        } catch( IOException ioe ){

        } finally {
            if( oos != null ) try {
                oos.close();
            } catch( IOException ioe ){}
        }

    }
    /**
     * Read an object from the file 
     */
    private static Object readObjectFrom( File f ) {
        ObjectInputStream ois = null;
        try {
            ois = new ObjectInputStream( new FileInputStream( f )) ;
            return ois.readObject();
        } catch( ClassNotFoundException cnfe ){
            return null;
        } catch( IOException ioe ) {
            return null;
        } finally {
            if( ois != null ) try {
                ois.close();
            } catch( IOException ioe ){}
        }
    }
}