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