java – 如何记住Swing GUI表单中的最后一个值?
发布时间:2020-05-28 13:02:48 所属栏目:Java 来源:互联网
导读:我有一个用Swing制作的简单 Java GUI表单.它有一些文本输入和复选框,我希望它记住输入到这些输入的最后一个值.当然可以手动将它们保存到某个文件然后读取文件并填充输入,但我想知道是否有办法自动或多或少地执行此操作.谢谢 根据应用程序的大小和数据量,可以
|
我有一个用Swing制作的简单 Java GUI表单.它有一些文本输入和复选框,我希望它记住输入到这些输入的最后一个值.当然可以手动将它们保存到某个文件然后读取文件并填充输入,但我想知道是否有办法自动或多或少地执行此操作.谢谢 解决方法根据应用程序的大小和数据量,可以选择序列化整个UI.但是,当信息基本上被检索并存储在数据库中时,这可能是一个坏主意.在这种情况下,应该使用值对象和绑定,但对于一些简单的应用程序,其中UI独立于另一种持久化方式,您可以使用它. 当然,您无法直接修改序列化值,只需将其视为额外选项: alt text http://img684.imageshack.us/img684/4581/capturadepantalla201001p.png import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class SwingTest {
public static void main( String [] args ) {
final JFrame frame = getFrame();
frame.pack();
frame.setVisible( true );
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
writeToFile( frame,"swingtest.ser");
}
});
}
/**
* Reads it serialized or create a new one if it doens't exists
*/
private static JFrame getFrame(){
File file = new File("swingtest.ser");
if( !file.exists() ) {
System.out.println("creating a new one");
JFrame frame = new JFrame();
JPanel panel = new JPanel();
panel.add( new JLabel("Some test here:"));
panel.add( new JTextField(10));
frame.add( panel );
return frame;
} else {
return ( JFrame ) readObjectFrom( file );
}
}
这里是读/写草图,这里有很大的改进空间. /**
* 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 ){}
}
}
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
